Forge a Sensor Node

WiFi CSI  ⚔  2.4 GHz mesh  ⚔  presence · motion · people-count

A whole fleet to choose from. Every board listens to 2.4 GHz WiFi Channel State Information — up to 114 subcarriers at ~100 Hz — and reports back to your RuSense server, where it surfaces under the Nodes tab once provisioned. Pick a board, plug it in, raise the sails.

⚖️ Legal & ethical use. RuSense senses presence and motion inside a space through WiFi. Only deploy it in spaces you own or have explicit permission to monitor. Monitoring a space without consent is illegal in most jurisdictions — treat it exactly like installing cameras: you need permission, and many countries also require visible signage that the space is monitored. We condemn any unlawful monitoring; you alone are responsible for complying with the laws where you deploy.

🛰️ Provision WiFi (do this after forging)

Forging erases the node's saved config, so it falls back to the wrong defaults and won't connect. Enter your 2.4 GHz WiFi and the RuSense server IP (your Ragnar box), then write it to the node. Works for both S3 and C6.

⚠️ Give each node a unique Node ID (1, 2, 3…). Two nodes sharing an ID collide, so only one shows up in RuSense.

📶 Channel: set the same fixed 2.4 GHz channel on every node — match your AP's channel (1, 6 and 11 are the non-overlapping ones). Leave it blank to auto-detect from the AP, but a fixed channel keeps the fleet's clocks in sync and stops fusion dropping offline.

📡 Point every node at the same WiFi access point on one fixed 2.4 GHz channel. If several routers or a mesh/extenders share one SSID, nodes latch onto different APs, their clocks can't sync, and sensing drops offline. Use a single AP (a dedicated 2.4 GHz SSID served by one router is ideal) and disable auto-channel.

⚠️ Don't mix S3 and C6 in one mesh. Pick a single chip type and flash every node the same — the two capture different CSI widths, and the server's multistatic fusion needs them identical. A mixed fleet breaks fusion (you lose accurate people-count, positioning, pose & vital-signs). All-S3 is recommended; choose C6 only if you want Wi-Fi 6 — and then make them all C6.

📡 ESP32-S3 CSI Node (pick your board)

Before the forge fires
  1. Close Arduino IDE, Serial Monitor, or any other app holding the port
  2. Use a data-capable USB-C cable (charge-only cables are runes that do nothing)
  3. Click Forge and pick USB JTAG/serial debug unit from the port list
  4. If the board isn’t spotted, hold BOOT while tapping RST

🛰️ ESP32-C6 CSI Node (Wi-Fi 6 · the scout)

RISC-V @160 MHz, 4 MB flash, dual-band Wi-Fi 6 (802.11ax) and 802.15.4. The research target — HE-LTF subcarrier tagging and a wider channel view for experiments. Same CSI-node firmware, tuned for the C6 radio.

Before the forge fires
  1. Close Arduino IDE, Serial Monitor, or any other app holding the port
  2. Use a data-capable USB-C cable (charge-only cables are runes that do nothing)
  3. Click Forge and pick USB JTAG/serial debug unit from the port list
  4. If the board isn’t spotted, hold BOOT while tapping RST
ESP32-C6 · 4 MB flash · Wi-Fi 6

📐 RoomScan Floor-Plan Tracer (Waveshare ESP32-S3-Touch-LCD-4B · 480×480 touch)

A handheld touchscreen floor-plan tracer for the Ragnar Coverage Heatmap. Sketch a room by tapping its corners on the 4″ panel, then place the access points Ragnar scanned — pushed to the device over USB — exactly where they sit. Sync the finished map (outline + AP positions) straight back into Signal Intelligence → Coverage Heatmap over the same USB cable. No blueprint required.

Before the forge fires
  1. Close Arduino IDE, Serial Monitor, or any other app holding the port
  2. Use a data-capable USB-C cable (charge-only cables are runes that do nothing)
  3. Click Forge and pick USB JTAG/serial debug unit from the port list
  4. If the board isn’t spotted, hold BOOT while tapping RST
ESP32-S3 · 16 MB flash · 8 MB PSRAM · 480×480 touch

📟 CYD Hybrid Node (ESP32-2432S028R · 2.8″ Cheap-Yellow-Display touch)

A cheap 2.4 GHz sensor with a touch dashboard that rides along with a Ragnar Pi. It shows Ragnar’s live status on-screen, triggers a few allowlisted actions, and sniffs WiFi + BLE with its own radio — reporting the counts home. The default build is USB-cabled: flash it, plug it into the Pi, and flip on the USB-serial bridge under Ragnar Mesh → CYD Nodes. No WiFi, no token.

ESP32-WROOM-32 · 2.8″ ILI9341 240×320 · resistive touch

📡 Skald’s Ear (serial monitor)

Open a browser-based serial monitor for any forged CSI node. Default baud is 115200. On boot the node announces itself, then emits CSI capture rate and status lines — handy for confirming packets-per-second before you provision the node to your RuSense server.

Web Serial only sails in Chromium-based browsers (Chrome, Edge, Opera) on desktop. Firefox and Safari are unworthy ships for this voyage.