← Portfolio

MECHROPAD

A 10-button macropad with a 3D printed enclosure — custom CircuitPython firmware, up to 200 mappable inputs, and a hidden USB drive that only exposes on a deliberate button chord.

  • 10 modes × 2 layers = up to 200 mappable inputs on 10 buttons
  • SSD1306 OLED display with mode/layer feedback
  • Runtime-configurable via CSV — hardware-agnostic pin mapping
  • Hidden USB drive: only exposed by holding a two-button chord, state persisted in NVM

MECHROPAD final build

Details

Firmware

CircuitPython firmware for the RP2040, structured in a clean layered architecture: hardware input drivers → event processing and action dispatch → output rendering (OLED display, HID, LED).

The pad has ten buttons, a toggle, and an SSD1306 OLED display. Short presses emit HID keyboard output to the host; long presses switch modes; the toggle selects the active layer per mode. Ten modes with two layers each yields twenty configurable input layers — up to two hundred mappable inputs on a ten-button device.

Button-to-GPIO mapping is loaded at runtime from a CSV config file, making the firmware hardware-agnostic. Pin layout, labeling, and HID mapping all derive from the config with a sensible default fallback.

A deliberate security feature: the CIRCUITPY USB drive is hidden by default. It can only be exposed by holding a specific two-button chord until an OLED confirmation appears, after which the board reboots and exposes the drive for a single session. Power-cycling hides it again. The enable flag is stored in NVM.

Hardware Design

Early draft

The enclosure was designed from scratch through multiple prototype iterations, resolving structural and tolerance issues before arriving at the current build. Key design decisions:

  • Armor panel system covers internal structure and fasteners without compromising serviceability
  • Removable back panel provides full internal access for repair and modification
  • All structural components are 3D printed in PLA

In progress

← Portfolio