Flockinator - a microscope for emergent behaviour

Build one panel node

Think of one node as one rescue signpost that can light up, make sound, and remember what it showed. Build one well, and you can repeat it to make a wall that helps teams practice rescue signals.

This guide builds a single working node. Read it end to end before you plug anything in.

What One Node Is

One node is a small controller board paired with one square light panel.

The controller handles the picture, sound cues, and local sensing. The panel is what people across the room see. Each node also has its own memory card, so it can work as part of a larger shared display later.

In the full system, many panels join to show a shared virtual world for practice quadcopter visualisation. The scored research results are host replay, not measured on the panel itself.

Parts You Need

One complete node uses the parts below. Use exactly these types. For sellers, cable lengths, and card size, check the repo docs.

PartVerified spec
Controller boardWaveshare ESP32-S3-RGB-Matrix, N32R16, 32MB flash, 16MB PSRAM
Light panelP2.5 64x64 RGB LED panel, 160 x 160 mm
StoragemicroSD card, one per node
Sensing and timekeepingonboard mics, SHTC3 temp/humidity, QMI8658 IMU, PCF85063 RTC
Sound and housingperimeter speakers in printed carriers; Bambu PLA diffusers, carriers, mounts
Bench powerMEAN WELL LRS-350-5, 5V

Related system parts, not part of this one-node build:

CAD finished models for printed parts are in cad/.

Tools

For software, use Python via uv only, plus PlatformIO for the node build. The Korvo hub uses pinned ESP-IDF 6.1.

For hand tools, wire, and bench setup, check the repo docs. Do not substitute a different supply voltage.

Assemble the Node

Work with power off and give yourself clear table space.

  1. Prepare the printed parts. Find the diffuser, speaker carriers, and mounts for one node. Check the repo docs for which finished model in cad/ matches your panel.
  2. Fit controller to panel. Place the Waveshare board at the back of the 160 x 160 mm panel in the orientation shown in the docs. Check the repo docs for connector seating and fastener positions.
  3. Insert the microSD card. Use one card per node. Push it fully into the node slot until it clicks. Check the repo docs for formatting and file layout.
  4. Fit the speaker carriers. Place the perimeter speakers in their printed carriers around the edge. Check the repo docs for routing so wires stay clear of the panel back.
  5. Check the fit. The panel should sit flat, the diffuser should sit even, and nothing should press on the controller. Check the repo docs for clearance photos.

Leave power disconnected until the power check below is done.

Power Safety

This system is 5V only.

Flash Node Firmware

Flashing loads the node program onto the controller.

  1. Install Python tooling via uv only. Check the repo docs for the exact setup sequence.
  2. From the repo root, run the node build:

```

pio run --project-dir firmware/node-platform -e waveshare-s3

```

  1. Connect the Waveshare board over USB and flash using the documented upload target. Check the repo docs for the upload and monitor commands.
  2. Wait for a clean finish with no errors before unplugging.

Notes:

Provision Identity

Each device gets its own private identity so logs and later reviews can tell nodes apart.

  1. Run the provision tool privately, one device at a time:

- tool path: tools/node-commissioner

  1. Follow the prompts to create the per-device identity. Check the repo docs for where identities are stored and what to keep private.
  2. Label the physical node to match its identity. Check the repo docs for the naming pattern.

Do not copy one node's identity to another node.

First-Light Test: READY

This confirms panel, controller, card, and power are working together.

  1. Confirm wiring matches the 5V diagram. Check the repo docs for the final checklist.
  2. Switch on the 5V supply.
  3. Watch the 64x64 panel. A good first build shows READY.
  4. Listen for speaker output if your test image enables sound. Check the repo docs for which test enables audio.
  5. Switch off, then add the diffuser and recheck brightness. Measure at brightness ceiling again after any housing change.

If you do not see READY, leave power off and use the next section.

Common Failures

Fix one thing at a time. For exact photos and meter points, check the repo docs.

Scaling From 1 to 16

Once one node reliably shows READY, you can repeat the build to form a panel wall.

Source in the repo