2016-09-06 21:23:54 +02:00
|
|
|
* Preparation and Cost
|
2016-09-11 17:20:14 +02:00
|
|
|
Get all the parts / raw material:
|
2016-09-06 22:31:10 +02:00
|
|
|
- For the 3D printing there are two options:
|
|
|
|
1. Filament, which is the basis for 3D printing. Luckily I could print at my work-place
|
|
|
|
which reduced the cost from 210€ to 70€. The kind of filament you need depends on the 3D
|
|
|
|
printer you have available.
|
|
|
|
2. Buy the printout of adareth's model at shapeways for 210€ over here
|
|
|
|
http://www.shapeways.com/designer/adereth/creations
|
|
|
|
- Decide on the switches
|
|
|
|
- If you are going to invest a whole lot of time and money for a custom keyboard instead of
|
|
|
|
buying one for 10€ I'd recommend to use your favorite switch-type. To make a
|
|
|
|
well-informed decision I bought a switch-tester for this from massdrop and decided on
|
|
|
|
Cherry MX Whites. https://www.massdrop.com/buy/varmilo-switch-tester-with-anodized-case
|
|
|
|
- I ordered 70 Cherry MX Whites from here:
|
|
|
|
https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=847
|
|
|
|
- Decide on the key caps
|
2017-06-21 19:18:18 +02:00
|
|
|
- On the glamour shot you can see the 1976 keycap set; it used to be sold over here:
|
2016-09-06 22:31:10 +02:00
|
|
|
http://pimpmykeyboard.com/sa-1976-keycap-set/ but the link is dead right now. You could
|
|
|
|
try this link: https://www.massdrop.com/buy/nineteenseventysix-sa-keycap-set but it is a
|
|
|
|
massdrop which is way different from usual online-stores. If you find a site that sells
|
2017-06-21 19:18:18 +02:00
|
|
|
these, make sure you get the right amount and type of keys according to the layout.
|
2016-09-06 22:31:10 +02:00
|
|
|
- I got the "TKL Base Set + TKL Modifier" from over here:
|
|
|
|
http://pimpmykeyboard.com/dsa-pbt-abs-blank-keycap-sets/ but I'm still two long keys
|
|
|
|
short, I will have to order those specifically and I have a bunch of keys I don't use
|
|
|
|
left-over.
|
|
|
|
- The USB-Cable that connects the keyboard to your computer
|
|
|
|
- It's an USB 2.0 to USB Mini-B cable, make sure you get one that is 2 meters long, it
|
|
|
|
really makes handling the keyboard so much more comfortable
|
|
|
|
- https://www.amazon.de/gp/product/B00NH11N5A/
|
|
|
|
- The main controller (right half)
|
|
|
|
- A Teensy 2.0, I got that one from here: https://www.pjrc.com/store/teensy.html
|
|
|
|
- The chip, connectors and cable to give life to the left half
|
2017-05-19 11:49:51 +02:00
|
|
|
- TRRS cable and jacks
|
|
|
|
- Got my TRRS cable from here: http://www.digikey.de/product-search/de?keywords=839-1257-ND
|
|
|
|
- Got my TRRS jacks from here: http://www.digikey.de/product-search/de?keywords=CP-43514-ND
|
2016-09-06 22:31:10 +02:00
|
|
|
- MCP23018 16 bit IO Expander
|
|
|
|
- Got mine from here: http://www.digikey.de/product-search/de?keywords=MCP23018-E%2FSP-ND
|
2016-09-06 21:23:54 +02:00
|
|
|
|
2016-09-06 22:31:10 +02:00
|
|
|
What I spend on my keyboard (should give you a rough estimate for your build):
|
|
|
|
| item | cost |
|
|
|
|
|-----------------------------------+------|
|
|
|
|
| filament | 70 |
|
|
|
|
| switch-tester | 30 |
|
|
|
|
| key-caps | 70 |
|
|
|
|
| teensy 2.0 | 30 |
|
|
|
|
| switches | 60 |
|
|
|
|
| usb cable | 10 |
|
2017-05-19 11:49:51 +02:00
|
|
|
| IO Expander, TRRS jacks and cable | 30 |
|
2016-09-06 22:31:10 +02:00
|
|
|
|-----------------------------------+------|
|
|
|
|
| overall cost | 300 |
|
|
|
|
#+TBLFM: @9$2=vsum(@2$2..@8$2)
|
2016-09-06 21:23:54 +02:00
|
|
|
|
2016-09-06 22:31:10 +02:00
|
|
|
My choices / advantages:
|
|
|
|
- Using the soldering iron at the uni-workshop for free
|
|
|
|
- 76 Diodes for free
|
|
|
|
- Soldering wire and copper for free
|
|
|
|
- All the resistors used for free (5 resistors are used)
|
|
|
|
- Several files for working out the rough edges of the 3D-printout
|
2016-09-06 21:23:54 +02:00
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
Depending on what you have available you might spend more or less money than me; however, 300€
|
2016-09-06 22:31:10 +02:00
|
|
|
is a good rough estimate.
|
2016-09-06 21:23:54 +02:00
|
|
|
|
2016-09-06 22:31:10 +02:00
|
|
|
After all the parts have arrived it is safe to move on to the next section.
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
* Wiring
|
2016-09-11 18:29:06 +02:00
|
|
|
It is assumed that you have printed the casing successfully.
|
2016-09-06 22:31:10 +02:00
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
1) Plug the switches into the casing. No glue is needed; the casing provides the perfect fit.
|
2016-09-06 22:10:59 +02:00
|
|
|
2) Put the keycaps on the switches
|
2017-06-21 19:18:18 +02:00
|
|
|
- Note that in the pictures here some of the long keys on the thumb-part are too short;
|
|
|
|
that's why it doesn't look symmetrical
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:31:10 +02:00
|
|
|
[[file:application-of-switches-and-caps.jpg]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
Now going further on in the guide there are two options
|
2017-06-21 19:18:18 +02:00
|
|
|
1. The first option is to print flexible PCBs. The advantage is that you save a lot of wiring
|
|
|
|
business, everything looks rather clean and you don't have to worry about your cables being too
|
|
|
|
thick such that the casing doesn't close. However, if you don't have the means to print out such
|
2016-09-11 18:29:06 +02:00
|
|
|
PCBs there is the second option, wiring everything by hand.
|
2017-06-21 19:18:18 +02:00
|
|
|
- The guide for this PCB-option is very rough indeed and it doesn't include the firmware
|
|
|
|
used. Wiring and firmware play extremely close together--wiring before knowing your
|
|
|
|
firmware is like buying a shoe without measuring your feet before. For this option,
|
2016-09-11 18:29:06 +02:00
|
|
|
information about the exact firmware is not published, this in addition to the fact that
|
|
|
|
the pictures in this rough guide are incomplete makes this option extremely
|
|
|
|
beginner-unfriendly. Going in blind-sided like this may lead to one of these things:
|
2017-06-21 19:18:18 +02:00
|
|
|
1. reprogramming huge parts of the firmware to match your wiring, which comes with a ton of
|
|
|
|
debugging.
|
|
|
|
2. rewiring to adapt to what the firmware expects, which may easily double your work here.
|
2016-09-06 22:10:59 +02:00
|
|
|
- [[Route 1: Dactyl Flexible PCB Rough Guide]]
|
2017-06-21 19:18:18 +02:00
|
|
|
2. The second option is to hand-wire everything. For people like me, who had never soldered before,
|
2016-09-06 22:31:10 +02:00
|
|
|
this was great pain and pleasure.
|
2016-09-06 22:10:59 +02:00
|
|
|
- Here too firmware and wiring go hand in hand, you pretty much have to have a detailed look
|
|
|
|
at the firmware you are using before wiring anything. I provide my modification of the
|
|
|
|
"ergodox-firmware" over here: https://github.com/BubblesToTheLimit/ergodox-firmware
|
2016-09-10 22:38:06 +02:00
|
|
|
- TODO: Make a successfull pull-request, such that it is available in the official
|
|
|
|
ergodox-firmware
|
2016-09-06 22:31:10 +02:00
|
|
|
- Some of the steps of this guide may not be described in much detail, but in contrast to
|
2017-06-21 19:18:18 +02:00
|
|
|
option one there is a whole lot more information.
|
2016-09-06 22:10:59 +02:00
|
|
|
- [[Route 2: Dactyl Hand-Wiring Guide]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
** Route 1: Dactyl Flexible PCB Rough Guide
|
|
|
|
[[workbench.jpg]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
For now, take a look at the images and try to figure things out; I know that's not great (it's
|
2016-09-06 22:10:59 +02:00
|
|
|
better than nothing!)
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
*** Making the PCB
|
|
|
|
Get two sheets of 6in square Pyralux™. Use the Toner Transfer method to etch the Pyralux sheets as
|
|
|
|
you would a usual PCB
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
#+BEGIN_QUOTE
|
2017-06-21 19:18:18 +02:00
|
|
|
NOTE: If you only have an Inkjet make photocopies of the print out. Voilà, Toner based copies!
|
2016-09-06 22:10:59 +02:00
|
|
|
#+END_QUOTE
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
[[http://www.instructables.com/id/Toner-transfer-no-soak-high-quality-double-sided/][Here's a handy toner transfer guide ...]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
Print these PCB designs out...
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
Left hand:
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
[[left-hand-pcb-pyralux.png]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
Right hand:
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
[[right-hand-pcb-pyralux.png]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
When you're done etching, you'll need to carefully cut the pcb into pieces... See the images
|
|
|
|
below.
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
*** Applying the PCB to the electronical parts
|
|
|
|
The thumb cluster pcb for the left hand:
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
[[madness.jpg]]
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
Solder the MCP like so:
|
2016-09-06 20:19:56 +02:00
|
|
|
|
2016-09-06 22:10:59 +02:00
|
|
|
[[left-hand-mcp-1.jpg]]
|
|
|
|
[[left-hand-mcp-2.jpg]]
|
|
|
|
|
|
|
|
Solder the Teensy 2.0 like so:
|
|
|
|
|
|
|
|
[[teensy-1.jpg]]
|
|
|
|
|
2017-06-25 19:38:55 +02:00
|
|
|
The two 2.2kΩ (Red Red Red Gold) pull-up resistors ensure a clear signal between the USB controller and the I/O expander.
|
2017-06-21 18:59:58 +02:00
|
|
|
[[https://learn.sparkfun.com/tutorials/pull-up-resistors][Read more about pull-up resistors here]].
|
2016-09-06 22:10:59 +02:00
|
|
|
|
|
|
|
[[teensy-2-fuxor-reziztorrs.jpg]]
|
|
|
|
|
|
|
|
Each hand of the keyboard will wire up like so:
|
|
|
|
|
|
|
|
[[right-hand-pcb-1.jpg]]
|
|
|
|
|
|
|
|
Teensy goes here... note the rows soldered to the teensy via the Pyralux:
|
|
|
|
|
|
|
|
[[right-hand-pcb-with-teensy.jpg]]
|
|
|
|
|
|
|
|
Here the left hand:
|
|
|
|
|
|
|
|
[[hotglue-left-hand.jpg]]
|
|
|
|
|
|
|
|
** Route 2: Dactyl Hand-Wiring Guide
|
2016-09-10 22:57:49 +02:00
|
|
|
*** Step 1: Creating the rows
|
|
|
|
Using the copper wire you solder each row together, notice how the thumb-part gets its own
|
|
|
|
row. If you take a close look you can see how I did do a messy job soldering, I had to redo
|
2017-06-21 19:18:18 +02:00
|
|
|
some of the parts because they weren't soldered properly. Do this for both sides. It doesn't
|
|
|
|
matter which of the two available pins of each switch you chose for the row, but for it to
|
2016-09-11 17:20:14 +02:00
|
|
|
look clean you should decide for either one of them.
|
2016-09-10 22:57:49 +02:00
|
|
|
|
|
|
|
[[file:wiring_create_rows.jpg]]
|
|
|
|
|
|
|
|
[[file:wiring-create-rows-both-sides.jpg]]
|
|
|
|
|
|
|
|
You might want to go ahead and test each one of the 70 switches with a multimeter.
|
|
|
|
|
|
|
|
[[file:wiring-create-rows-testing.jpg]]
|
|
|
|
|
|
|
|
*** Step 2: Create the columns
|
2016-09-11 17:59:36 +02:00
|
|
|
The next step is to create the columns by soldering the diodes. There are two options for
|
2016-09-11 18:11:26 +02:00
|
|
|
soldering the diodes, all heading towards the switch or all heading away from the
|
|
|
|
switch. These two ways are called "row-driven" or "column-driven" and here again it is
|
|
|
|
cruciual for the firmware and the actual wiring to be on the same page.
|
2016-09-11 17:20:14 +02:00
|
|
|
|
|
|
|
[[file:diode-diagram-drive-columns.png]]
|
|
|
|
|
|
|
|
[[file:diode-diagram-drive-rows.png]]
|
2016-09-10 22:57:49 +02:00
|
|
|
|
2016-09-11 18:11:26 +02:00
|
|
|
If you want to try and use the "tmk_keyboard" firmware which seems to be also interesting you
|
|
|
|
want to wire the diodes in the according way (check whether the tmk_keyboard firmware expects
|
|
|
|
a row-driven or a column-driven setup).
|
2016-09-10 22:57:49 +02:00
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
As you can see in these following pictures, I went for the "row-driven" setup (visible by the
|
2016-09-11 18:29:06 +02:00
|
|
|
direction of the diodes, the black line being towards the key-switches). This first picture
|
2017-06-21 19:18:18 +02:00
|
|
|
doesn't show how the 6 thumb-keys are actually individually connected to the 6 main columns,
|
2016-09-11 18:29:06 +02:00
|
|
|
but note the small black line on each diode.
|
2016-09-10 22:57:49 +02:00
|
|
|
|
|
|
|
[[file:wiring-create-columns-left.jpg]]
|
|
|
|
|
|
|
|
This second picture shows how the 6 thumb-keys are actually connected to the 6 main columns.
|
|
|
|
|
|
|
|
[[file:wiring-create-columns-right.jpg]]
|
|
|
|
|
2017-06-21 19:18:18 +02:00
|
|
|
How thumb-keys are wired again depends on the firmware. The following picture shows the wiring
|
2016-09-11 17:20:14 +02:00
|
|
|
of the thumb keys more clearly and also the part in the code that reflects this wiring
|
|
|
|
(ergodox-firmware/src/keyboard/dactyl/matrix.h).
|
|
|
|
|
|
|
|
[[file:thumb-key-wiring.jpg]]
|
2016-09-10 22:57:49 +02:00
|
|
|
|
2016-09-11 18:29:06 +02:00
|
|
|
*** Step 3: Put the Teensy and the MCP in place
|
2016-09-10 22:57:49 +02:00
|
|
|
This next step is to wire the Teensy 2.0 and the MCP 23018 in place.
|
2017-06-21 19:18:18 +02:00
|
|
|
Everything necessary for that really is the following circuit diagram.
|
2016-09-10 22:57:49 +02:00
|
|
|
|
|
|
|
[[file:circuit-diagram.png]]
|
|
|
|
|
|
|
|
Things to note here:
|
|
|
|
- The columns for the MCP go from 0 to 6, the columns for the Teensy go from 7 to D (counting
|
2017-06-21 19:18:18 +02:00
|
|
|
in hexadecimal) which makes great sense, since the MCP is to the left of the Teensy and we
|
|
|
|
read from left to right.
|
2016-09-10 22:57:49 +02:00
|
|
|
- When debugging this and using the ergodox-firmware, both sides have to be wired completely
|
2017-06-21 19:18:18 +02:00
|
|
|
and actually with the TRRS connected. Don't expect the keyboard to work before that. The
|
|
|
|
reason is that the ergodox-firmware stops completely if either the Teensy or the MCP weren't
|
|
|
|
initiated properly.
|
|
|
|
- The LEDs are handy for debugging; definitely go ahead and connect those. When the keyboard
|
2016-09-10 22:57:49 +02:00
|
|
|
starts successfully two of the LEDs light up shortly.
|
|
|
|
- From the Teensy over to the MCP go exactly 4 connections. The blue, the red and the two green
|
2017-05-19 11:49:51 +02:00
|
|
|
ones. This is done using the TRRS jacks and cable.
|
2017-06-21 19:18:18 +02:00
|
|
|
- Yes, the connection from B4 to VCC doesn't seem to make any sense, but the B4 port actually
|
2016-09-10 22:57:49 +02:00
|
|
|
gets used directly in the ergodox-firmware, so just connect those connections that make no
|
2017-06-21 19:18:18 +02:00
|
|
|
sense on first sight and either don't question it or find out why this is necessary by going
|
2016-09-10 22:57:49 +02:00
|
|
|
through the firmware in great detail.
|
2016-09-11 17:20:14 +02:00
|
|
|
|
2016-09-11 17:59:36 +02:00
|
|
|
This is how the trrs jacks are wired:
|
|
|
|
|
|
|
|
[[file:trrs-jack.jpg]]
|
|
|
|
|
|
|
|
After you are done you might have the following result:
|
|
|
|
|
2016-09-11 17:20:14 +02:00
|
|
|
[[file:rows-and-columns-connected-to-chips.jpg]]
|
|
|
|
|
2016-09-11 18:11:26 +02:00
|
|
|
Good luck!
|