interesting ideas with hardware

applications and implications

This weeks task was to work on the design and communication of the final project.

After I wrote the following, I changed direction on my final project. You can find the up-to-date description and goals of the final project on the project page.

formal description

I will design and manufacture a split keyboard, consisting of:

  • a non-flat shell, produced additively (using 3d printing) during prototyping, and either produced using casting or milling for the final project. The shell will mechanically secure the keyswitches and define their positions and angles.
  • commercially produced keyswitches
    The keyswitches are the parts of the project that have to stand up to the highest number of use cycles by far, and should be very reliable. They are reasonably cheap and there is a large choice of products available on the market.
  • commercially produced keycaps
    The keycaps could conceivably be fabbed locally using casting, but are on the periphery of the project. Tolerances are also quite important to interoperate well with the keyswitches.
  • a keyboard controller. One microcontroller in each of the halves of the keybaords will monitor the key-matrix. The microcontrollers will communicate over a simple wire protocol via a set of connections made via a cable. One of the two microcontrollers will additionally support a USB connection and expose the keyboard using as a USB-HID device.
  • flexible PCB(s). Due to the curved arrangement of the keys, the keyswitches will either have to be mounted to flexible PCBs or hand-wired. The keyboard controllers will be implemented on milled PCBs.
  • OLED display (stretch goal). If feasible given lab access and resources, one of the microcontrollers may connect to a small OLED panel to give information such as the current keyboard layer.
  • Integrated single-board-computer (strecth goal). If feasible given lab access and resources, one half of the keyboard should include a single-board computer such as a raspberry pi zero. The keyboard should be able to function in either of two modes: as an input into the integrated computer, or as a USB-keyboard for an external device. This may also be possible by exposing the keyboard to external devices via the SBC, using the gadget API.

The materials used will be plastic, FR1, and maybe a machined aluminum baseplate. Most components are available as part of the Fablab inventory, but the keyswitches and keycaps will have to be sourced specifically.


Once completed, the keyboard MUST be able to connect via USB to a generic computer and be able to transmit keystrokes to it. It SHOULD fit my hands comfortably, and require minimal stretching of the fingers to reach all keys.