Skip to the content
PCBKitNew board
2 layers100 × 100 mmButtonBox, the printed circuit board in 3D

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…

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
10
Nets
34
Pads
99
Tracks, vias
253, 19
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
6 Jul 2026
Updated
6 Jul 2026

Overview

ButtonBox 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 10 parts on 34 nets, routed with 253 tracks and 19 vias.

Its parts include 5 switches and 2 connectors.

README

README.md

KLX ButtonBox

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.

Parts

10
QtyValueFootprintReferences
5RotaryEncoder_Switch_MPRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_MountingHolesSW1, SW2, SW3, SW4, SW5
2~Aliexpress:SPI_ST7789_76_284_LCD_DisplayDS1, DS2
1Conn_01x02Connector_JST:JST_EH_S2B-EH_1x02_P2.50mm_HorizontalJ1
1Conn_01x30_MountingPinConnector_FFC-FPC:Molex_200528-0300_1x30-1MP_P1.00mm_HorizontalJ3
1LOGOLOGOG***

Questions

How big is the ButtonBox PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ButtonBox use?

10 parts. 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 ButtonBox KiCad files?

From the Hartmannlight/Buttonbox repository on GitHub, at the commit this page was made from: the board is pcb/ButtonBox/ButtonBox.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 ButtonBox design in my own project?

Its repository states no licence, so its author keeps all rights: ask Hartmannlight before reusing the design.

More from Hartmannlight/Buttonbox

1
  • 2 layers100 × 100 mmController, the printed circuit board in 3D

    Controller

    Hartmannlight/Buttonbox

    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…

    66 parts

Similar boards

  • 2 layers57 × 55.2 mmLogicAnalyzer, the printed circuit board in 3D

    LogicAnalyzer

    gusmanb/logicanalyzer

    24 channel, 100Msps logic analyzer hardware and software

    10 parts5.1kGPL-3.0
  • 2 layers32.2 × 15.4 mmProtector, the printed circuit board in 3D

    Protector

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    10 parts4.3kMIT
  • 2 layers26 × 18 mmConn, the printed circuit board in 3D

    Conn

    yaqwsx/KiKit

    Automation tools for KiCAD

    10 parts2.1kMIT
  • 2 layers44.3 × 30.5 mmLime2-SATA RevA, the printed circuit board in 3D

    Lime2-SATA RevA

    OLIMEX/OLINUXINO

    OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C

    10 parts1.5k
  • 2 layers17.8 × 43.2 mmNano Adapter, the printed circuit board in 3D

    Nano Adapter

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    10 parts1.1kGPL-3.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    10 parts1kGPL-3.0