24GHz Human Presence Sensing Module Wiki - DFRobot

Introduction

This high-sensitivity 24GHz human presence sensing radar module utilizes FMCW (frequency-modulated continuous wave) to detect human targets in the set space. Combined with radar signal processing and accurate human sensing algorithm, it can achieve high-sensitivity sensing of human presence status, which can identify human body in motion and stationary state and calculate auxiliary information like the distance to the target.
The sensing effect of the radar module is insusceptible to environmental factors like temperature, brightness, humidity, light fluctuations, etc. Besides, FMCW radars can penetrate materials, which enables this module to work well in a shell without opening holes.
This microwave radar is mainly used in indoor scenarios to sense whether there is a moving or micro-moving human in the detection area and output the detection results in real time. It offers a sensing distance of up to 6 meters and a resolution of 0.75m. Besides, it provides serial communication protocol so users can configure the sensing distance range, sensing sensitivity in different intervals, and delay time for different applications.
The module supports UART and GPIO (high and low level) output. When used with Arduino or other controllers, it can be flexibly applied to various projects such as smart light control, human body induction wake-up of advertising screen, UV light control, and home security.

Features

Specification

Note: The operating frequency range and sweep frequency both comply with FCC, CE and SRRC standards.

Dimensions

Back side

Board Overview

Front side

Wire Color Name Description
Blue OUT Object status output, human is detected: output high (3.3V); nobody is detected: output low (0V)
Green UART_Tx Serial Tx, transmit data
Yellow UART_Rx Serial Rx, receive data
Black GND Power ground
Red VCC Power input

Tutorial for Arduino

Requirements

Connection Diagram

Read Detection Distance(Demo)

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); //Define soft serial port, define port 3 as TX and port 2 as RX,

size_t readN(uint8_t *buf, size_t len);

bool recdData(uint8_t *buf);

uint8_t Cache[23] = {0};    //Cache

void setup()
{
  Serial.begin(115200);
  mySerial.begin(57600); //Soft serial port
  //Serial1.begin(256000);
}

void loop()
{
  recdData(Cache);
}

size_t readN(uint8_t *buf, size_t len)
{
  size_t offset = 0, left = len;
  int16_t Tineout = 1500;
  uint8_t  *buffer = buf;
  long curr = millis();
  while (left) {
    if (Serial1.available()) {
      // buffer[offset] = Serial1.read();
      buffer[offset] = Serial.read();
      offset++;
      left--;
    }
    if (millis() - curr > Tineout) {
      break;
    }
  }
  return offset;
}

bool recdData(uint8_t *buf)
{
  int16_t Tineout = 50000;
  long curr = millis();
  uint8_t ch;
  bool ret = false;
  const char *P;
  while (!ret) {
    if (millis() - curr > Tineout) {
      break;
    }
    if (readN(&ch, 1) == 1) {
      if (ch == 0xF4) {
        buf[0] = ch;
        if (readN(&ch, 1) == 1) {
          if (ch == 0xF3) {
            buf[1] = ch;
            if (readN(&ch, 1) == 1) {
              if (ch == 0xF2) {
                buf[2] = ch;
                if (readN(&ch, 1) == 1) {
                  if (ch == 0xF1) {
                    buf[3] = ch;
                      if (readN(&buf[4], 19) == 19) {
//                        printdf(buf, 23); //Print raw data
                        uint16_t Adistance = buf[10] << 8 | buf[9];
                        uint16_t Sdistance = buf[13] << 8 | buf[12];
                        uint16_t Distance = buf[16] << 8 | buf[15];
                        switch (buf[8]) {
                          case 0x00 : Serial.println("Detected status: nobody"); break;
                          case 0x01 : Serial.println("Detected status: moving"); break;
                          case 0x02 : Serial.println("Detected status: stationary"); break;
                          case 0x03 : Serial.println("Detected status: moving & stationary object"); break;
                        }
//                        Serial.print("Energy value of moving object:");
//                        Serial.println(buf[11]);
//                        Serial.print("Energy value of stationary object:");
//                        Serial.println(buf[14]);
//                        Serial.print("Distance to the moving object in CM:");
//                        Serial.println(Adistance);
//                        Serial.print("Distance to the stationary object in CM:");
//                        Serial.println(Sdistance);
                        Serial.print("Detection distance CM:");
                        Serial.println(Distance);
                        break;
                      }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return ret;
}
void printdf(uint8_t *buf, int len)
{
  for (int i = 0; i < len; i++) {
    if (buf[i] < 0x10) {
      Serial.print("0");
    }

    Serial.print(buf[i], HEX);
    Serial.print(" ");
  }
  Serial.println();
}

Result

The module only outputs the target distance value of the moving state, and the distance value of the non-moving state is 0.For details, please refer to the serial communication protocol description.

Serial Communication Protocol Description

LD2410 Serial Communication Protocol V1.03.pdf //Including the upper computer usage, config description & serial communication protocol commands

24GHz_Tool_EN.rar//Upper computer

Application

This module is able to detect and identify human bodies in moving, micro-moving, standing, sitting and lying-down states. It supports multi-level parameter setting and can be widely used in various AIoT scenarios. The common applications are as follows:

Installation Method & Sensing Range

Top Mount

Detection Range (At height of 3m)

Wall Mount Diagram

Detection Range (At height of 1.5m)

Installation Conditions

Confirm the minimum installation clearance

If the radar module needs to be installed in a shell, then the shell must have good wave permeability at 24 GHz and contain no metal or materials that may block electromagnetic waves.

Installation Environment Requirements

This module needs to be installed in a suitable environment. The detection effect will be affected if it's used in the following environments:

Precautions During Installation

FAQ

For any questions, advice or cool ideas to share, please visit the DFRobot Forum.

Update History

version update description
V1.1 Default baud rate updated to 57600 , related information updated

More Documents