Hey there fellow keeb makers,
long time lurker and maker finally putting hands on my diy keyboard project.
My name is Daniel, I’m an electronics development engineer and long time maker from germany (3D-printing, custom electronics, tinkering with some arduinos, …).
I started looking into building a custom keyboard actually for my wife about two years ago because nothing in the market would fit her requirements. I bought two sets of brown Gateron G Pro Switches and ordered five sets of Adafruits neoKey 5x6 ortho snap-apart with two KB2040 to test out different layouts. But like with many projects while these parts were shipped to germany, other projects became bigger priority, but I regularly went back to do some research on all diy keyboards.
So when my second (!) G910 I’m currently using started to experience the same double stroke issues like the first one I had, I picked this project back up, now whit a relatively clear view about the most design choices of the keyboard.
The requirements:
- 100% design with ISO layout
- wired
- snap keyboard
- highly modular (hot swap)
- KB2040 as MCU
I am kind a nerdo when it comes to making a pcb for my own projects. I usually want to have as many possibilities to use it in different ways as I possibly can cram into it. This is partly due to my professional background as a developer and partly because I’m usually working on projects in segmented time slots and keep forgetting stuff (I am totally lazy in documenting ).
The plan:
- Main Keyboard 60% layout with function keys in split configuration
- Arrow pad and num pad as snap on modules with own MCUs (I will get into this later)
- Macro pad and 6 axis space mouse as snap on modules with own MCUs
- All units usable as stand alone via USB and QMK firmware
The technical aspects:
- Every piece of the keyboard gets it’s own KB2040
- The left and right main parts are connected with spiral USB-C cable (like UHK 60 v2)
- The snap on modules can be connected with magnetic pogo connectors to the left and right of the main modules (protocol is discussed later)
I highly like the design of the UHK 60 v2 but it does not fit all the requrements like having function keys ect. What I like are the thumb modules that can be screwed on, to me it looks like they connect via I²C to the main board but due to them being screwed in place I think they can not be hot swopped.
The current idea for the connection between the units via the pogo pins is to use the USB connection. Therefore the USB connection from the MCU can be switched between the USB-C connector on the edge of the board to the pogo pin connector via TS3USB30, activated by Vbus of the USB-C connector (priority, level corrected to the IC).
To handle all the USB communication I plan to implement a CH334 USB hub in the left and right main modules. With this setup I could use USB for the connection of the left and right main keyboard parts as well, handling them as individual USB keyboards all along.
The problem with this is, that I want to syncronize (momentary) layer switching between the two main modules. This is typically done with I²C (if my research is correct) but due to the mapping happening in the keyboard and not in an application on the receiving device (what I highly like) I did not get any results when searching for a solution to this via USB. The alternative to this would be to drop the USB connection between the modules and implement it via I²C. But due to there not beeing a hot swap functionality this means that I need to reset the keyboard every time that I connect a module.
An alternative thought was to use the super speed contact pairs on the cable between the two main modules to indicate the press of a super key for syncronisation.
I would highly appreciate your feedback on my project. I have some more stuff up my sleve when getting into the details but that’s the great picture ,)
Regards
Daniel