Downloading the appropriate software to flash the Arduino wasn’t strait forward, but there are tutorials out there to get you through it so I’ll just give a few tips that I used to get it done.

Struggle #1: Compiling to a hex file. All the tutorials I found were on a on Unix, I primarily run Windows, and don’t have a running Unix machine at the moment.

Solution #1: I installed the Ubuntu subsystem in Windows. This allowed me to compile the firmware, but wouldn’t allow me to flash it to the Arduino, a limitation of running Ubuntu on Windows. I used a beta version of QMK Toolbox, a Windows GUI, to flash the Arduino.

UPDATE: https://docs.qmk.fm/#/newbs_getting_started

Their official documentation is actually great. Installing MSYS2 makes life a lot easier.

Struggle #2: Errors in the GUI. Apparently it’s due to an issue with the Arduino bootloader.

Solution #2: All hail Stack Overflow!!!

The official advice is to press and hold reset on the board, click upload, wait for the code to compile and for the status bar to say ‘Uploading…’ and then release the reset button on the board.

I did this a bunch of times until it worked. ^^^

Design and cut your own top plate

In honor of Boundary 4: KISS, I decided not to try and design my own layout, lets just see if I can get the job done first. 68keys.io supplied a matching PCB and top plate design that was pretty close to what I was looking for; Tenkeyless, qwerty, and arrow keys.

Here is where my problems began:

Problem #1: The tutorial suggests sending in your design to have a piece of aluminum cut, however after calling a few local places, and requesting a couple quotes online, I couldn't find a place that would cut my top plate for under $140, and that doesn't even include the bottom plate. That violates Boundary 3: Be Practical and Boundary 5: DIY.

Solution #1: There is a local Hackerlab with a CNC mill where I can cut my own aluminum. The membership isn’t cheap at just shy of $80/month, but its cheaper than paying someone else to cut my plate for me.

Problem #2: Apparently you need to take a series of classes before they allow you to use the CNC mill. I’m willing to do this, as this place is amazing, and I plan on keeping my membership and making good use out of these tools, however it will take time.

Solution #2: They have a laser cutter that can cut wood and only requires one class. As thin as this plate needs to be, I imagine I’m dangerously close to violating Boundary 2: Be Functional. However the plywood was cheap, so I’d only be out $10 if it didn't work out, and this fully supported Boundary 1: Beta Test.

Problem #3: Cherry MX style switches need a 1.5mm top plate to appropriately clip into. Wood at that thickness was definitely not going to be functional, so I tried a piece of 1/4 inch birch ply. The cut came out great, but the switches barely reached the PCB. The diodes I’d soldered on to my PCB kept the switch pins out of reach.

Solution #3: A little janky, but hey, Boundary 1. I soldered the diodes onto the other side of the PCB. I also used a router to cut some wood for pin clearance for the Arduino. It worked like a charm, I just hope it lasts.

Problem #4: The stabilizers didn’t have clearance…

Solution #4: Route…

Problem #5: Since the wood was thicker, the screws weren't long enough.

Solution #5: I got some longer screws (M3 x 8mm) and shorter standoffs (M3x5x8mm) to compensate.

Design your own PCB

I love the idea of fully customizing the layout of my keys, however Beta test, KISS, I used what was provided on 68keys.io.

I used JLCPCB, the price was pretty good, and their customer service was very responsive. Shipping was the most expensive part, so I ordered 5 boards to decrease the cost per board. My biggest mistake here was thinking I needed to order a stencil, this added $37 to my total cost. DO NOT ORDER A STENCIL. I’ll subtract that cost from my price breakdown.

Problem #6: I’m actually not sure if this is attributed to the PCB, or the top plate design, but they didn’t match up perfectly.

Solution #6: This is my beta test.. so.. I really had to force a bunch of the keys in. In my next run I may try to tweak some of the settings in the design tool, as this did cause some of my keys to not lay perfectly flat, which is what led to most of my final build problems.