A physical Monza circuit model that uses addressable LEDs to show driver positions in real-time.
Hi everyone! I’ve been working on a standalone F1 track display and wanted to share the technical side of the build, as requested by the community rules.
The Concept:
A physical Monza circuit model that uses addressable LEDs to show driver positions in real-time.
The Hardware Stack:
MCU: ESP32-WROOM. Chosen for its dual-core capabilities and reliable Wi-Fi stack.
LEDs: WS2812B (144 LEDs/m).
Power: 5V/2A external supply with a shared ground to the ESP32 to prevent flickering and handle peak brightness.
Software Architecture (Why Go?):
Most DIY projects use Python or Node.js, but I went with Go (Golang) for the backend:
Concurrency: Using Goroutines to fetch and process telemetry data for 20 cars simultaneously is incredibly efficient.
Low Latency: I need the LED update to be as close to the live broadcast as possible.
Communication: The backend processes the API data and sends it to the ESP32 via WebSockets.
Engineering Challenges & Solutions:
Mapping GPS to 1D: The telemetry provides coordinates, but my track is a linear LED strip. I had to write a custom interpolation script to map those coordinates to specific LED indices.
Smooth Movement: To avoid "teleporting" cars, I implemented a simple transition logic so the LEDs fade/move smoothly between positions.
Power Management: I faced some voltage drops on the strip, so I had to add power injection points to maintain color consistency across the whole circuit.