krunchboard-90
A custom 75% (84+5+1) ANSI mechanical keyboard powered by a Raspberry Pi Pico with KMK
Created by
krunch 🚀
Tier 3
47 views
1 follower
Timeline
krunch 🚀
added to the journal ago
Case assembly and updates
6/DEC/2025
Today the case arrived, slightly later than expected (5 days) but at least it's here.
I started by installing the heatset inserts, this was quite fun to do and I did a pretty clean job with that.
Most of the design done in CAD fits the actual hardware which is good.
Next, I installed the plate mounted stabilizer and switches to the plate, fortunately the printer that printed this (X1 Carbon) was very precise and all the parts fits together nicely. After closing up and screwing in the case, I discovered that the keys with the stabilizers were extra loud and I wanted to dampen the noise so I did the band-aid mod to dampen the noise when the stabilizer hit the PCB. This reduced the noise significantly and I was pretty satisfied with how the keyboard sounds.
However, I discovered that the plate was actually blocking the USB-C cable to be plugged in to the port because there wasn't enough clearance for the cable to fit, I fixed this by removing part of the plate and it worked!


I fixed this mistake in CAD as well.
I also discovered that the holes for the screws to pass through is tight so I used a drill to expanded it a bit.
krunch 🚀
added to the journal ago
Soldered the MCU, diodes, switches, hotswap sockets, EC11E
1/DEC/2025
Today I received the PCB in the mail after waiting about a week, I started by soldering the Raspberry Pi Pico, since my design has a external USB-C port, I will need to reflow the pico because the USB data pads are under the pico.

(I took the USB-C port from the pico to use on the keyboard PCB, it reduces the height that the pico takes up and I don't have to buy a extra USB-C port)
Next, I soldered the diodes which is needed for the matrix to work, this took a while since they are quite small but I eventually got them all done.
Next up, hotswap sockets! These are relatively easy to solder, they keep themself in place with the hole in the PCB, and they are quite big, however, they do take up quite a bit of solder.
I streamed the soldering process and quite a few people showed up!

After soldering most things, I moved on to switches placing and debugging the code
Then placed the keycaps and soldered the EC11 rotary encoder
Fortunately, my code only has a few bugs (forgot to import modules, syntax errors, etc...), so it was a quick fix.
However, my case hasn't arrived so I can't fully assemble this today, but at least the keyboard works!
CAN ⚡🚀
approved krunchboard-90 ago
Tier approved: 3
Grant approved: $21.00
krunch 🚀
submitted krunchboard-90 for review ago
technical_.
requested changes for krunchboard-90 ago
You can only make one keyboard in Blueprint. A hackpad is a keyboard. Choose between one of your projects.
krunch 🚀
submitted krunchboard-90 for review ago
krunch 🚀
added to the journal ago
Firmware
Today I did the firmware, I chose to use CircuitPython with KMK because I am quite familiar with this.
It took quite a while to setup the matrix assignment since my pins are not in numerical order since I wanted the traces to be clean.

I had to set up multiple layers since I wanted to be able to use volume/audio/brightness control within the keyboard

krunch 🚀
added to the journal ago
Plate and Case
Today I designed the plate and the basic shape of the case.
Since the keyboard is designed to be sandwich mounted, it's very simple.
I wanted to make the overall keyboard as compact as possible so I decided to use M2 screws.

The stabilizers cutout is the Cherry MX Specs from ai03's plate generator.
For the case I designed it in OnShape, I started by importing the PCB and plate image from KiCad and drew a outline around it, to ensure the PCB slots in the middle properly, I added a 1mm gap between the PCB edge and the inner wall.
The M2 screws will be screwed in from the bottom for a clean look.

krunch 🚀
added to the journal ago
All the traces
Today I wired up all the rows and columns, this took a while because I tried to make the PCB as compact as possible, whilst keeping the traces neat looking.
I rearranged the schematic to allow the column pins to enter the MCU efficiently.


I also moved the RST and BOOTSEL buttons under the space bar for easier access.

krunch 🚀
added to the journal ago
Wired the power and data
Today I started drawing the traces for power and data to the pico, since I am using a external USB-C port, I will need to use 2 5.1k resistor to request 5v from PD sources.

The data lines are a differential pairs, although I don't think it's necessary since the pico is only USB 1.1, which only supports up to 12 megabits/s.

krunch 🚀
added to the journal ago
Made the schematic
Today I completed the schematic. I decided to make the pico receive power and data via a external usb-c port so that I can put the pico under the space bar, on the back side to save space. The USB-C have 2 5.1k resistor to request 5v from a PD source, and there is reverse voltage protection just in case.

Since the pico will be on the other side, I also added external RST and BOOTSEL buttons.

I have 1 unused GPIO pin so maybe I can put some neopixels on the PCB.

krunch 🚀
added to the journal ago
I decided the layout I wanted
Since this is the v2 of krunchboard, this mainly fixes the mistakes from v1 by completely redesigning! Previously, I used a 85% layout, but I had to use a MCP23017 GPIO expander, which is a pain to get working in firmware since I was mixing the row/column pins with the MCU (RP2040 Pico).
This time, I will not be using a GPIO expander, so I decided to use a slightly smaller layout for the keyboard, it will be 84+4 keys ANSI keyboard with a EC11 rotary encoder, the 4 keys will be macro switches so I can make it do shortcut actions! I originally wanted to make it ISO layout, but it was very hard to find keycaps set for ISO layout so I resorted to using ANSI layout.
This keyboard will be hotswappable so it will be plate mounted.

krunch 🚀
started krunchboard-90 ago