The panel interface, explained
Think of each panel as a rescue post on a hillside. In our test setup, a small flying camera spots clues and shares what it sees. Each physical panel shows what one member of that search team is doing and thinking, moment by moment.
The scored results you read about elsewhere come from host simulation replay, not from calculations on the panels themselves. The wall is a way to see the shared virtual world.
What one node is made of
Each node is the same:
A Waveshare ESP32-S3-RGB-Matrix board (N32R16, 32MB flash, 16MB PSRAM) driving a P2.5 64x64 RGB LED panel, 160x160mm. Each node also has its own microSD card, onboard mics, SHTC3 temperature/humidity sensor, QMI8658 IMU, PCF85063 RTC, and perimeter speakers in printed carriers.
The wider setup uses an ESP32-S31 Korvo board as controller/display, web host, planner sim, and learning lab, plus a LilyGo T5 4.7in ESP32-S3 handheld. Power is a MEAN WELL LRS-350-5 5V supply. Diffusers, carriers, and mounts are Bambu PLA prints — check the repo docs for print settings, with finished models in cad/.
How to read a single panel
Every 64x64 display keeps the same layout, so you only have to learn it once. For exact pixel maps and fonts, check the repo docs.
Top line: node id, from A1 to D4 across the 16-panel wall.
Second line: SIM label. This tells you the panel is showing a host replay, not live on-node sensing.
Middle: one large state word and simple animation.
Bottom or corner: battery indicator.
Small icons: sensor mode — IR / NV / CAM.
If you can read the middle word and the id, you have enough.
The six states, in plain rescue terms
- READY / REMOTE START
What you see: the panel holds at READY until the controller starts the run.
What it means: the team is at the trailhead, waiting for the go-ahead. Tied to the start/end slates described below.
- SCAN
What you see: a searching animation — check the repo docs for exact frames.
What it means: “I am looking around my area.” This is the baseline for all 15 pre-registered trust experiments.
- SHARE REPORT
What you see: the node shows it is sending what it found.
What it means: “I saw something and I am telling the team clearly.” This matches the clear-messages test condition, which reached 72.9% team success in host replay.
- CHECK VERIFY
What you see: the node shows it is pausing to cross-check.
What it means: “I heard a report, let me confirm before I act.” Here ‘verified’ means label segregation, not crypto proof. The system keeps messages with different labels separate so a bad report does not spread unchecked.
- DOUBT
What you see: the node flags uncertainty — check the repo docs for exact icon.
What it means: “This report looks damaged or does not line up.” This matches the corrupted-messages condition, which dropped to 33.6% team success in host replay.
- HOLD
What you see: the node waits quietly.
What it means: “I have nothing solid to share, so I will stay put rather than mislead.” This matches the silence/private condition, at 56.6% team success in host replay.
No planner has passed full gates yet. The states make that visible instead of hiding it.
Sensor modes: IR / NV / CAM
The small IR / NV / CAM marker tells you which camera view the visualisation is using for that moment:
- CAM: normal daylight view.
- NV: low-light view.
- IR: heat view.
These are animations on the shared virtual world plus panel wall. They show which sensor the simulated rescue flight is pretending to use. For exact animation patterns, check the repo docs.
How to read a wall of 16 at a glance
You do not read 16 panels word by word. You scan for pattern.
- Stand back and find the ids A1–D4. A-row is top, D-row is bottom.
- Look for the odd one out. Fifteen SCAN and one DOUBT means one member is unsure. Many HOLD means the team has gone quiet.
- Check the SIM labels and battery row. If SIM is on, you are watching replay. If a battery icon is low, ignore odd behavior from that node.
- Watch changes, not stills. SCAN → SHARE REPORT → CHECK VERIFY is healthy sharing. Sudden jumps to DOUBT across many nodes suggest a corrupted report is moving through the team.
The wall as one distributed display
At start and end, the 16 panels act as one big screen:
- Task slate: all tiles together show the task name and seed.
- FLOCK checksum + QR: the wall shows a short checksum and a QR code so a phone can capture exactly which run and dataset version this was. Datasets are hash-linked, redaction-scanned, and shareable.
- Whole-wall tiles: simple large patterns across all panels mark start, end, and scoring boundaries, so video of the wall can be lined up with sealed journals and scores.
The loop around this is always the same: flash firmware, run a seeded task, seal journals/scores, let multi-model review lanes critique, build new firmware, and re-run. Hypotheses are pre-registered and falsifiable, with held-out scoring, and failures are published.
Build notes, for reference: node build is pio run --project-dir firmware/node-platform -e waveshare-s3; handheld is lilygo-s3; Korvo uses pinned ESP-IDF 6.1. Python via uv only. Identity is provisioned per device privately with tools/node-commissioner. Models: Muse Wonder/Spark lanes build, review, and run assessors; SAM 3.1 tested; Muse Image illustrations.
Source in the repo
firmware/node-platform/— node display states, sensor animations, battery/id/SIM layouttools/node-commissioner/— private per-device identity provisioningcad/— finished models for diffusers, carriers, mounts- Check the repo docs for: exact 64x64 bitmaps for SCAN, SHARE REPORT, CHECK VERIFY, DOUBT, HOLD, READY/REMOTE START, IR/NV/CAM animations, slate/QR/FLOCK format, and the 15 experiment definitions and replay scores