You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A single ESP32-S3 board (~$9) captures WiFi signal data 28 times per second and streams it over UDP. A host server can visualize and record the data, but the ESP32 can also run on its own — detecting presence, measuring breathing and heart rate, and alerting on falls without any server at all.
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source esp32
1022
+
# 3. (Optional) Start the host server to visualize data
1023
+
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source auto
1024
+
# Open http://localhost:3000
1012
1025
```
1013
1026
1014
-
**Edge Intelligence (v0.3.0-alpha only):**
1027
+
### Multi-node mesh
1015
1028
1016
-
The alpha firmware adds on-device CSI processing — the ESP32 analyzes signals locally and sends compact results instead of raw data. Disabled by default (tier 0) for backward compatibility.
1029
+
For better accuracy and room coverage, deploy 3-6 nodes with time-division multiplexing (TDM) so they take turns transmitting:
1017
1030
1018
-
| Tier | What It Does | Extra RAM |
1019
-
|------|-------------|-----------|
1020
-
|**0**| Off — raw CSI streaming only (same as v0.2.0) | 0 KB |
Nodes can also hop across WiFi channels (1, 6, 11) to increase sensing bandwidth — configured via [ADR-029](docs/adr/ADR-029-ruvsense-multistatic-sensing-mode.md) channel hopping.
1044
+
1045
+
### On-device intelligence (v0.3.0-alpha)
1046
+
1047
+
The alpha firmware can analyze signals locally and send compact results instead of raw data. This means the ESP32 works standalone — no server needed for basic sensing. Disabled by default for backward compatibility.
1048
+
1049
+
| Tier | What it does | RAM used |
1050
+
|------|-------------|----------|
1051
+
|**0**| Off — streams raw CSI only (same as v0.2.0) | 0 KB |
1052
+
|**1**| Cleans up signals, picks the best subcarriers, compresses data (saves 30-50% bandwidth) |~30 KB |
1053
+
|**2**| Everything in Tier 1 + detects presence, measures breathing and heart rate, detects falls |~33 KB |
1054
+
|**3**| Everything in Tier 2 + runs custom WASM modules (gesture recognition, intrusion detection, and [63 more](docs/edge-modules/README.md)) |~160 KB/module |
1055
+
1056
+
Enable without reflashing — just reprovision:
1025
1057
1026
1058
```bash
1027
1059
# Turn on Tier 2 (vitals) on an already-flashed node
When active, the node sends a 32-byte vitals packet at 1 Hz with presence, motion, breathing BPM, heart rate BPM, confidence, fall flag, and occupancy. Binary size: 777 KB (24% free).
1069
+
When Tier 2 is active, the node sends a 32-byte vitals packet once per second containing: presence, motion level, breathing BPM, heart rate BPM, confidence scores, fall alert flag, and occupancy count.
1034
1070
1035
-
See [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md), [ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), and [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34).
1071
+
See [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md), [ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), [ADR-044](docs/adr/ADR-044-provisioning-tool-enhancements.md), and [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34).
0 commit comments