Privacy Safe Radar Based Human Presence and Fall Detection

Published  January 17, 2026   0
u uploader
Author
Privacy Safe Radar Based Human Presence and Fall Detection

By Pratyush Gehlot
Falls are a leading cause of injury among elderly and mobility-impaired individuals living alone. Traditional monitoring approaches rely on cameras or wearable devices — cameras raise significant privacy concerns in home environments, while wearables depend on the person remembering to wear them and keeping them charged.

This project presents a privacy-preserving fall detection and human presence monitoring system built on the ESP32-S3-BOX-3 platform with a ceiling-mounted LD6001 mmWave radar sensor. The radar emits millimeter-wave signals that reflect off the human body, producing a 3D point cloud with position, velocity, and signal quality data — without capturing any visual information.

The system processes this point cloud in real-time through a multi-stage pipeline: noise filtering, DBSCAN spatial clustering, feature extraction (height, spatial spread, velocity variance), rule-based posture classification, and a multi-evidence finite state machine for fall detection. It classifies human posture into five states — standing, sitting, lying, sleeping, and fall — and raises an audible alarm when a fall is confirmed.

Key design goals of this project:

  • Privacy — Radar-only sensing captures no images or audio of the monitored person
    No wearables required — Passive detection with no cooperation needed from the subject
  • Real-time embedded processing — All detection runs on-device with no cloud dependency
  • Multi-person support — Tracks up to 5 individuals simultaneously with independent fall detection per target
  • Accessible interface — Touchscreen UI with posture display, configurable settings, and audio alerts
  • Remote debugging — WiFi streaming of raw point cloud data to a PC 3D visualization tool for calibration and development


The system is designed for deployment in elderly care homes, assisted living facilities, hospital rooms, and private residences where continuous fall monitoring is needed without compromising the dignity and privacy of the occupant.

Components Required

 

Component Name    Quantity    Datasheet/Link
ESP32S3 BOX31View Datasheet
HC122-
LD6001 60GHz Radar1-
18650 Battey Shield1-
18650 Li-Ion cell2-

Circuit Diagram

Privacy Safe Radar Based Human Presense and Fall Detection

Hardware Assembly

The hardware is split into two physically separate units connected wirelessly via HC-12 UART radio modules.

Part 1 — Ceiling Unit (Sensor Node)
Mounted on the ceiling, pointing downward. Battery-powered, no wires needed.

Component Role
LD6001 60GHz RadarDetects humans, outputs point cloud over UART
HC-12 Wireless UARTTransmits radar serial data wirelessly to base unit
18650 Li-Ion Battery Shield Powers both radar and HC-12 at 3.3V / 1A

Wiring: The battery shield's 3.3V and GND are shared to both the HC-12 and LD6001. The radar's TX → HC-12 RXD, radar's RX → HC-12 TXD.

Hardware setup of Ceiling Unit

Part 2 — Base Unit (Processing Node)
Sits on a desk/shelf. USB-C powered via power bank.

Component Role
ESP32-S3-BOX-3 + DockRuns detection pipeline, UI, audio alerts
HC-12 Wireless UARTReceives radar data wirelessly from ceiling unit

Wiring: HC-12 TXD → GPIO38, HC-12 RXD → GPIO39, powered from the dock's 3.3V.

Hardware setup of Base Unit

Software Flow

Software flow is split into 10 Stages, as explained below in the table -

Stages of Privacy Safe Radar Based Human Presense and Fall Detection

Below is the complete data flow of the ESP32-S3 radar human detection and fall monitoring system, from raw UART sensor data through the detection pipeline to UI display and audio alerts.

Complete data flow of the ESP32-S3 radar human detection and fall monitoring system

Boot And Initialization

•Mounts SPIFFS file system for audio files

•Initializes I2C bus for touch panel and audio codec

•Starts LCD display and LVGL graphics library

•Sets up WiFi AP mode (SSID: "ESP32S3BOX3_RadarSensor")

•Configures UART1 for radar sensor communication (115200 baud, GPIO 38/39)

