Public Access
- ESP32 talks to the Nano on UART2 (GPIO 17 TX / GPIO 16 RX); Serial (USB) is now free for debug output and boot messages no longer reach the Nano - README: wiring table, actual schedule (clock from 08:00), TODO section for the rewiring Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
ESP32: controller
PlatformIO environments: esp32 (OTA) and esp32_usb (USB)
The ESP32 decides what is shown on the display. It never touches the panel itself. The
BROSE9323 driver is built with -D ESPSERIAL, so every GFX call is sent to the Nano over
Serial2 (UART2, GPIO 17 TX / GPIO 16 RX, 115200 baud). Serial (USB) is only used for
debug output. Wiring is described in the main README.
Files
| File | Contents |
|---|---|
main.cpp |
setup, OTA, clock / power logic, Home Assistant callbacks |
libs.h |
includes and global objects (display, MQTT, WiFi, pins, timezone) |
bitmaps.h |
1-bit bitmaps (Pikachu, thought bubble, Nintendo logo, ...) |
secrets.example.h |
template for secrets.h (WiFi and MQTT credentials, gitignored) |
Features
- OTA updates through ArduinoOTA. Hostname:
FlipDotDisplay. - OTA panic window: after a crash or watchdog reset, the ESP32 runs only the OTA handler for 15 seconds before it starts the main code. A firmware that crashes on boot can still be replaced over the air.
- NTP time with timezone
CET-1CEST,M3.5.0,M10.5.0/3(Europe/Amsterdam). - Home Assistant through MQTT (
home-assistant-integrationlibrary) with two switches:FlipDotDisplayClock: clock on, or the Nintendo logo when offFlipDotDisplayPower: turns the display off through the relay
- Relay on GPIO 13 switches the power for both the panels and the Nano.
LOWturns it on.- On: the ESP waits for the Nano's
READYmessage, at most 3 s (NANO_BOOT_TIMEOUT), before it sends frames. The relay stays on while it is needed; the ESP only waits when it actually switches the relay on. - Off: the ESP stops sending and releases its TX pin (
Serial.end()and the pin set to input). An idle UART line is high and would otherwise power the Nano through its RX pin.
- On: the ESP waits for the Nano's
- Status LED (built-in) blinks fast when WiFi is down and slowly when connected. It is off at night or when the display is powered off.
Schedule
| Time | Display |
|---|---|
| 08:00 – 17:00 | Pikachu and the clock, updated every minute |
| 17:00 – 22:00 | Yawning Pikachu and the clock |
| 22:00 – 23:30 | Clock shown only during the minutes :00, :15, :30 and :45; power is off in between |
| 23:31 – 08:00 | Screen cleared, power off |
Adding bitmaps
Convert an image with image2cpp to "Arduino code",
horizontal, 1 bit per pixel. Paste the array into bitmaps.h and draw it with
display.drawBitmap(x, y, bitmap, w, h, 1). The display is 84 × 19 pixels.