The problem
Occupancy sensing usually means a PIR sensor or a camera — one only sees motion in its line of sight and goes blind behind furniture, the other raises privacy concerns that make it unwelcome in homes, hostels and restrooms. Wi-Fi channel state information offers a third way: every 802.11 frame already carries a per-subcarrier channel estimate, and a human body moving through a room disturbs the multipath environment enough to show up in those measurements. The ESP32-C3 can read CSI directly from received packets, so a pair of boards — one transmitting a steady stream of packets, one listening — becomes a presence sensor with no extra sensing element. The receiver computes subcarrier amplitude variation over a sliding window, compares it against a calibrated empty-room baseline, and reports presence on a 0.96-inch OLED with an LED and buzzer for alerts. Because every room has different walls and furniture, a guided buyer-run calibration procedure establishes the baseline in the student's own room. Nothing is imaged, nobody is identified — presence or absence is the only output.
Stays on a fixed Wi-Fi channel transmitting small UDP packets at a fixed rate.
Follow the working sequence
How it works
- The TX ESP32-C3 stays on a fixed Wi-Fi channel and transmits small UDP packets at a fixed, configurable rate.
- The RX ESP32-C3 enables the Wi-Fi CSI receive callback and reads the channel-state vector from every incoming frame.
- Firmware computes the amplitude (I/Q magnitude) per subcarrier and maintains a sliding window of recent values.
- The variance across the window is compared against the empty-room baseline stored during calibration.
- If the variance stays above the presence threshold for the configured confirmation time, the firmware declares presence.
- On each state change the OLED updates, the LED and buzzer fire, and the event is logged over serial.
- Pressing the calibration button with the room empty records a fresh baseline into flash, tuned to that specific room.
Tech stack:
- ESP32-C3 · 32-bit RISC-V at 160 MHz, Wi-Fi 4
- Arduino IDE · C/C++ firmware with Wi-Fi CSI receive API
- 0.96-inch OLED · SSD1306, 128 × 64 over I2C
- Fixed-channel UDP packet stream for CSI excitation
- Sliding-window subcarrier variance detector
- USB serial diagnostics stream
- 5 V USB-C power, both nodes
| Parameter | Value |
|---|---|
| CSI source | Wi-Fi Channel State Information, read per received frame (ESP-IDF CSI API) |
| Controller | ESP32-C3, 32-bit RISC-V, 160 MHz (datasheet) |
| Display | 0.96-inch OLED, SSD1306, 128 × 64 (datasheet) |
| Indication | OLED text + red LED + active buzzer |
| Detection latency | Design target: a few seconds of sustained motion (design target, not measured) |
| Effective range | Depends on room geometry and calibration — no range claimed without buyer-run measurement |
| Accuracy | No accuracy figure claimed — confirmed by the student's own calibration and demo |
| Power | 5 V via USB-C on both nodes (expected) |
Project features
- [CSI sensing with no extra sensor] A TX node transmits a steady packet stream on a fixed Wi-Fi channel while the RX node reads channel state information from every received frame — presence is inferred from subcarrier disturbance, with no PIR and no camera in the build.
- [Variance-based presence decision] Firmware computes per-subcarrier amplitude variation over a sliding window and compares it against the calibrated empty-room baseline; sustained deviation confirms presence, rejecting single-frame glitches.
- [On-device indication] A 0.96-inch SSD1306 OLED shows PRESENCE DETECTED / ROOM EMPTY, while a red LED and buzzer fire on the transition into the presence state.
- [Per-room calibration procedure] A guided empty-room baseline capture stores the reference in flash; the procedure is documented in the report because every room's multipath is different.
- [Configurable sensing constants] Packet rate, window length, detection threshold and confirmation time are firmware constants the student tunes during calibration and defends in the viva.
- [Serial diagnostics] The CSI variance stream is logged over USB serial, so the disturbance from walking past the sensor can be plotted and demonstrated live.
- [Privacy by architecture] The system resolves only presence vs absence — it cannot identify who is present, image anyone, or record audio or video.
What is included
- Working two-node prototype: TX beacon node and RX sensing node with OLED, LED and buzzer
- Complete Arduino-IDE firmware (CSI capture, variance detector, calibration routine, OLED UI)
- Wiring diagram and bill of materials with exact part numbers
- Empty-room calibration procedure document (buyer-run)
- Project report PDF (CSI and multipath background, methodology, calibration results, limitations)
- PPT presentation for final review
- Viva Q&A preparation document (CSI, multipath, calibration, privacy architecture)
Limitations & prerequisites
- Per-room calibration is mandatory — the same threshold will not transfer between rooms with different walls and furniture.
- The sensor detects motion, not static presence: a perfectly still person may fade from detection as the multipath stabilizes.
- Moving pets, ceiling fans, swinging doors and neighbouring Wi-Fi activity also disturb subcarriers — false triggers are possible and are discussed honestly in the report.
- CSI needs a steady packet stream on a quiet fixed channel; a crowded 2.4 GHz spectrum degrades consistency.
- No detection-range or accuracy numbers are claimed — the report documents the student's own measured results from the calibration procedure.
- Presence vs absence only: it cannot count people, identify anyone, or sense through heavy shielding.
Frequently Asked Questions
How does it detect a person without any sensor?
It uses the Wi-Fi radio itself as the sensor. Every 802.11 frame carries channel state information — a per-subcarrier estimate of the radio path. A human body moving through the room changes the multipath reflections, which shows up as amplitude variation across subcarriers. The firmware watches that variation and flags presence.
Why is per-room calibration required?
Walls, furniture and even the TX/RX placement shape the room's multipath fingerprint, so the "empty" baseline differs everywhere. The calibration routine records the empty-room variance signature with one button press, and all detection compares against that stored reference.
Can it detect a person sitting perfectly still?
Not reliably — the detection is motion-driven, so a motionless person may fade out as the channel stabilizes. This is an honest architectural limit of CSI sensing and is documented in the report's limitations section.
Will pets, fans or neighbours' Wi-Fi trigger it?
They can disturb the channel, yes. The report treats false triggers openly: the confirmation time and threshold tuning reduce nuisance detections, and the limitations section lists every known disturbance source for the viva discussion.
Is there any camera or microphone?
No. Privacy is the design point — the system resolves only presence or absence from radio measurements. Nobody can be imaged or identified by it.
Is this project suitable for a final-year project?
Yes — for IoT & Embedded Systems, Electronics and E&TC programs. It combines wireless communication theory (CSI, multipath, OFDM subcarriers) with embedded firmware, a calibration methodology and a genuine privacy story for the viva. Suitable for B.E./B.Tech final-year projects in IoT & Embedded Systems, Electronics and E&TC.
Components & software requirements
- ESP32-C3 · 32-bit RISC-V at 160 MHz, Wi-Fi 4
- Arduino IDE · C/C++ firmware with Wi-Fi CSI receive API
- 0.96-inch OLED · SSD1306, 128 × 64 over I2C
- Fixed-channel UDP packet stream for CSI excitation
- Sliding-window subcarrier variance detector
- USB serial diagnostics stream
- 5 V USB-C power, both nodes
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.