Intro

I've been using a Cornish-Zen for quite a while now. I bought in during R1 and it's a neat keyboard. But I have two issues with it:

Displays are still useless in my opinion, but this time the eInk blocks some actions. If the keyboard goes to sleep, it takes 5-10sec because the eInk refreshes several times. Without eInks that usually takes 2-4secs.

To combat this, I increased the sleep timer, which doesn't help the mediocre battery life. The 180mAh battery lasts 2-3 weeks with my usage, and I'm used to >800mAh keyboards.

On top of that the battery reporting is inaccurate, after a week the Zen will report 10% and then last another two weeks. So a lot of times one side (weirdly the right side) will just die on me while using it.

Because of this, I've been thinking more and more about going back to my Microdox Bud, but not without improving it first.

Goals

Spacing

The thing I liked the most about the Zen is Choc spacing. The Microdox has MX support, that's why it needs MX spacing.

Changing the spacing doesn't just impact the plate, it also changes the PCB, so it's not a small update.

Solution:
3d print a new plate with the 17x18mm Choc spacing and handwire it

Stagger

The stagger on the Microdox is moderate, but I prefer something more aggressive.
I really liked the amount of stagger on the Draculad, so that's what I'll be stealing. It's more aggressive than the default Microdox and less aggressive than the Kyria.

Solution:
I'll have to do design a plate anyways, easy enough to be a bit more aggressive

Connectivity

The Microdox Bud is an alu case, and ever since replacing the old FR4 case I've had connectivity issues.

The right side would sometimes just not send anything to the left side until I reboot it, mostly when I place stuff between the halves.
It wasn't often enough to bother me that much, but if I'm already working on it, then why not fix it.

The right MCU faces downwards, so that would be my best guess as to why they lose connection. The controller facing downwards into the alu case just isn't helping the signal strength.

Solution:
replace the nice!nano v1 with v2s, and have both MCUs face up

Protection

