Meridian

Meridian

Keep the time · show it · drive it

Three boards that talk to each other: a clock disciplined by GPS to the far side of a microsecond, a 64×32 LED panel, and a touchscreen that drives them both. The panel finds the display by broadcast rather than by address, so either can move networks without being reconfigured. The clock joins as a time source.

No account, no server, no cloud. Everything happens on your own network, and the boards keep working when it is not there.

The devices

The Clock

GPS-disciplined precision clock on a Freenove ESP32-S3, 16 MB. Displays YYYY.MM.DD.HH.MM.SS.ffffff across chained 7-segment modules — with as many fractional digits as the hardware can honestly defend, and none that it can't. 1PPS times the second; NMEA or NTP names it, and those two jobs never mix.

The Display

64×32 HUB75 RGB panel driven over DMA, ESP32-S3 with 16 MB of flash. Messages, animations, drawings and images from a microSD card. It runs its own access point and joins a known network at the same time, so it keeps working whether or not there is a LAN in range.

The Panel

5″ 800×480 LVGL touchscreen on an Elecrow CrowPanel ESP32-S3. The controller: it drives The Display over HTTP and reads the clock's offset, round-trip and lock state for accurate timestamps. 4 MB of flash, and the partition table has no slack left in it at all.

Android apps

The Display — download the APK
—
The Clock — download the APK
—

Sideload them: you'll need to allow installs from your browser or file manager the first time. After that The Display's app updates itself — Setup → This app.

Firmware

There is no browser flasher here, on purpose. Three ESP32-S3 boards that look alike to esptool live on the same desk, and each device's own flasher checks the board's MAC address before it writes a byte — it refuses every board but its own, including one it has never seen. A browser flashing tool has no such guard, and the day it writes The Display's firmware onto The Panel is the day you find out. Use the flasher in that device's tools/ folder.

Each image is published with the SHA-256 the flasher checks against MANIFEST.txt before writing.

What you need