The project's README from github.com/notaroomba/keybytes. As one markdown file: README.md.
Key Features • Video Demo • Connecting Keybits • PCB • Case • Credits • License
https://github.com/user-attachments/assets/19bec26d-6e01-4ee0-906e-7e69bace2f9c
Typing over USB:
https://github.com/user-attachments/assets/b6abd347-b68b-40f1-8e2d-c50744b8104e
Going around a keybit, the pogo pins on the N and W sides are 3.3V, SDA, GND, SCL and on the E and S sides they are SCL, GND, SDA, 3.3V. So two keybits only work together when an N or W side touches an E or S side, which gives every joint two ways a keybit can be turned and still work: the usual way, or a quarter turn so the other matching side faces its neighbour. The left and top of the keyword take an E or S side and the right takes an N or W side.
If every keybit is the same way round any shape works, like a square with the keyword in one corner. A keybit turned the wrong way gets 3.3V on its SCL and GND on its SDA, so it gets no power and nothing behind it shows up until it's turned.
Status LED:
Updating keybits: the keyword carries the keybit firmware. After updating the keyword, put every keybit on the programming pins once and wait for green. Keybits on different firmware versions don't talk to each other, so do all of them.
Designed in KiCad! There are two boards, the Keybit and the Keyword, and both are 1u (19.05mm x 19.05mm).
A single key with a Cherry MX switch and a CH32V003. Every side has pogo pins for 3.3V, GND and I2C so it can connect to the keyword or to other keybits, and the pads on the corners are for programming.
Schematic:
Layout:
The main board that the keybits connect to. It is split into two PCBs that stack on top of each other. The top one has the STM32WB55RGV6, the antenna and the flash, and the bottom one has the USB-C, the charger and the buck-boost converter. The 3 pogo pins on the top are for programming the keybits.
Schematic:
Layout:
3D View:
Custom designed cases in Onshape, the STEP files are in the cad folder.
This project uses:
MIT
notaroomba.dev · GitHub @NotARoomba ·