HexBoard

Created by [hephaestushex] • Started on June 05, 2025

A wireless split keyboard powered by the nRF52840

Total Time Spent: 25.5 Hours

June 9th: Got some initial planning done

Keyboard Layout

I started off by creating a keyboard layout. Some tinkering later, this is what it looks like in Keyboard Layout Editor

image

It's only one half, with no column stagger (I haven't measured my hands yet) but it would come out to a 36-key layout

image

As for the keymap, I liked this one by Rico Sta. Cruz. I'll probably use QWERTY, but I like the way they navigate between layers

Microcontroller

I initially wanted to make this keyboard wireless, considering the state of my desk

WIN_20250609_16_52_57_Pro my desk rn... not looking good

Unfortunately, after a post on slack and some research, this isn't feasible. I could use an aliexpress clone, but apparently it's not reliable

Anyway, by this point I decided that a pi pico would be better. Ideally, usb-c, as the microUSB connectors tend to break off.

I started by looking at the Seeed Studio XIAO RP2040 board. With the split connectivity (TX/RX) pins, there is 9 more pins, which would work out for my layout.

It's tight, but it might just work.

But hold on... I found a Seeed Studio XIAO nRF52840 Board, and it is similar to the nice!nano, but so much more cheaper. The only caveat is that the battery pins are exposed by pads. A google search yielded the ergonaut one, which solves this problem by using holes and filling them with solder.

image location of the battery pins

image solution used in the ergonaut one

Keyswitches

I want this keyboard to be low-profile, so I went looking for some low profile keyswitches. I ended up finding the gateron ks-33 low profile switches, which looks good.

Miscellaneous Parts

I'll use THT diodes for the matrix, probably 1N4148 diodes.

Total time spent: 3h

June 10th: PCB Design

With all the hardware choices out of the way, I started designing the schematic and PCB.

I downloaded some libraries and setup the key switch matrix

image

my switch matrix.

I plan on making this a reversible matrix, so its only one half.

I then decided to do per key RGB, so I setup that too.

image

Its much simpler.

From there I wired up the microcontoller and battery

image

With that out of the way, I started on the PCB, which was relatively easy.

image

This is the location I settled on.

Total time spent: 3h

June 11th: PCB Routing

I used @cheyao's reversible sk6812 mini LED footprint, and positioned those and the leds.

I then wired all of them up.

image

I don't like the wiring towards the MCU, so I'll probably fix it tomorrow.

I couldn't decide on the mcu footprint, so I'm still working on it. For now I'm using this footprint used in the ergonaut one image

Also it appears that a reversible footprint does not exist for the ks-33 so looks like I'm making two halves.

After all of that, this is the final pcb for today.

image

Total time spent: 1.5h

June 12th: Rerouting + New PCB Footprint

I started off by realizing I probably can't SMD solder, so I created this footprint, using the XIAO nRF52840 DIP as a base and added the pads from the ergonaut one footprint.

image

The holes are so that I can use the soldering method used in the ergonaut one.

From, there I positioned the switch and battery connector.

image

The battery connector is simply two holes for two wires.

I then placed some mounting holes, two in the left half and one on the right half, and finally one in the thumb cluster

image

Finally, the board outline and its time to reroute, this time beautifully.

I had to shuffle around some parts, replace a few footprints. I also decided to nix the leds, because a, I have no idea how to smd solder, and b, soldering 144 smd pins is too much.

This is the result

image

image

image

I exported that, then flipped it over and rerouted

image

image

the cost comes out to $8.50 per pcb.

To check if I'm still under the limit, I decided to put together the BOM.

image

I sourced everything from aliexpress except the pcb and case (not on yet since I have no idea how much filament it needs)

I also made the BOM in table format in the README.md

Total time spent: 4h

June 13th: Case Design and PCB Redesign

I started to design the case, when I realized that my ergonomic setup wouldn't work with Keyboard Layout editor, as apparently it can't handle eighth units. So I'm stuck designing my own plate.

When I hopped into kicad, I realized that my thumb cluster was not properly designed, so I basically redid the pcb, this time capturing the measurements necessary. This also helped me reduce the number of vias I used, making it cheaper!

Right Half

image

Left Half

