Projects / FRC hardware / 2026

Driver station button board

A custom PCB for the driver station with 24 lit buttons, built around an ESP32-S3.

I wrote the board's firmware.

  • C
  • ESP-IDF
  • ESP32-S3
  • TinyUSB
  • Python

How it works

  • Three PCA9535 I2C IO expanders read the buttons and write the button lights
  • The USB-OTG port (TinyUSB) makes the board appear as a HID gamepad, so the FRC Driver Station reads it as a normal controller

The interesting problem

Sending data from an FRC robot to a HID device is undocumented, so the LEDs could not be driven the normal way.

The solution

A Python program on the driver station laptop connects to the robot over NetworkTables and forwards LED state to the ESP32 as UART commands over a USB-serial link.

Reliability

  • Automatic serial reconnect if the board is unplugged
  • A status LED for the USB connection