• First the PTH version with Pi Pico

    DailyDuino05/10/2026 at 11:52 0 comments

    A few days ago, I was recommended a video by Moby Pixel on YouTube where he built a custom MIDI macropad for music composition. It looked like a pretty cool project, and I immediately wanted to build one for myself but not for music, but to automate a couple of on-demand tasks for my day job as a software developer.

    I know there are plenty of great, fairly priced macropads available on AliExpress, Tindie, and Lectronz. However, I want to get back into PCB design, as it has been eight years since I last designed a professional board.

    I’m also a huge Halo fan. I want my desk setup to feature a Master Chief color scheme, and I want this new macropad to perfectly match my Master Chief controller holder.

    While I loved the simplicity of Moby Pixel’s design, I couldn’t find a cheap 4×4 mechanical switch PCB to use for prototyping. That inspired me to build my own.

    With this project, I have a few specific goals:

    • Design a PCB where mechanical switches can be directly soldered.
    • Design a PCB with hot-swap sockets for mechanical switches.
    • Design a PCB featuring both hot-swap sockets and RGB LEDs.
    • Explore and experiment with QMK and ZMK firmwares.

    Through these iterations, I will be packing more components onto a 2-layer PCB, evolving the project from a basic USB HID macropad into a fully featured version with Bluetooth, HID, and LED support. Finally, I will be stepping away from Eagle to use EasyEDA for the design to see how it performs.

    The Design

    There are a couple of key differences between Moby Pixel's project and mine. First, he uses a dedicated GPIO pin for every switch, whereas I will be using a keypad matrix. Second, his design integrates both the switches and the microcontroller onto a single PCB. In my version, I will design a separate PCB for the microcontroller. This modular approach will allow me to easily swap out microcontrollers to experiment with different firmwares.

    Schematic

    In the key matrix i added external pull-ups and switch the rows and columns. this is how the schematic looks.

    The bill of materials is pretty simple

    ComponentCount
    1N4148 Diode (SOD-123)16
    Mechanical Switch of your choice16
    10K Resistor (0603) (optional)4
    10 Pin 0.1″ Header Pins1

    PCB Layout

    The PCB is 82.8mm x 82.8mm and i want to keep the distance between the switchers small so that it will ergonomic and low profile.

    Finally, I was happy with my design. It took me a whole of 2 hours to design it and now i have to send it for fabrication. It was pretty easy to order PCBs from easyEDA. I just had to click one button and the PCB design was sent to JLCPCB.com and form there it was very easy and cheap to order the PCBs. I was not sponsored by JLCPCB. *cough *cough please sponsor thanks.

    Assembly

    I soldered the diodes using a soldering iron and it took me 10 minutes to do that. I soldered on the resistor for pull ups but later removed them because i wanted to use the internal pull ups of the RP2040.

    Now for the mounting plate. I designed it using fusion360 and printed it on my 3D printer. The choice of color on this is not so great.

    Next, I snapped the mechanical blue switches into place on the mounting plate and it snapped perfectly into place. Nice.

    Finally I mounted and soldered the PCB in the top mounting plate with the switches.

    Okay, here's where I messed up. I should have also ordered the bottom PCB with a microcontroller but I had to work with what I had on hand for testing the prototype. So, I soldered the Pi Pico i had which has the RP2040 microcontroller.

    I connected the macropad to pi pico using the following pin configuration

    Macro Pad PinsRP2040 GPIO
    1 (COL1)GP9
    2 (COL2)GP8
    3 (COL3)GP7
    4 (COL4)GP6
    5 (ROW1)GP5
    6 (ROW2)GP4
    7 (ROW3)GP3
    8 (ROW4)GP2
    9 (VCC)
    10 (VCC)

    Now that i have connected everything, I plugged in the Pi Pico to my PC and it showed up as a mass storage device.

    Software

    I had the sweet temptation of writing the software using...

    Read more »