24GHz Radar Presence Sensor — HLK-LD2410C / LD2410 (Human Presence Detection Module)

Compact 24 GHz FMCW radar presence sensor for reliable human/motion detection. Works in all lighting, senses micro-motion (breathing/movement) where PIR fails, and offers a digital OUT pin plus UART for advanced tuning. Ideal for smart lighting, HVAC occupancy control, security triggers and IoT projects with ESP32/Arduino.


Key Features & Specifications


💡 Extended Possible Uses

Why Choose This Module?


Beginner Wiring — Quick ASCII Diagram

Radar Module Pin   → Microcontroller (example: ESP32)
-----------------------------------------------
VCC                → 3.3V or 5V (confirm marking)
GND                → GND (common ground)
OUT                → Digital input (e.g. GPIO14)
TX                 → MCU RX (optional, UART)
RX                 → MCU TX (optional, UART)

Notes:
• Confirm module voltage before powering.
• Tie grounds between radar and MCU.
• Keep connection wires short (<30 cm) for reliable signalling.
  

Tip: use a USB extension cable or PCB standoff to position the module away from metal and USB 3.0 ports for better performance.


⚡ Quick Start — ESPHome YAML (Digital OUT only)

Minimal setup to get presence into Home Assistant quickly. Wire OUT → GPIO14 (or change pin).

Wiring

LD2410 VCC  → ESP32 3.3V / 5V (check module marking)
LD2410 GND  → ESP32 GND
LD2410 OUT  → ESP32 GPIO14
      

ESPHome Quick YAML

esphome:
  name: radar_presence_quickstart
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "YOUR_SSID"
  password: "YOUR_PASSWORD"

logger:
api:
ota:

binary_sensor:
  - platform: gpio
    name: "Radar Presence"
    pin:
      number: GPIO14        # change to your wiring
      mode: INPUT
      inverted: false       # set true if output is active LOW
    device_class: occupancy
    filters:
      - delayed_on: 100ms
      - delayed_off: 500ms
      

If behavior is inverted, use inverted: true. For advanced tuning use the UART section below.

🌱 ESPHome — Presence Sensor (Full Example)

Full ESPHome example that reads ADC/UART or digital OUT and includes debounce & timer logic. Change pins/calibration to match your hardware.

ESPHome YAML (Full)

esphome:
  name: radar_presence
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "YOUR_SSID"
  password: "YOUR_PASSWORD"

logger:
api:
ota:

binary_sensor:
  - platform: gpio
    name: "Radar Presence"
    pin:
      number: 14           # change to wiring
      mode: INPUT
      inverted: false
    filters:
      - delayed_on: 100ms
      - delayed_off: 1000ms
    device_class: occupancy

# Optional: expose raw UART lines as text sensor for advanced parsing
uart:
  id: uart_radar
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200

text_sensor:
  - platform: uart
    name: "Radar UART Raw"
    id: radar_uart_raw
    on_value:
      then:
        - logger.log:
            format: "RADAR UART: %s"
            args: [ '!' + id(radar_uart_raw).state ]
      

Use Home Assistant automations to act on UART content or create ESPHome lambdas to parse messages into sensors.

🌿 Arduino (ESP32) — Simple Presence Sketch

Standalone sketch: reads digital OUT and prints status to serial. Suitable for initial testing and integration with relay control.

Wiring

Radar VCC  → ESP32 3.3V / 5V (check)
Radar GND  → ESP32 GND
Radar OUT  → ESP32 GPIO14
      

Arduino Sketch

/*
 HLK-LD2410 / LD2410 — basic presence read example
 OUT -> GPIO14
*/

const int PRESENCE_PIN = 14;  // change if needed
const int LED_PIN = 2;

void setup() {
  Serial.begin(115200);
  pinMode(PRESENCE_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  Serial.println("Radar presence test starting...");
}

void loop() {
  int state = digitalRead(PRESENCE_PIN);
  if (state == HIGH) {
    Serial.println("Presence detected!");
    digitalWrite(LED_PIN, HIGH);
  } else {
    Serial.println("No presence");
    digitalWrite(LED_PIN, LOW);
  }
  delay(500);
}
      

If OUT is active-LOW invert the test or use INPUT_PULLUP and inverted logic.

🔧 Advanced: UART Tuning & Diagnostics

Use UART for telemetry, sensitivity tuning and advanced diagnostics. Always inspect raw output before sending commands.

UART Wiring

Radar TX  → MCU RX (e.g. GPIO16)
Radar RX  → MCU TX (e.g. GPIO17)
Radar VCC → 3.3V or 5V (confirm)
Radar GND → MCU GND
Note: Most modules use 3.3V UART. Use level shifter if module is 5V.
      

Arduino UART Diagnostic Example (ESP32)

/* Radar UART diagnostic — ESP32 Serial1 */
#include <HardwareSerial.h>
HardwareSerial RadarSerial(1);
const int RADAR_RX = 16; const int RADAR_TX = 17;
const unsigned long BAUD = 115200;

void setup() {
  Serial.begin(115200);
  RadarSerial.begin(BAUD, SERIAL_8N1, RADAR_RX, RADAR_TX);
  Serial.println("Radar UART diagnostic started");
}

void loop() {
  while (RadarSerial.available()) {
    Serial.write(RadarSerial.read());
  }
  // Example send (illustrative only) — replace with documented command:
  // RadarSerial.print("SET SENS 3\n");
  delay(200);
}
      

ESPHome — Capture UART as Text Sensor

esphome:
  name: radar_uart
  platform: ESP32
  board: esp32dev

uart:
  id: uart_radar
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200

logger:
api:
ota:

text_sensor:
  - platform: uart
    name: "Radar UART Raw"
    id: radar_uart_raw
    on_value:
      then:
        - logger.log:
            format: "RADAR UART LINE: %s"
            args: [ id(radar_uart_raw).state ]
      

Safety: DO NOT send unknown binary frames. If unsure, share a sample of raw UART output and we can help parse commands.


Installation & Tuning Tips


What’s Included


Why Buy From Us

Shipping & Returns

LD2410, HLK-LD2410C, 24GHz radar sensor, human presence sensor, room presence, ESP32 radar, ESPHome LD2410, occupancy automation, Home Assistant sensor.

Ready to add to your automation or IoT project — order now.