•Creates FreeRTOS tasks for radar reception

•Displays boot animation with progress bar

•Plays bootaudio.wav during startup

Key Functions

•app_main() - FreeRTOS application entry

•bsp_spiffs_mount() - File system setup

•bsp_display_start() - LVGL initialization

•wifi_stream_init() - TCP server on port 3333

•radar_sensor_init() - UART driver and RX task creation
 

Radar Data (LD6001) UART data Reception

The Radar module configured and controlled via UART using AT commands, where AT+START will stream point cloud frame over UART as plain-text lines, structured like this:

x=0.12 y=-0.35 z=1.80 v=-0.05 snr=22.3 abs=8.1 dpk=5.6
x=0.15 y=-0.30 z=1.75 v=-0.03 snr=19.8 abs=7.4 dpk=4.9
x=0.10 y=-0.40 z=0.45 v=0.01 snr=15.2 abs=6.0 dpk=3.2
-----PointNum=3
Each line is one reflection point detected by the 60GHz mmWave signal.

Per-point fields:

Per point fields

A person standing produces a vertical cluster of points (head, torso, legs). A person lying down produces a horizontal spread of low-z points. The snr, abs, and dpk values are combined into a confidence score to filter noise from real reflections.

FreeRTOS task continuously reads raw text data from the LD6001 radar sensor via UART and parses it into structured point cloud data.

•Runs in dedicated task radar_rx_task() with 8KB stack

•Reads UART bytes in 255-byte chunks with 100ms timeout

•Assembles line-buffered text (newline-delimited)

•Parses lines matching pattern: x=X,y=Y,z=Z,v=V,snr=S,abs=A,dpk=D

•Transforms coordinates for ceiling-mounted radar:

•x_world = x_raw + GRID_X/2 (center X axis)

•y_world = y_raw + GRID_Y/2 (center Y axis)

•z_world = GRID_Z - z_raw (invert Z for height from floor)

•Accumulates points

•Stores up to 128 points per frame in s_frame_points[]

Detection Pipeline

UART RX → Point Filter → DBSCAN Cluster → Feature Extract → Posture Classify → Fall FSM → Track & Smooth → UI/Audio

  1. Point Filtering — Weighted confidence score (SNR, abs, DPK), threshold ≥ 0.4
  2. DBSCAN Clustering — Groups nearby points into human targets (eps=0.55m, min_samples=5)
  3. Feature Extraction — Per-cluster z_max, z_range, xy_span, velocity mean/variance
  4. Posture Classification — Rule-based using height, vertical extent, and spatial spread
  5. Fall Detection — 4-state FSM (NONE → SUSPECT → CONFIRMED → COOLDOWN) with multi-evidence scoring
  6. Target Tracking — Nearest-neighbor association + EMA smoothing (α=0.4) across frames

Posture Classification
Doing Rule-based classifier using height and spatial spread thresholds.

Posture Classification

Fall Detection State Machine

Fall Detection State Machine

Key Radar Functions

Key Radar Functions

FreeRTOS Tasks

FreeRTOS Tasks

PC Client 3D Visualization : Streamed over WiFi AP [Debug/Training/Calibration Purpose]

A Python companion app connects to the ESP32's WiFi AP to visualize the radar point cloud in 3D.

The app connects to 192.168.4.1:3333 and renders the point cloud with cluster labels and posture overlay.

PC Client 3D Visualization : Streamed over WiFi AP

LVGL based UI Screens:

LVGL-based-UI-Screens-listLVGL-based-UI-Screens

Build, Flash & Monitor Flow:

ESP-IDF Build and Flash Workflow for ESP32-S3

GitHub Repository

Privacy Safe Radar Based Human Presense Monitoring and Fall Detection GitHub RepositoryPrivacy Safe Radar Based Human Presense Monitoring and Fall Detection GitHub Repository Zip file

Video

Have any question related to this Article?

Add New Comment

Login to Comment Sign in with Google Log in with Facebook Sign in with GitHub