Build log for a Dactyl Manuform split, ergonomic keyboard

There are many cool custom keyboard builds and I wanted to give it a go. This will document the process, parts and steps.

Part list

Some parts can be purchased and some are 3D printed. I printed these at home but there are places to order 3D printed parts from as well

  • 3D printed keyboard body (downloaded from Thingiverse or for the brave, generated)
  • Arduino Pro Micro x2
  • Keycaps
  • Key switches
  • 3.5mm audio jack part x2
  • 3.5mm audio cable
  • Micro-USB to USB-A cable
  • Diodes (1 / key) model 1N4148
  • Copper wire (I used 22AWG with a few different colors for easy separation)
  • XH connectors (to avoid soldering directly onto the pins of the Arduino)
  • Screws or M3 self-tapping inserts to attach the under plate
  • Model paint

Tools used

  • Soldering iron
  • Solder
  • Flux (really important for clean soldering joints)
  • Mechanical helping arms
  • Razor knife
  • Wire stripper
  • Black marker
  • XH connector crimping tool (I use an IWISS SN-2549)
  • 3D printer (if you want to print yourself)
  • Breadboard (for testing and as a jig for soldering the Arduino pins)

3D printing the keyboard body

The STL files for 3D printing the body and covers underneath can be found on Thingiverse here: https://www.thingiverse.com/thing:2666676

I printed in white PLA using the 0.2mm quality preset on a Prusa i3 MK3s

Trying out the fit of a few silver cherry compatible switches after having painted purple using Tamiya TS-24 model paint

Soldering the diodes

For the wiring I used the diagram by Nick Green shown here.

For each row I use the diodes own wires as connectors between the keys. Solder the brown side of the diode to the key and use the black-side wire to hook up to the next key.

Soldering the vertical connectors

To connect the keys on the vertical side I use AWG22 copper wire with different colors to keep them separate more easily. AWG24 might have been better but this is what I had available at home.

I start by laying out the wire over the keys and then using a permanent marker to mark where they should have the insulation removed

Then I use a wire stripper to remove the insulation where the wire is marked. That way we can connect the same wire to multiple keys without having to cut the wire. The exposed part of the wire can also be pushed down over the key pin to get it to stay put while being soldered into place

Soldering largely done! Having some helping “hands” is highly recommended

Soldering pins to the Arduino Pro Micro

To make soldering of the pins easier I simply push them into a breadboard for support

Attaching the wires to the Arduino

To avoid the hassle of soldering each Arduino pin to the keyboard wires, and also to make it easy to replace the Arduino / wires if required, I use a crimping tool and some XH connectors.

Once the wires are attached to the XH connectors they can easily be connected to the pins of the Arduino. Some velcro keeps everything nice and tidy.

Adding the 3.5mm audio jacks

I solder VCC and GND wires to the black 3.5mm audio module and attach them to the corresponding pins on the Arduino using another XH connector. The data pin attaches to D3.

The two halves can now be connected using the 3.5mm audio cable (gray in the picture)

Programming the keyboard

QMK is used for the programming. The getting started guide can be found here: https://docs.qmk.fm/#/newbs_getting_started

The QMK firmware can be cloned from GitHub here: https://github.com/qmk/qmk_firmware

Keyboard layout: This is a handwired Dactyl Manuform 5×6, so the files for modifying the key layout and function can be found here: https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/dactyl_manuform/5×6

Please adjust to the model of keyboard you are building if different from this.

After having created a custom layout (or if you just use one of the pre-existing ones), attach the keyboard over the micro-USB to USB-A cable to the computer and program it with:

qmk flash -kb <path-to-your-kbd-type> -km <your-kbd-layout>

For example

qmk flash -kb handwired/dactyl_manuform/5x6 -km jwr

QMK will compile and then flash your Arduino. When prompted, reset the Arduino by by shortcutting the RST and GND pins.

After having programmed the left side of the keyboard, just attach the other side and repeat the process.

LED lighting: Adding background lighting is likely the next thing I’ll do. There is good documentation for this here: https://github.com/samhocevar-forks/qmk-firmware/blob/master/docs/feature_rgblight.md

Conclusion

All done! Hope that was helpful and will assist with your own build!

Snakeinator case and final touches

The environmental control system for Mr. Snuggles the ball python is now nearly finished. Throughout the last couple of weeks I’ve worked on learning Fusion 360 in order to create a new case. The previous one was done with Tinkercad and the one before that in FreeCAD. The first iteration was a Tupperware case, lol

Work in progress while designing the case

The electronics didn’t end up as clean as I was hoping it would be but it works and that’s always been rule number one for this project. There will likely be a version after this and for that it would be great to etch a proper circuit board rather than using universal PCB boards as I have done up to now.

An old Wii U gave up its case fan for this project. It’s very quiet and perfect for case cooling

Currently I’m tuning the settings to dial in the right temperatures and humidity in the different parts of the enclosure. Grafana is a lifesaver as always 🙂

Work in progress on dialing in correct temperatures and humidity

The next step may be to add a humidifier of some sort and hook it up to the humidity values. The biggest challenge in controlling the environment has been the humidity. This seems to be a common gripe among those who use glass terrariums and I can certainly see why. Right now a couple of towels on top of the mesh screen in the lid help keep things under control but it’s not an ideal solution as it also limits air flow.

Mr. Snuggles loves his tubes

Minecraft ore lamp

This is a 3D printed lamp in the shape of a Minecraft ore block. Powered by an Arduino Uno and four Neopixel LEDs. Model from Thingiverse: link

The button on top will step through different ore types:

  • Redstone
  • Emerald
  • Gold
  • Lapis Lazuli
  • Diamond

A final button push will turn it off.

The design on Thingiverse only contained code for RGB LEDs. In case somebody wants to use Neopixel (WS2812B) LEDs instead, the code for this project has been uploaded to Github: https://github.com/jonas-werner/minecraft-ore-lamp

Since the Neopixel LED’s are very bright I made a dome-shaped diffuser of transparent PLA. The sides are made of painted white PLA (brand: Priline) and the “windows” are transparent PLA. To give it some stability and to easily be able to mount / remove from the Arduino I used a prototype board to create a “hat” for the Arduino. That way it can easily be detached if required.

Diagram

Some more pics of the finished cube