Firmware and PCB files for an ESP32-S3 sim-racing button box with five rotary encoders, capacitive touch on encoder/buttons, two ST7789 displays, MCP23017 button/LED expansion, MPR121 touch sensing, WS2812 status LEDs…
Controller is an open-source printed circuit board by Hartmannlight, from the Hartmannlight/Buttonbox repository on GitHub. It is a 2-layer board of 100 × 100 mm with 66 parts on 103 nets, routed with 987 tracks and 65 vias.
It is built around the ESP32-S3-DEVKITC-1-N8, DS18B20 and MPR121QR2, with the MCP23017-E/SS and PN2222A among its other parts. Its parts include 21 resistors, 7 capacitors, 6 transistors, 5 ICs and 5 switches. It belongs with the ESP32 boards of this library.
Firmware and PCB files for an ESP32-S3 sim-racing button box with five rotary encoders, capacitive touch on encoder/buttons, two ST7789 displays, MCP23017 button/LED expansion, MPR121 touch sensing, WS2812 status LEDs, DS18B20 temperature input, and a disabled buzzer diagnostic stub.
Repository layout
text
src/
app/ Firmware application helpers and diagnostics
config/ Hardware pinout and device addresses
domain/ Hardware-independent events and device state
hal/ Arduino/driver-facing hardware adapters
pcb/
ButtonBox/ Encoder/display board KiCad project
Controller/ Controller board KiCad project
scratch/ One-off hardware analysis scripts
Firmware status
The firmware is currently a hardware diagnostic build, not a finished sim-racing HID profile. It boots the ESP32-S3, scans I2C, initializes both displays, reads encoders/buttons/touch, drives diagnostic LEDs, and renders current state on the displays.
Known hardware items still need bench verification:
FFC orientation and all 30 continuity mappings.
MPR121 address and touch thresholds for the real metal controls.
MCP23017 button/LED mapping against the assembled PCB.
GPIO0 boot behavior with DS2 backlight.
Buzzer circuit. Firmware intentionally keeps it muted until the hardware is verified.
Build
Install PlatformIO, then run:
powershell
platformio run
Upload to the connected ESP32-S3:
powershell
platformio run --target upload
Open the serial monitor:
powershell
platformio device monitor
Serial speed is 115200.
Hardware notes
The authoritative pin constants live in src/config/HardwareConfig.hpp. The longer hardware handover is in KLX_ButtonBox_Firmware_Handover.md; treat it as a verification log and update it when a measurement on the real device contradicts an assumption.
It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Controller use?
66 parts, built around the ESP32-S3-DEVKITC-1-N8, DS18B20, MPR121QR2 and MCP23017-E/SS. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Controller KiCad files?
From the Hartmannlight/Buttonbox repository on GitHub, at the commit this page was made from: the board is pcb/Controller/Controller.kicad_pcb and its schematic pcb/ButtonBox/ButtonBox.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Controller design in my own project?
Its repository states no licence, so its author keeps all rights: ask Hartmannlight before reusing the design.
Firmware and PCB files for an ESP32-S3 sim-racing button box with five rotary encoders, capacitive touch on encoder/buttons, two ST7789 displays, MCP23017 button/LED expansion, MPR121 touch sensing, WS2812 status LEDs…
Laboratorio personal de proyectos, ejemplos y diagramas realizados con mi ESP32 cuya base principal es Rust orientado a su versión STD. Abarcando desde lo más simple hasta proyectos ligeros de IoT.
This study extends an existing multi-horizon hazard classification framework—originally developed for NASA 18650 cells using Histogram-based Gradient Boosting (HGB)—to three additional datasets (CALCE LCO/CX2, Oxford…
Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…