Project 5 · Interactive Demo

WiFiVision

Detect a human in a room using nothing but WiFi. Your body scatters radio waves like ripples in water — WiFiVision reads those ripples from Channel State Information (CSI). No camera, works in the dark.

🧪 Browser simulation. This runs a physics-plausible model of CSI subcarrier amplitudes in your browser — no hardware needed. On the real $10 build, an ESP32 streams live CSI at ~100 Hz and the same detection logic runs on it.

The Room · drag the person

Grab the 🧍 dot and move it between the router and the sensor. Signal disruption peaks when a body crosses the direct path.

Detector Output

ROOM EMPTY
Signal is quiet — baseline multipath only.
CSI Variance
0.00
Motion Energy
0.00
Occupancy
0
Breathing
1.0×

Live CSI Amplitude · 30 subcarriers × time

Baseline noise floor Live CSI stream Detection threshold crossed ~100 Hz sample rate

How it actually works

  1. WiFi is already everywhere. A router constantly sends packets to a receiver. Each packet reports CSI — how the signal's amplitude and phase changed across ~30 frequency subcarriers on the way over.
  2. Your body is an obstacle. Muscle and water reflect and absorb 2.4/5 GHz radio. Moving through the room reshuffles the multipath, so the CSI amplitudes jump around.
  3. Variance is the signal. An empty room gives a flat, low-variance CSI stream. A person raises variance; motion spikes it further. Even sitting still, your chest rising and falling shows up as a slow ~0.2–0.3 Hz oscillation — that's the breathing readout above.
  4. Cheap and private. An ESP32 ($6) plus a USB power bank streams CSI at ~100 Hz; a few lines of Python threshold the variance. No frames are ever captured, so it works in total darkness and can't leak an image.