All insights
Personal projectWork in progressOctober 5, 20268 min read

Finding People in a House With Routers, $5 Radios, and an $8 Radar

ESP32RadarSensingTracking

The question started small: could the radios already in my house tell me which room someone was in? Every router measures the signal strength of every device it hears, and a body standing between two radios absorbs some of that signal. Two projects came out of chasing it. WiFi-Visual, from this spring, tried to locate phones from router readings alone. EyesWideOpen, which I am still working on, added cheap ESP32 boards and eventually a radar in each room.

Starting with routers

WiFi-Visual polled three mesh routers for the signal strength each one saw from every connected device, converted each reading into a distance, and solved for position. The conversion is the log-distance path loss model: received power falls by 10 × n decibels for every tenfold increase in distance, where n describes the environment. The code assumes -40 dBm at one metre and n = 3.0, which corresponds to roughly one wall between radio and device. Open line of sight is closer to 2.0, and several walls push it to 3.5 or 4.0. Each distance carries an uncertainty that grows with range, and a weighted least-squares fit finds the point that best agrees with all of them.

RSSI multilateration · n = 3.0 · -40 dBm at 1 m

error 0.64 m

-50 dBm-60 dBm-58 dBm-53 dBm

Click or drag to move the phone (white dot), or focus the plot and use the arrow keys. Squares are fixed radios, dashed rings are the distances their readings imply, and the cross is the least-squares fit. A 10 by 7 metre floor on a 1 m grid.

Five decibels of noise is a realistic figure for indoor signal strength, and the plot shows what it does: at that level each ring is off by a large fraction of its radius. The project notes give typical accuracy of 2 to 4 metres with three well-placed routers and calibrated path loss. That figure is an expectation from the literature, and I never measured it rigorously. The approach also cannot see anyone whose phone is off, and with only three routers the height estimate was barely constrained. Room-level guesses were the realistic ceiling.

The most useful line in that repository's notes is about calibration: the position of each router matters more than any tuning parameter, so measure it with a tape.

Adding cheap radios

EyesWideOpen moved from tracking phones to sensing links. ESP32 boards cost about five dollars each, and six of them on a floor give fifteen radio links crossing the room. When a person stands in a link's path the signal drops. Radio tomographic imaging, a method published by Wilson and Patwari in 2010, turns the pattern of drops across many links into an image of where the shadows are. Blobs in that image become detections, and a constant-velocity Kalman filter follows them over time.

One design decision in this mode is my favorite in the project. A body shadows a link equally in both directions, because the radio channel is reciprocal. Interference at one board's receiver shows up in only one direction. When the two directions of a link disagree, the quieter one is the better estimate of what the body actually absorbed. In simulation, that single rule cut the phantom people produced by a noisy board from hundreds per run to a handful.

Then a radar in each room

The approach the project now recommends is simpler. The HLK-LD2450 is a 24 GHz radar module that costs about eight dollars, covers a 120 degree wedge, and reports up to three targets ten times a second. One goes in each room, mounted five to six and a half feet up, on an ESP32 that forwards its reports.

Raw radar reports still need work before they become people. A new report starts a candidate track, and the candidate is shown only after it appears in three separate frames over 0.3 seconds, which suppresses one-frame reflections. Reports within about 2.3 feet of an existing track merge into it, and an alpha-beta filter smooths position and velocity.

mmWave radar · 120° · 10 frames/s · max 3 targets

reported 0 · confirmed 0

Hollow rings are where people really are. Grey specks are raw radar reports, faint amber circles are candidate tracks, and solid amber dots are tracks confirmed after three frames. Add a fourth person to see the three-target limit. Filter gains here are illustrative.

In simulation, five-minute runs with two and four people across three random seeds put people in the right spot 94 to 100 percent of the time, with median walking error of 0.2 to 0.3 feet at 7 centimetres of measurement noise. The project's own notes say the simulation is kinder than a real room and that real numbers will be somewhat worse. I agree, and I have not yet put radar mode through a proper real-world test.

What it cannot do

  • Three people per radar is a hardware limit. A fourth person in the same room is invisible to it.
  • It does not know who anyone is. A dog walking through is reported as a person.
  • Rooms without a radar are blind.
  • Simulated tests verify that the code behaves as designed. They cannot establish measurement accuracy in a real house, and every figure above comes from simulation unless it says otherwise.
ShareLinkedInX

The leadership case studies show where this thinking was applied.