I’ve recently started building the final prototype revision of micropad. Since the last post, I’ve been able to:
- Finish the transition to a USB-C connector
- Get the case in good alignment, including other minor mechanical changes
- Fix top-plate buckling
.
.
.
Mechanical Fixes
I fixed the top-plate buckling issue, by including 2 different standoff sizes that the PCB is mounted to. This increased the overall macropad height, but gives the board enough clearance for a completely level top-plate mount.
I also changed the revision 1 screw fasteners from M2 to M3. M3 fasteners are much easier to find and purchase, and I wanted these to be easily repairable if fasteners are ever lost.
Part of what delayed this project’s finalization was waiting for my Prusa Mini+ 3D printer to arrive:
.
Having a 3D printer at home allowed me to iterate on case tweaks really fast, and get all the case tolerances worked out. It was also a fun multi-week assembly that my oldest son helped with, which made for great fun!
Firmware
On the firmware side: There’s still a few blocks of unsafe Rust in the
firmware. Most of this is caused by needing static mutable references
to peripherals for interrupt handling, but I was able to slim down the
unsafe blocks by wrapping more global peripherals in Mutex<RefCell<T>>
types than before. I ended up not using RTIC, since my firmware size was
already at the upper limit of the onboard 32K flash memory size, and
adding another dependency sent it over the edge. A few unsafe blocks
in a small firmware like this seems worth it to not have to buy a chip
with more onboard memory, or reduce other user-visible functionality.
I’ve made 4 of these micropads in my (really messy) workshop, to give to friends, and am excited with how they’ve turned out!
.
.
.
As always, the full source for micropad is available from GitHub.