Unit-01 is the first keyboard I've designed and my first real foray into electronics as a whole. Unit-01 is a split, ergonomic, columnar, bluetooth, 32-key keyboard designed to be built using nice!nano boards and Kailh Choc switches.
- Top level - ZMK config and related files
- "ergogen" - files related to the tool used to design the PCB and basic case elements
- "case" - case models and related files
Started by creating boards/shields
files manually based on the card and the a_dux
Moved into using keymapper to generate base key layout with layers
- Start with 12 columns and 4 rows
- Delete the keys we don't need (double click)
- Scooch the right side over a bit (15 or so)
- Backup often :D
Moved back into the raw keymap file for more precise control over the keys
- Commit or save your current work in case things get wild
- Add line breaks between your rows to define the basic shape of your board
- Steal the
format.ts
file and put it wherever you like - Install a typescript runner like esrun with
npm i -g @digitak/esrun
- Add your
filePath
anddesiredKeyCharacters
variables informat.ts
- Run with esrun format.ts
- Tweak the output to match your formatting needs
- Run again after you change stuff :D
I had been curious about split ergonomic keyboards for a few years when I saw a few of Ben Vallack's videos on small custom keyboards. This one in particular sparked my interest in designing and building my own board. I asked loads of questions on various Discord servers along the way, and sincerely appreciate all the help I received from the community.
I did some research to learn about different switch options and elements I might want on my board. I started looking other people's builds, like the Architeuthis dux and the card. This helped me decide on the basic shape of the board and how many keys it would have.
I began by measuring the natural paths of my fingers on a site called Ergopad. Then I plugged that info into the unofficial Ergogen frontend and spent probably 25 hours learning the syntax and tweaking positions.
Then I started tweaking the exported file in Kicad. While adding my traces, I kept learning new things which led me back into Ergogen for another iteration cycle. Overall, this process probably took 15 more hours.
At this time, I had all the necessary files to start ordering parts. Here's the total cost of parts I ordered (a detailed breakdown is available by expanding the section below):
Total part costs
Item | Price |
---|---|
Subtotal | $134.81 |
S/H | $19.48 |
Grand Total | $154.29 |
Detailed cost breakdown
Item | Price |
---|---|
40x Kailh Choc hotswap sockets | $6 |
S/H | $4 |
Order total | $10 |
Item | Price |
---|---|
40x Kailh Choc Switches (Silver) | $28.60 |
White MBK Choc Keycaps (Alphas) | $15 |
S/H | $5.59 |
Order total | $49.19 |
Item | Price |
---|---|
2x nice!nano v2.0 | $49.98 |
2x Battery Combo for nice!nano Controller | $23.98 |
S/H | $4.83 |
Total | $78.79 |
Item | Price |
---|---|
5x Custom PCB | $9.25 |
S/H | $4.06 |
Total | $13.31 |
LCSC - Part of a larger order
Item | Price |
---|---|
Buttons | ~$2 |
S/H | ~1 |
Total | $3 |
After I received all the parts, I spent ~4 hours soldering everything. This step took a while since this was the first time I've ever soldered anything. Overall, it was pretty straightforward and I could feel myself getting more comfortable as I went.
I then spent around 8 hours debugging and fixing mistakes before I finally had a working keyboard.
The next step was setting up the firmware using ZMK, which probably took around 4 hours to learn and customize. I expect spend even more time on this stage getting all the keys laid out just how I want them.
Once everything was working to my liking, I decided to design a case for the keyboard. I spent probably 5 hours designing the case and another 1-2 hours messing with the 3D printer and fitting everything together.
Overall, this build took me around 60 hours to complete. I started out not knowing anything about keyboard building or PCB design, I didn't even know how to solder!
I'm extremely pleased with how the board has turned out and am excited to actually use it now that it's done :D