The MCU on the Microdox sits on top of the plate. Boardsource ships kits with an acrylic cover, but they get in the way when using Chocs.
I don't think I've damaged the controllers while using the keyboard (could be that that's the reason for bad connectivity), but it would be nice to not have them that exposed.

Solution:
mount the MCU underneath the plate

Power switch

My Microdox Bud has a power switch already, right underneath the USB C port of the MCU.
I worked well enough to quickly switch the halves on and off, but the switch only stuck out 1mm or so.

Solution:
mount the power switch on the plate, not in the case

CADing

The plate of the Microdox Bud is incredibly simple, just a rectangle with two different chamfers.
Putting some rectangles for switches into it is also not difficult.

Sketching a rectangle; setting the right dimensions for the stagger, cutout, spacing and screws; extruding; chamfering and done.

But in reality, no CAD survives first contact with the 3D printer. It'll take a few iterations to iron out the kinks.

The final CAD design
The final CAD design
a

Prototype 1

Prototype 1 picture
A shockingly good first print

Issue 1

Quickly realized that 1.2mm thick plastic is not that sturdy.
Hitting keys in the middle would bend the whole by a few millimeters.
Having the 830mAh battery in the middle of the case helped, but there was still some flex around it.

Solution:
Supports on the bottom of the plate

Issue 2

Then I noticed that the controller wasn't in the right position.

I had to move the MCU a bit to get the Draculad's pinky stagger, turns out I moved it a bit too much.

On top of that, the Bud case has a 2.5mm thick, meaning I can't mount it directly at the edge of the plate if I want to keep the controller underneath it. Recessing the MCU 2.5mm inwards solves this issue, plugging it in shouldn't be an issue though.

MCU alignment issue
MCU cutout is a bit too low

Solution:
move all keys 2mm further up and recess the MCU 2.5mm inwards

Issue 3

With the first iteration, all the pins are only reachable from underneath. Great for most pins, but I still want access to GND and RST. I don't intent to mount a dedicated reset switch, but I still want to flash keymaps without having to open the keyboard every time.

Solution:
make a 5.5x2.5mm cutout for those two pins

Issue 4

Last and not least, the position I had planned for the power switch was a no-go.
The inside lip of the alu case meant the power switch sat too close to the switches, making it just as difficult to reach as the old position underneath the USB C port.

Power switch positioning
Position 1 was too close to the switch, position 2 is easily reachable

Solution:
move the switch to the gap between the thumb-row and the middlefinger-column

Just gained 2mm there, and the MCU doesn't protrude anymore. The 3d print finishing tool was pretty handy for this kind of stuff, melting holes into the plastic is fast, and it's possible to push stuff into the still malleable plastic.

Prototype 2

The second iteration already looked a lot better.

The power switch now has a cutout, and two plastic pins that I can melt down later to keep it in place. This isn't really necessary as the power switch already bottoms out in the case, but better safe than sorry.

The MCU cutout is now at the right position, and the backcover that keeps it in place works well.
I was afraid that it'd be difficult to remove the support material, just because the layers don't have very much to hold on to.
But they're reasonably strong, removing the support material was a bit tricky, but I managed to keep everything in one piece.

The standoffs also worked well enough, there still is some flex if I push hard enough. But I use gChocs with O rings, so during use I never apply that much force.

Final issue

PCB mount too tight
PCB mount tolerances were a bit too tight

The only thing that didn't fit perfectly was the spacing. The nice!nano's PCB is 1.6mm thick, which is what I used in Fusion360.
But the tolerances were a bit too tight and getting the MCU in was rather tricky, especially since the top side has some incredible tiny SMD stuff on it.

For the final print, I'll give it another .3mm of clearance, just so the MCU fits inside easily.
I'll use some double sided tape to fill some of the excess space, and on top of that it'll help keep the controller in its position.

Endresult

Now onto the final print. I'll use Jake3D's Yellow PLA this time, to match my MT3 Serika set. Always have some Serika on the macropad and on one of my flavor of the month keyboards.
Another full-on black keyboard would be boring, so yellow gives the build a bit of color.

Power Switch

Mounting the power switches was pretty simple with the design I put into the CAD.

Power switch mounting
Press the switch in and melt the pins down

The print itself printed well, but the perimeters aren't that clean. It's not a huge issue around the switches, but it's visible around the power switch.

Perimeters of the print
Did not print cleanly, but usable

On top of that, the plate dimensions could've still been a bit larger. The plate wiggles around .8mm if it's not screwed in.
It's not an issue once it's screwed down, but there is still a visible tiny gap between the plate and the alu frame.

Pinout issue

Like always, one tiny detail is off. This time it's the pins on the left side.
Didn't think too much about the fact that the MCU on the left side is flipped 180deg, which meant the reset pins weren't accessible, and some of the row pins were hidden underneath some plastic as well.

Got my trusty 3d modeling tool and melted some of the plastic away, it's now usable, so all good.

But it means the CAD design needs some minor changes.

Hand wiring

The Microdox pinout

All the improvements I made to the Microdox didn't change anything fundamentally.
I can reuse the old firmware by maintaining the wiring of the original PCB.

To do that I need to figure out how the original is wired, in ZMK that's fairly easy.
Each keyboard is a so-called shield, if we open the Microdox-folder we'll see a bunch of config files. Somewhere in there the pins are buried.

The microdox.dtsi contains the rows and the diode direction.
The microdox_left.overlay and microdox_right.overlay contain the cols for each side.

The pins within ZMK are not the ones we'll find on the controller's pinout. ZMK adds this layer of abstraction for each controller, that way shields and boards (controllers) are independent.

To get the actual pin numbers we'll need to check the nice!nano config files, which is the same as a Pro Micro since it's designed to be a wireless drop-in replacement for it.

But that isn't the last step, the labels on the nice!nano itself aren't the Pro Micro ones, for that we'll need to reference the nice!nano pinout schematics.

Left side

ZMK Pin Pro Micro Pin Nice!Nano Pin
Row 1 16 D16 010
Row 2 10 D10/A10 009
Row 3 8 D8/A8 104
Row 4 9 D9/A9 106
Col 1 21 D21/A3 031
Col 2 20 D20/A2 029
Col 3 19 D19/A1 002
Col 4 18 D18/A0 115
Col 5 15 D15 113

Right side

ZMK Pin Pro Micro Pin Nice!Nano Pin
Row 1 16 D16 010
Row 2 10 D10/A10 009
Row 3 8 D8/A8 104
Row 4 9 D9/A9 106
Col 1 15 D15 113
Col 2 18 D18/A0 115
Col 3 19 D19/A1 002
Col 4 20 D20/A2 029
Col 5 21 D21/A3 031

With those tables, we have everything we need to know for the soldering.

Wiring schematics
Wiring schematics

Soldering

Any wire will do the job, I gave bare copper wire a shot this time around.
Always felt like stripping the insulation is anoying since I'd sometimes cut too deep and tear the wires apart.

But the solder wouldn't stick to the wire, even after roughing up the surface.
That's why I went back to normal 24awg wires after doing the rows. Only this time I used a xacto knife, did a tiny cut and then used my finger nail to expose a few mm of wire.
Worked better than using a wire stripper.

Diodes soldered
All diodes soldered to the switches in one direction
The final mess
The final wiring, with plenty of slack
830mAh battery taped to the case
830mAh battery taped to the case

Result

The finished Choc Microdox
The finished Choc Microdox
Next to MT3 Serika
Next to MT3 Serika
Comparison to the stock plate
The new plate compared to the original one

My Microdox now is a combination of the things I liked about other keyboards:

  • Zen's Choc spacing
  • Draculad's stagger
  • Microdox Bud case with a decently sized battery
  • easily accessible power switch
  • plate color goes well with my MT3 Serika set

Files

For anyone interested, here are the Fusion 360 and .STL files

Fusion 360 file
Fusion 360 file
STL file
STL file