LED-BARt

A WiFi-connected LED bar display for the hackerspace.
Type a message in the web interface, and it shows up on the physical 5×7 pixel LED display.

LED-BARt demo
LED Bar Display

The bar was salvaged from outside a train station — one of those old departure/arrival displays. It found a new home at the hackerspace.

5×7 pixel dot matrix — 19 characters max width
Custom 5×7 bitmap font — embedded in both firmware and web preview
Shift register multiplexing — direct bit-banging on Arduino
12V input — internal stepdown to 5V
LED-BARt web interface
Web Interface

A static web interface that sends curl commands to the ESP32-C3 webserver. Features a pixel-perfect canvas preview using the same 5×7 font as the hardware. Only works on the hackerspace LAN.

Open Web Interface

If you're on the LAN, try it yourself:

curl -X POST http://ledbart.local/text -H "Content-Type: text/plain" -d "YOUR TEXT"
Wiring diagram showing ESP32-C3 connected to Arduino Uno via UART
Two-Chip Architecture

The LED bar runs on 5V logic, but the ESP32-C3 only outputs 3.3V. Rather than using level shifters, the work is split across two chips — the ESP32-C3 handles WiFi and serves the API, while the Arduino Uno drives the display at the correct voltage. They communicate over UART at 9600 baud:

Xiao ESP32-C3 — WiFi + web server (3.3V)
Arduino Uno — LED display driver (5V)
mDNS discovery — accessible as ledbart.local
ESP32-C3 Webserver

Runs on the ESP32-C3, accessible at ledbart.local on the hackerspace LAN. When text is received, it forwards it to the Arduino via UART TX. Also exposes a WebSocket on port 81 for streaming raw pixel data in real time.

POST /text — send plain text (max 19 chars), rendered with the 5×7 font
POST /pixels — send 190 hex chars (95 raw column bytes) for full pixel control
WS :81 — binary WebSocket, 95 bytes per frame
GET /log — recent activity log