wifi-densepose/demo-single-esp32s3/README.md

3.5 KiB

RuView Single ESP32-S3 Demo

A simplified setup for running RuView with just ONE ESP32-S3 board for basic presence detection.

Note: Single-node detection has limited spatial resolution. For full pose estimation (17 keypoints), use 2+ nodes. This demo focuses on presence detection - detecting if someone is in the room.

What You Need

Item Cost Notes
ESP32-S3 DevKit (8MB flash) ~$9 Any ESP32-S3 with 8MB flash works
Micro USB cable ~$5 For power + programming
WiFi network - 2.4GHz WiFi required

Quick Start

Step 1: Get Pre-built Firmware

Download the latest firmware from releases:

Step 2: Flash the Firmware

Connect your ESP32-S3 to your PC via USB. Note the COM port (e.g., COM7 on Windows).

# Install esptool if you don't have it
pip install esptool

# Flash the firmware (replace COM7 with your port)
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
  write_flash --flash_mode dio --flash_size 8MB \
  0x0 release/bootloader.bin \
  0x8000 release/partition-table.bin \
  0x10000 release/esp32-csi-node.bin

Step 3: Provision WiFi

After flashing, provision your WiFi credentials (no reflashing needed):

python firmware/esp32-csi-node/provision.py --port COM7 \
  --ssid "YourWiFiName" --password "YourWiFiPassword" --target-ip 192.168.1.100

Step 4: Run the Sensing Server

# Install dependencies
pip install -r requirements.txt

# Start the server (single-node mode)
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source single

Step 5: Open the Dashboard

Navigate to http://localhost:3000 in your browser.

You should see presence detection data flowing in when people are in range of your WiFi router and the ESP32-S3.

Building from Source (Optional)

If you want to build the firmware yourself:

# Using Docker (recommended for Windows)
MSYS_NO_PATHCONV=1 docker run --rm \
  -v "$(pwd)/firmware/esp32-csi-node:/project" -w /project \
  espressif/idf:v5.2 bash -c \
  "rm -rf build sdkconfig && idf.py set-target esp32s3 && idf.py build"

# Flash the built firmware
python -m esptool --chip esp32s3 --port COM7 --baud 460800 \
  write_flash --flash_mode dio --flash_size 8MB \
  0x0 firmware/esp32-csi-node/build/bootloader/bootloader.bin \
  0x8000 firmware/esp32-csi-node/build/partition_table/partition-table.bin \
  0x10000 firmware/esp32-csi-node/build/esp32-csi-node.bin

What's Detected

With a single ESP32-S3, you can detect:

Feature Description
Presence Is someone in the room? (Yes/No)
Motion Is someone moving?
Distance Approximate distance from the ESP32

What's NOT Available (Needs 2+ Nodes)

  • Full body pose (17 keypoints)
  • Breathing rate
  • Heart rate
  • 3D position tracking

Troubleshooting

No data appearing?

  • Check ESP32 is connected to WiFi: python -m serial.tools.miniterm COM7 115200
  • Verify the IP address is reachable from your PC
  • Make sure your WiFi router is on the same network

Getting errors?

  • Check the logs in logs/ folder
  • Verify COM port is correct (check Device Manager on Windows)

Files in This Demo

demo-single-esp32s3/
├── README.md           # This file
├── setup.sh            # Quick setup script
└── config.env.example  # Example configuration

License

MIT - Same as main RuView project