ZMK Macro Key Pad featuring Cherry Mx switches, Custom PCB and Case designed using Altium + Solidworks
May 2024
INTRO
This project served to be a re-introduction into the world of PCB development. I wanted to create a functional 3x4 macro key pad that could enhance the user experience of my home setup. I was primarily inspired by the ocreebMk macro key pad design, to which I adapted it to use a Seeeduino Xiao as the main controller.
The keypad leverages a simple keyboard matrix with diodes to prevent ghosting for each keypress. It also features neopixel LEDs for backlighting and added depth in the design. A seeeduino Xiao is used as the primary controller, containing 11 GPIOs for all the necessary inputs.
The PCB employs a simple two layer design as there aren't excessive number of traces for this design. Most traces adopt a 1mil width with the exception of the 5V and 3v3 traces which are thicker, closer to 3 mil. I also made the bottom layer a GND mesh and the top layer a 3v3 mesh to reduce the number of traces that I had to make across the entire PCB layout.
I wanted to make the build as simple as possible. This meant using easy components like the seeeduino Xiao as my controller and using conventional keyboard routing methods like the keyboard matrix with diodes to prevent ghosting.
Since the board was designed using Altium designer, having a STEP file that I could design my case around was essential to the success of the design!
I chose to use JLCPCB as my PCB manufacturing, choosing a sleek white color in contrast the black casing that I hope the encapsulate my PCB with. All soldering and assembly was done myself.
One Simple Objective: Sleek and Clean.
Reflection
Originally I thought this project would be an easy 2 week prototype to build. Little did I realize the amount of mistakes I would also make on the way! I learned for the PCB dev to check larger components bit by bit for functionality so that I wouldn't suddenly discover hardware issues after assembling the entire PCB. Secondly, regarding part selection - it would've been wiser to do a little bit more research into the available controllers in order to leverage existing open source firmware from QMK, ZMK and KMK. However, I chose the SAMD21 Seeeduino Xiao, which I realized had a different CPU than the Seeeduino Xiao RP2040. This made it incredibly difficult to find resources to get myself started, forcing me to write much of my own custom firmware for the board, without being able to leverage most of the available ZMK features for RBG LEDS and encoders.
In general the lessons of this project have taught me two essential lessons:
1. Test earlier and in stages
2. Do just a little be more research into what other's have used and any supporting documentation for it.
That's all for this project! I'll probably look to expand out and try to make a corne ergonomic keyboard next time and apply what I've learned from this project!