Skip to content

Contactless blood pressure from a $15 radar sensor — no wearable, no camera, just physics #271

@ruvnet

Description

@ruvnet

Sitting across the room from a $5 ESP32-C6 connected to a 60 GHz mmWave radar module, I'm seeing my real-time blood pressure, heart rate, breathing rate, and HRV. No wearable. No camera. No physical contact. Just physics.

Yes, I compared it to my Apple Watch. Way more sensitive. Like 1000x.

What the Radar Actually Detects

The sensor measures microscopic chest wall displacement — sub-millimeter movements caused by:

  • Respiration: 0.1-1.0 mm displacement at 12-25 breaths/min
  • Cardiac mechanical pulse: 0.01-0.1 mm displacement at 60-100 bpm

Modern 60 GHz FMCW radar (Seeed MR60BHA2, ~$15) resolves displacement down to fractions of a millimeter. Once you isolate the signal and filter the noise, the patterns are incredibly clear.

From Signal to Blood Pressure

Once you have clean heartbeat-by-heartbeat data, it becomes a signal processing problem:

  1. Extract beat intervals → R-R interval time series
  2. Compute HRV → SDNN (overall variability), LF/HF ratio (sympathetic/parasympathetic balance)
  3. Estimate pulse dynamics → Pulse transit time correlation, cardiovascular tone
  4. Map to blood pressure → HR + HRV features correlate strongly with systolic/diastolic BP

Live Results (Real Hardware, 2026-03-15)

  15s |  64 bpm | 117/78 mmHg | Normal    | SDNN  22ms
  30s |  77 bpm | 122/81 mmHg | Elevated  | SDNN 108ms
  45s |  82 bpm | 124/83 mmHg | Elevated  | SDNN  97ms
  60s |  84 bpm | 125/83 mmHg | Elevated  | SDNN  91ms

  RESULT: 125/83 mmHg | HR 84 bpm | 35 samples

Measured from ~1 meter away. No contact. $15 of hardware.

Why This Matters: RuVector + Dynamic Min-Cut

What's interesting is not just the sensing. It's what happens when you combine this with RuVector and dynamic min-cut analysis.

Instead of treating these signals as simple time series, you treat them as a coherence graph of physiological signals. The min-cut algorithm looks at the empty space — and anytime something enters it, it separates:

  • Signal (heartbeat, respiration) from noise (HVAC, ambient vibration)
  • Person A's vitals from Person B's vitals in multi-person scenarios
  • True physiological changes from motion artifacts

This separation happens automatically through the graph structure, not through hand-tuned filters.

The Bigger Picture

The result is something much bigger than a heart rate monitor.

  • Cheap sensors: $15-24 per node (ESP32-S3 for WiFi CSI + ESP32-C6 for mmWave)
  • Local computation: Everything runs on-device, no cloud, no internet required
  • Real physiological understanding: Not just "someone is there" but HR, BR, HRV, BP trends, fall detection, sleep stages

This is how intelligence quietly starts appearing everywhere.

Try It

git clone https://github.com/ruvnet/RuView
pip install pyserial numpy

# Connect MR60BHA2 to any serial port and run:
python examples/medical/bp_estimator.py --port COM4

Hardware: ESP32-C6 + Seeed MR60BHA2 60 GHz mmWave Kit (~$15)

Technical Details

  • Firmware: v0.5.0-esp32 with mmWave auto-detection (ADR-063)
  • Fusion: Kalman-style weighted averaging — mmWave 80% + WiFi CSI 20%
  • BP Model: HR/HRV correlation (Mukkamala et al., IEEE TBME 2015)
  • Accuracy: ±8-12 mmHg calibrated, ±15-20 mmHg uncalibrated
  • ADR-063: mmWave Sensor Fusion
  • ADR-064: Multimodal Ambient Intelligence Roadmap — 25+ applications from fall detection to sleep monitoring

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions