Skip to content

Commit

Permalink
guide last part
Browse files Browse the repository at this point in the history
  • Loading branch information
ntarocco committed Feb 13, 2021
1 parent 9b9b67e commit fa6e06b
Show file tree
Hide file tree
Showing 21 changed files with 28,074 additions and 15 deletions.
145 changes: 130 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
# My Dactyl-cc

[Material](#shopping-list-with-explanations) | [Assembling](#assembling) | [Firmware](#firmware) | [Finishing](#finishing)

A fun project to build your own custom keyboard without spending a fortune!

PHOTO
![Keyboard1](./pictures/keyboard1.jpg =600x)

Here you can find a few tips to try to complete the various guides available on the Internet, to fill the gaps of what was not clear to me when building it.
I will not describe the entire process of cabling and assembling because this is very well covered in the link belows.
A few tips to complete the various guides available on the Internet, to fill the gaps of what was not clear to me when assembling my Dactyl-CC.
This guide will not include the entire process of wiring and assembling because this is very well covered in the link belows.

**How long did it take?**

At the beginning, I have spent quite some time to figure out what I needed to buy. Honestly, I went maybe too fast reading the various guides. It is a good idea to have understand first why you need each component :)
So after a few evenings and thanks to [my friend Pedro](https://github.com/pferreir/) who built the same keyboard before me, it took me:
At the beginning, I have spent quite some time to figure out what I needed to buy. Honestly, I went maybe too fast reading the various guides and I made some mistakes (wiring). It is a good idea to first fully understand the need of each component :)
After a few evenings and thanks to the tips of [my friend Pedro](https://github.com/pferreir/) who built the same keyboard before me, it took me:

* about 3/4 weeks to receive all the components
* about 3/4 weeks to order and receive all the components
* about 2 *full* days to assemble it
* another day to fix assembling mistakes :)

Since this was a fun side project, outside my working hours, I was not in a hurry. It has been actually a great hobby during the confinement period that happened in France in 2020 because of the COVID pandemic.

In the end, it took me 2/3 months and I have spent about ~100 EUR in material.
In the end, it took me 2/3 months and I have spent about ~100 EUR, or slightly more, in material.

**Let's start!**

Expand Down Expand Up @@ -48,13 +50,10 @@ The hardest part was to get up to speed with 3D printing and different materials

Basically I went for all the default and cheapest settings and I have to say that I am very happy with the result: the case is very solid, rigid, even the smallest parts, for example the small parts that blocks the key switches. I am also quite satisfied with the finishing, it looks brushed.

![Case 1](./pictures/case_1.jpg)

![Case 2](./pictures/case_2.jpg)

![Case 3](./pictures/case_3.jpg)

![Case 4](./pictures/case_4.jpg)
![Case 1](./pictures/case1.jpg =100x)
![Case 2](./pictures/case2.jpg =100x)
![Case 3](./pictures/case3.jpg =100x)
![Case 4](./pictures/case4.jpg =100x)

### Components

Expand All @@ -70,6 +69,8 @@ Basically I went for all the default and cheapest settings and I have to say tha
* Spool of colored wire: it is suggested in many guides to use wire with 8 colors 30AWG. Honestly it is very thin and it will break many times while wiring but it is the right size when soldering all of them on the Teensy or MCP.
* M2.5 screws and brass nuts: I didn't find a better solution at the moment than fix the brass nuts in the case holes with some glue.

![Brass nuts](./pictures/brass_nut.jpg =100x)

Soldering iron with a small tip, small tongs/nippers and hot glue are also very useful.

### Keys: switches and keycaps
Expand All @@ -78,8 +79,122 @@ Switches is easy: just order 68 switches as you like them. I have ordered the cl

Keycaps is a different story :)

