ESP32-S3 captures CSI
The board receives Wi-Fi traffic and extracts Channel State Information from incoming packets.
Wi-Fi CSI
Detecting human presence through Wi-Fi, not cameras.
A privacy-first sensing system that reads tiny changes in Wi-Fi signals to infer room occupancy.
Built with ESP32-S3 CSI capture, a Python detection backend, and a live radar-style dashboard.
About the project
SWMD uses ordinary Wi-Fi signal behavior as a room sensor, keeping the sensing layer lightweight and privacy-conscious.
The system uses Wi-Fi Channel State Information (CSI) from an ESP32-S3 to detect when a person is present in a room, without any camera or wearable.
The ESP32-S3 captures CSI from incoming Wi-Fi packets. To keep a steady receive rate, it pings the gateway 10 times per second, then sends each CSI frame to a Python backend over the USB serial console.
The backend runs a presence detector that co-confirms motion, phase, and baseline shifts using auto-tuned thresholds, Hampel/PCA CSI denoising, and hold-and-decay logic.
The current senior-project flow uses one ESP32-S3 sensing node: calibrate the empty room, stream CSI to the laptop, and display a live occupied or empty decision on the dashboard.
How it works
CSI frames move from the ESP32-S3 to the PC, where the backend turns signal changes into an occupancy estimate.
The board receives Wi-Fi traffic and extracts Channel State Information from incoming packets.
Frames stream through the ESP32-S3 UART console while gateway pings keep the receive rhythm steady.
The backend filters CSI frames, applies the detector, and visualizes live confidence on a radar-style dashboard.
Tech stack
The project combines embedded Wi-Fi CSI collection with Python signal processing and a browser-based visualization layer.
Features
SWMD focuses on live feedback, one-node calibration, and repeatable presence testing.
One ESP32-S3 captures CSI from gateway replies and streams frames to the backend.
Prototype
The prototype streams CSI from the ESP32-S3 into the laptop over USB serial, then Python detector code filters the frames and updates the radar dashboard.
ESP32-S3 node -> laptop USB serial stream -> Python detector code.
One ESP32-S3 captures Wi-Fi CSI while placed inside the test room and connected to the laptop over USB.
The firmware prints CSI frames over the UART console, keeping the receiver rate stable with gateway pings.
The Python backend applies CSI denoising and detector logic, then displays activity on the live radar view.
Team
Student
Student
Student
Supervisor
Contact
Use the form below to reach the SWMD team directly.
SWMD was built as a compact sensing prototype for privacy-aware room presence detection using Wi-Fi CSI, embedded hardware, and Python-based inference.