Wi-Fi firmware for classic Pro-Lite LED marquee signs (<ID01> serial
protocol). A Wemos D1 Mini (ESP8266) + MAX3232 bridges the sign's RS-232
port to MQTT, an HTTP API, and a phone-friendly web UI with presets and
OTA updates. Turns a 20-year-old scrolling sign into a networked marquee —
no vendor software, no IR remote required.
(photo slot — installed sign + D1 Mini in place)
Stage 1: bench probe. The transparent host↔sign bridge sketch in
firmware/bridge/ is scaffolded and ready to flash. Nothing downstream is
trusted until <ID01><RST> produces CHECKING on the real sign (the
Stage 1 gate). Application firmware (MQTT / HTTP / UI) is held until that
gate passes.
- Sign: Pro-Lite Banner-Lite PL-BL v1.0, RG bicolor (red/green/amber)
- MCU: Wemos D1 Mini (ESP8266EX, CH340 USB-serial)
- Level shifter: MAX3232 (mandatory — sign TX is true ±12 V RS-232)
- Sign UART: bit-banged via
SoftwareSerialon D5 (GPIO14) = RX and D6 (GPIO12) = TX. The ESP8266's single hardware UART is already occupied by the CH340; software UART at 300/9600 baud is perfectly adequate for this protocol. - Power: ESP 5 V from the sign's internal 5 V PSU rail
Full pinout, wiring, and power warnings: hardware/README.md.
- MQTT (
sign/set/#, retainedsign/state/#, LWT onsign/availability) - HTTP API —
GET /msg?page=A&text=..., curl-trivial - Phone-first web UI with presets stored in ESP flash (LittleFS)
- OTA updates (browser
/update+ ArduinoOTA dev flow) - Cut from v1: timers UI,
<Gx>graphics editor, auth, HTTPS, multi-sign
Single internal state model; MQTT, HTTP, and UI are thin clients of one command handler. Web UI has no privileged path — it calls the HTTP API.
firmware/ arduino-esp8266 sketches (configure/make wrapper around arduino-cli)
web/ Web UI source (pre-flash inlining)
hardware/ JP3 pinout, MAX3232 wiring, power map, warnings
PROTOCOL.md <ID01> command table with verified-status column
Requires arduino-cli. No PlatformIO, no Arduino IDE.
cd firmware
./configure --port=/dev/ttyUSB0 # or COM8 on Windows, adjust as needed
make deps # one-time: installs esp8266:esp8266 core
make flash monitorRuntime baud switch in the bridge: send ~<baud>~ on the host (e.g.
~300~) to reconfigure the sign-side SoftwareSerial without a reboot.
Default sign baud 9600 8N1; host↔ESP console is 115200 8N1 (CH340).
MIT. Original project: https://github.com/OriginalOC/openmarquee.