My awesome macropad!
Hardware- 3 Devlogs
- 2 Total hours
A custom 3x3 HackPad
A custom 3x3 HackPad
Status: CAD Complete | Ready for Slicing & 3D Printing
Finally completed the custom enclosure for HackPad1.
The enclosure is a simple two-piece design that houses the 9-key switch matrix, OLED display, rotary encoder, and the USB-C microcontroller. Since this was my first proper CAD project in Fusion 360, I spent a good amount of time understanding the workflow while designing it.
The biggest issue I faced was creating the top plate.
Fusion 360 kept selecting the PCB and switch bodies instead of the sketch, making it difficult to select the regions between the switches for extrusion.
To work around this, I first created a solid 1.5mm plate covering the entire top. Then I turned the sketch back on and used a -1.5mm cut extrusion to create all nine switch cutouts. This approach worked well and saved a lot of time.
Next, I worked on the USB-C opening.
I projected the USB connector onto the back wall and added some clearance so that different USB-C cables would fit comfortably.
While checking the design, I realized the back wall was too thick. A standard USB-C cable wouldn’t be able to fully connect because it would hit the plastic before reaching the port.
To fix this, I created a recessed pocket around the USB opening, reducing the wall thickness only in that area. This allows the cable to plug in properly while keeping the rest of the enclosure strong.
Once everything was in place, I saved the project as a Standard Design and exported both the top plate and bottom enclosure as mesh files for printing.
Unfortunately, I couldn’t track today’s work on Hackatime because I couldn’t find a Hackatime extension for Fusion 360.
Although today’s work won’t appear in my Hackatime stats, it took a considerable amount of time. Since I’m completely new to CAD and Fusion 360, a large part of the process involved learning the software, understanding different tools, and refining the design through multiple iterations.
Alright, so the custom macropad PCB is finally done! We finished routing the entire board, fixed all the DRC errors, and exported the final manufacturing files. Huge W for the team.
First, one painful confession.
I completely forgot to start the KiCad WakaTime plugin before working. 😭 Every single hour spent routing traces, fixing footprints, solving DRC errors, and figuring things out… none of it got tracked. My stats are absolutely gone.
Anyways, here’s how everything went.
After finishing the schematic, it was finally time to route the PCB.
Since the LEDs draw a decent amount of current, I couldn’t just use the default trace widths everywhere. So I created custom Net Classes in KiCad.
Routing itself took way longer than I expected. Some traces were straightforward, but others needed multiple attempts before everything fit properly without creating new issues.
Once the routing was done, I ran the DRC check.
That’s when KiCad decided to throw a whole list of errors at me. 😭
Most of them were Board Edge Clearance Violations because a few traces had gone too close to the Edge.Cuts boundary.
So I went through them one by one, removed the problematic traces, routed them again properly, and kept checking until every single error disappeared.
Definitely one of those “fix one thing, two more things break” moments.
Next came the ground plane.
I added a Copper Pour on the bottom layer (B.Cu) so that all the GND connections could be made properly.
Funny thing is, I first clicked on the Non-Copper Zone tool by mistake and spent a couple of minutes wondering why nothing was happening. 😭
After selecting the correct tool, the entire bottom layer got filled with ground copper.
That created another issue though.
Some traces were too close to a few switch pads, so the copper couldn’t connect properly and KiCad started showing Thermal Relief errors.
A little bit of manual routing later, I created enough space, refilled the copper, and everything connected perfectly.
A custom PCB without custom artwork doesn’t feel complete.
Adding text was easy, but adding our logo took way more effort than expected.
Here’s what went wrong:
.sym) instead of a footprint (.kicad_mod).So I resized it again using the Bitmap Converter, opened it in the Footprint Editor, and copied the artwork directly onto the PCB.
Bit of a jugaad solution, but if it works, it works. 😌
Devlog #1
Macropad Schematic Finally Coming Together!Alright, so here’s the update on my 3x3 macropad project for the upcoming hardware event. This is literally my first electronics project, so I honestly expected the KiCad schematic to be a complete mess with wires going everywhere. Surprisingly, I managed to keep it clean and organized, and it actually looks pretty professional.What I’ve finished so far:3x3 Switch Matrix:Instead of using nine separate GPIO pins for all the switches, I made a proper switch matrix. I connected the MX-style switches using 1N4148 diodes to prevent ghosting. I also used Global Labels for the rows and columns, so the schematic stays clean without random wires crossing everywhere.The Brain (Seeed XIAO RP2040):I added the Seeed XIAO RP2040 and mapped the switch matrix to it. The columns are connected to D0, D1, and D2, while the rows are connected to D3, D6, and D7.OLED Display:I finished wiring the 0.91-inch OLED display. I made sure the pin order matches the actual module (GND - VCC - SCL - SDA) so I don’t accidentally mess it up while designing the PCB. It’s powered using 3.3V, and the I2C lines (SCL and SDA) are connected to D4 and D5.What’s left to do:2 EC11 Rotary Encoders:I still need to add both rotary encoders to the schematic. I’ll map their A/B channels for things like volume and brightness control, along with the push-button pins.20 SK6812 MINI-E RGB LEDs:Next is the RGB lighting. I need to daisy-chain all the LEDs properly and connect the data line to D8.So yeah, the main functionality is pretty much done. The switch matrix, RP2040, and OLED are all sorted. Once I finish adding the rotary encoders and the RGB LEDs, the schematic will be complete and I can finally start routing the PCB.