image

I also redid the cost calculations with the new pcbs, but it didnt change.

Now, I can start with the case/plate.

Since Keyboard layout editor doesn't support eight units, I have to design my own plate, which kinda sucks.

Anyway, I tried my best to create my own plate, and this is what I go before I gave up.

image

This was my first time using fusion, so it took forever, dealing with constraints, rectangular patterns and so much more.

Total time spent: 5h

June 15th: Case Redesign

This clearly wasn't working, so I tried KLE again. I just ignored the warnings, and came up with this plate.

image

its so much better, and I can properly deal with this. Obviously the plate isn't meant to be a square, so thats a tomorrow problem

Total time spent: 30min

June 16th: Case Design (for real this time)

I decided to start designing the case, and it looked good!

45 mins in and this is what I have

image

It looks good, so I designed a cross section to see how it would mount

image

its way too large (2 cm), so I realized i should probably use m2 bolts instead.

Back to PCB design ... sigh

It wasn't too bad, I just made two different folders for each half.

Here's the new folder structure

image

A quick edit in the footprint assignment tool yielded a fixed pcb.

image.

Total Time spent: 1h

June 17th: Case Done*

I started off with some research as to the dimensions of my case. It was very boring, but eventually I found out that the distance between the bottom of the plate and the top of the case floor should be 4.5mm

The research led me to find out that my current hardware is good, so I just went with the m3 bolts. The heads will protrude now, but that should be fine.

The fact that the heads will protrude made me have to move the bolts to the side, which ended up looking like a sandwich mount, like this, except for the fact that the bolts will come from the top instead

image

Heres what the bottom looks like, after redoing the pcbs, schematics, and the sketch

image

As for the top, it was as simple as copying over the outline and fixing the holes in place.

image

The plate should be 3mm thick, with 1.2mm thick rectangles for the switch to clip onto. I didn't design these yet, as I want to do it after receiving the switches, which would allow me to experiment with mounting styles.

heres how the plate looks after a quick extrusion

image

image

i still need to fillet it tho

Total time spent: 3h

June 18th: Case Fully Done

I started off by redoing the extrusions, so I can create a divot.

It was time consuming, but 30 mins later I got this

image

You can see the parts where the switch clips to.

I also took some time to fillet the entire case.

Filleted the top plate:

image

And the bottom case:

image

That's pretty much it for the case so I exported, both left and right.

I put the cad files in the repo, and that's all I did for today.

image

Total time spent: 1h

Jun 19th: Firmware Done*

Since I'm using the nRF52840, my only options for firmware are ZMK and KMK. The docs for KMK say that it has to be precompiled, and a whole bunch of nonsense that made it not worth it to use KMK. ZMK isn't any easier, but at least there's a lot of documentation for it.

I started off with Joe Scotto's tutorial, but it looked out of date, plus mine is split. So, time to delve into the docs.

It took a while to find what I needed, since the actual development of shields was put in the later sections of the docs. I pretty much installed zmk, created a new repo for it, and started creating!

Some screenshots of the code required

image

image

image

image

The last image is of my keymap. For now, its pretty sparse, but I plan on filling it out fully.

an hour in, its time for building!

I sure hope that no bugs will come!

There. were. so. many. bugs.

The terrible part is that it takes forever for these bugs to show up, since it takes time to build.

image

The first two were the initial builds, but the last three are bugs in my code.

If you noticed in my keymap, I actually used a Colemak layout. I wanted to learn colemak, so I'm taking this as an opportunity to learn it.

so while it takes time to build ...

image

im learning colemak!

image

Finally at 1:23 it built.

image

FINALLY!!!!

Here's my colemak accuracy by the way:

image

That's pretty much everything I think I have to do before I submit.

I pushed the two uf2 files to github

image

I took some time to revise the README and the BOM.

AliExpress for some reason changed the prices on me, so I have to update the prices. It also allowed me to fix items that ship later.

That looked to be pretty much everything, so I checked the website to see if I'm missing anything.

I was missing a couple of images, plus some BOM formatting. It took a while to place all the switches, so in total, about 45 mins.

image

This is how it looked once I placed all of them.

That's it, so I'm going to submit this.

Total time spent: 3.5h