TO BE CONTINUED
I wanted the same keycaps as the Kinesis Advantage. If you are lucky, or leaving in the US and not in Europe like me (at least in 2020), you can order the set from them. Otherwise, you will probably need to order a custom set. I did from [WASD Keyboards](https://www.wasdkeyboards.com/).

Here the steps I followed:

1. Understand what I needed. Since the Kinesis has many different keycaps shapes (e.g. for each row), I needed to match its keycaps to a standard keyboard. [Here](https://deskthority.net/wiki/Kinesis_Contoured#Keycaps) the keycap replacement chart for `WASD Keyboards` keycaps. The 105-Keys classic ISO keyboard has all the necessary shapes: there is only one little difference with the shape of the `ENTER` key, but it is good enough.
2. Choose a style: [here](http://www.keyboard-layout-editor.com/#/gists/a72081cee03be7d6a5a23522880ab5e0) my final layout.
3. Order the set of `105-Key ISO Custom Cherry MX Keycap Set`. [Here](./wasd_keyboard_v2_designer_tool.svg) my SVG layout for the `WASD Keyboard` `V2 Designer tool`. The trick was to pay attention to the shape of the keycaps in the thumbs cluster and order them correctly.

## Assembling

I have followed [this guide](https://github.com/adereth/dactyl-keyboard/tree/master/qmk-guide) and [this guide](https://github.com/mjohns/dactyl-cc/blob/master/guide/README.md).
My mistake here was to blindly follow the rows/columns colors, in particular also wiring the `red` column (only one key): with that wiring, the default available `QMK` firmware configuration was not corresponding to the wiring. As result, these keys were not working. More details below.

I started by installing the keys (without keycaps) in the case. Then all the diodes.

### Diodes

The diodes have a direction, so it is important to **pay attention** when soldering.
I have prepared all 68 diodes twisting the little metal segment to form a little hole, so that it was then easy to anchor the hole to the little pin of each key and solder.

![Diodes1](./pictures/diodes1.jpg =100x)
![Diodes2](./pictures/diodes1.jpg =100x)

## Wiring

Wiring was rather easy: I followed the same color codes in the schema in the guides and patiently wired rows and columns.
I have found easier to prepare the wire before soldering, I had more space than inside the case. I also kept the last segment of the wire that will be soldered to the Teensy/MCP very long, because I was not sure where/how I wanted to install the Teensy/MCP.

![Wires](./pictures/wires.jpg =100x)

Here how it looked at the end, with **the mistake** of the **red** column (which I had to change at the end). Unfortunately I forgot to take pictures with the final wiring.

![Wiring1](./pictures/wiring1.jpg =100x)
![Wiring2](./pictures/wiring2.jpg =100x)

At the end, I have soldered each row and column to the Teensy/MCP and also the audio jack with the resistors.

![Audio jack](./pictures/audio-jack.jpg =100x)

For the Teensy/MCP, I wanted to use the default firmware `handwired/dactyl`, without any manual customization (only via the online editor, more details below).

[Here](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/dactyl/config.h) the configuration for the Teensy/MCP:
```
#define MATRIX_ONBOARD_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_ONBOARD_COL_PINS { 0, 0, 0, 0, 0, 0, B1, B2, B3, D2, D3, C6 }
```

[Here](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/dactyl/dactyl.h) the configuration for rows/columns:
```
/*
* LEFT HAND: LINES 38-45
* RIGHT HAND: LINES 47-54
*/
#define LAYOUT_dactyl( \
\
k00,k01,k02,k03,k04,k05, \
k10,k11,k12,k13,k14,k15, \
k20,k21,k22,k23,k24,k25, \
k30,k31,k32,k33,k34,k35, \
k40,k41,k42,k43,k44, \
k55,k50, \
k54, \
k53,k52,k51, \
\
k06,k07,k08,k09,k0A,k0B, \
k16,k17,k18,k19,k1A,k1B, \
k26,k27,k28,k29,k2A,k2B, \
k36,k37,k38,k39,k3A,k3B, \
k47,k48,k49,k4A,k4B, \
k5B,k56, \
k57, \
k5A,k59,k58 ) \
\
/* matrix positions */ \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
{ k40, k41, k42, k43, k44, KC_NO, KC_NO, k47, k48, k49, k4A, k4B }, \
{ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B }, \
}
```

For the wiring for the thumbs clusters, I followed the configuration of the firmware above without the extra `red` color.

I have also added a plastic separation to avoid any possible short-circuit.

![Internal1](./pictures/internal1.jpg =100x)
![Internal2](./pictures/internal2.jpg =100x)

Note: while soldering and moving components around, many segments got cut or disconnected, I had to fix them multiple times.

### Testing

I used a digital multimeter to make sure that the connections of each row and column were working correctly.

I tested the signal by holding a tip of the multimeter on the first key of the row/col and the other tip on the Teensy/MCP.

I also tested each key and diode using the `diode mode` in the multimeter and by holding the first tip on one pin of each key and the other tip **after** the diode soldered on the other pin. When pressing the key, the meter should emit sound. Switching the meter's tips should not.

## Firmware

I have configured my keys using the [QMK configurator](https://config.qmk.fm), starting from the [handwired/dactyl layout](https://config.qmk.fm/#/handwired/dactyl/LAYOUT_dactyl).

I have simply compiled and downloaded the firmware from the configurator and flashed the Teensy.

[Here](./handwired-dactyl-layout_dactyl.json) my firmware.

## Finishing

I used some [Sugru](https://tesa-sugru.com/) to fill the holes and block the USB/Audio ports to give it a more solid look and to avoid that the little wires get cut when plugging/unplugging the cables.

The result is quite satisfying.

![USB Port](./pictures/usb-port.jpg =100x)
![Audio Port](./pictures/audio-port.jpg =100x)

![Keyboard2](./pictures/keyboard2.jpg =500x)
1 change: 1 addition & 0 deletions handwired-dactyl-layout_dactyl.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"version":1,"notes":"","documentation":"\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n","keyboard":"handwired/dactyl","keymap":"handwired_dactyl_layout_dactyl_mine","layout":"LAYOUT_dactyl","layers":[["KC_EQL","KC_1","KC_2","KC_3","KC_4","KC_5","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","LT(1,KC_ESC)","KC_A","KC_S","KC_D","KC_F","KC_G","KC_LSFT","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_NO","KC_GRV","KC_F13","KC_LEFT","KC_RGHT","KC_LGUI","KC_LALT","KC_HOME","KC_BSPC","KC_DEL","KC_END","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_BSLS","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RSFT","KC_UP","KC_DOWN","KC_LBRC","KC_RBRC","KC_NO","KC_LCTL","KC_RGUI","KC_PGUP","KC_PGDN","KC_ENT","KC_SPC"],["KC_TRNS","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","MO(2)","KC_VOLU","KC_MSTP","KC_MPLY","KC_BRIU","KC_PAUS","KC_TRNS","KC_VOLD","KC_MPRV","KC_MNXT","KC_BRID","KC_SLCK","KC_TRNS","KC_MUTE","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_PAST","KC_P7","KC_P8","KC_P9","KC_PMNS","KC_F12","KC_PSLS","KC_P4","KC_P5","KC_P6","KC_PPLS","KC_NLCK","KC_PEQL","KC_P1","KC_P2","KC_P3","KC_NO","KC_TRNS","KC_PSCR","KC_P0","KC_PDOT","KC_NO","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_NO","KC_NO","KC_NO","RESET","DEBUG","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_BTN1","KC_BTN2","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_MS_U","KC_NO","KC_NO","KC_NO","KC_NO","KC_MS_L","KC_NO","KC_MS_R","KC_NO","KC_NO","KC_NO","KC_NO","KC_MS_D","KC_NO","KC_NO","KC_NO","KC_BTN1","KC_BTN2","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"]],"author":""}
Binary file added pictures/audio-jack.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/audio-port.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/brass_nut.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file added pictures/diodes1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/diodes2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/internal1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/internal2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/keyboard1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/keyboard2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/screw.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/usb-port.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/wires.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/wiring1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pictures/wiring2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit fa6e06b

Please sign in to comment.