사람의 움직임을 감지하는 센서로는 적외선 방식의 PIR 센서인 HC-SR501이 가장 많이 사용된다. 가격이 저렴하고 사용 방법도 간단하지만, 사람이 몸에서 나오는 적외선의 변화를 감지하는 방식이기 때문에 사람이 움직이지 않고 가만히 앉아 있거나 누워 있으면 감지하지 못하는 한계가 있다. 그래서 PIR 센서로 조명을 자동으로 켜면 책상에 앉아 작업하는 도중에 조명이 꺼지는 일이 자주 생긴다.
LD2410은 HiLink에서 만든 24GHz 밀리미터파 레이더 센서로, 사람의 큰 움직임뿐 아니라 호흡처럼 아주 작은 움직임까지 감지하여 가만히 있는 사람도 감지할 수 있다. 이 글에서는 LD2410의 주요 사양을 HC-SR501과 비교하고, 핀 배열과 연결 방법, 라이브러리 설치 방법, OUT 핀과 UART 통신을 이용한 예제 코드를 소개한다.

출처: Hi-Link HLK-LD2410C 제품 페이지, © Shenzhen Hi-Link Electronic
1. LD2410 레이더 인체감지센서 소개
LD2410은 24GHz 대역의 전파를 보내고 사람에게 반사되어 돌아오는 신호를 분석하는 FMCW(주파수 변조 연속파) 레이더 방식의 센서이다. 반사 신호의 미세한 변화를 분석하여 사람이 있는지, 움직이고 있는지 정지해 있는지, 센서에서 얼마나 떨어져 있는지를 알려 준다.
감지 영역은 0.75m 간격의 거리 구간(Gate) 9개(0~8번)로 나뉘며, 구간별로 감지 감도를 다르게 설정할 수 있다. 예를 들어 센서 앞 1.5m 이내만 감지하거나, 선풍기가 있는 거리 구간의 감도만 낮추는 식으로 설정할 수 있다.
특징:
- 움직이는 사람(Moving target)과 정지해 있는 사람(Stationary target)을 구분하여 감지한다.
- OUT 핀으로 사람이 있으면 HIGH, 없으면 LOW 신호를 출력하므로 PIR 센서처럼 간단하게 사용할 수 있다.
- UART 통신으로 사람까지의 거리, 신호 세기(에너지) 값을 읽고 감지 거리와 감도를 설정할 수 있다.
- 전파 방식이므로 얇은 플라스틱, 나무, 유리 케이스 안에 넣어도 감지할 수 있으며, 빛이나 온도의 영향을 받지 않는다.
LD2410은 모델에 따라 LD2410(1.27mm 핀, 블루투스 없음), LD2410B(1.27mm 핀, 블루투스 지원), LD2410C(2.54mm 핀, 블루투스 지원)로 나뉜다. 브레드보드와 점퍼선을 바로 사용할 수 있는 LD2410C가 가장 사용하기 편하며, 이 글에서는 LD2410C를 기준으로 설명한다.
2. 주요 사양 및 HC-SR501과의 비교
PIR 센서인 HC-SR501과 LD2410C의 주요 사양 차이는 다음과 같다.
| 항목 | HC-SR501 (PIR) | LD2410C (레이더) |
| 감지 방식 | 적외선(인체 열) 변화 감지 | 24GHz FMCW 레이더 |
| 정지한 사람 감지 | 불가 | 가능 (호흡 등 미세 움직임) |
| 감지 거리 | 최대 약 7m | 최대 약 6m (0.75m 단위 구간 설정) |
| 감지 각도 | 약 110~120° | 약 ±60° |
| 거리 측정 | 불가 | 가능 (cm 단위) |
| 동작 전압 | 4.5~20V | 5V |
| 소비 전류 | 약 65μA (대기) | 평균 약 80mA |
| 출력 | 디지털 OUT (3.3V) | 디지털 OUT (3.3V) + UART (256000bps) |
| 설정 방법 | 가변저항 2개, 점퍼 | UART 명령, 블루투스 앱 |
| 케이스 투과 | 불가 (렌즈가 노출되어야 함) | 가능 (플라스틱, 유리 등) |
LD2410의 가장 큰 장점은 정지한 사람까지 감지한다는 점이다. 반면 소비 전류가 HC-SR501보다 훨씬 커서 배터리로 오래 동작시키기에는 적합하지 않으므로, 배터리 기기에는 HC-SR501, 상시 전원을 사용하는 재실 감지 장치에는 LD2410을 사용하는 것이 좋다.
3. PIN 배열 및 연결
LD2410C 모듈은 한쪽 끝에 2.54mm 간격의 5핀 헤더가 있다.

출처: Hi-Link HLK-LD2410C 제품 페이지, © Shenzhen Hi-Link Electronic
| 핀 | 기능 | 아두이노 우노 | ESP32 |
| VCC | 전원 (5V) | 5V | 5V (VIN) |
| GND | 접지 | GND | GND |
| TX | UART 송신 | 사용 안 함 | GPIO16 (RX2) |
| RX | UART 수신 | 사용 안 함 | GPIO17 (TX2) |
| OUT | 감지 출력 (3.3V) | D2 | GPIO4 (선택) |
- 전원은 반드시 5V로 공급해야 하며, 3.3V로 공급하면 정상 동작하지 않는다.
- UART 기본 통신 속도가 256000bps로 매우 빠르기 때문에, 아두이노 우노의 SoftwareSerial로는 안정적으로 통신할 수 없다. 우노에서는 OUT 핀만 사용하고, 거리 값을 읽으려면 하드웨어 UART가 여러 개 있는 ESP32나 아두이노 메가를 사용하는 것이 좋다.
- TX, RX, OUT 핀은 3.3V 로직이므로 ESP32에는 직접 연결할 수 있다.
- 센서의 안테나 면(부품이 없는 쪽)이 감지할 방향을 향하도록 설치해야 한다.
4. 라이브러리 설치
OUT 핀만 사용할 때는 라이브러리가 필요 없으며, UART로 거리 값을 읽을 때는 ld2410 라이브러리를 사용한다.
- 아두이노 IDE에서 툴 -> 라이브러리 관리를 선택한다.
- 검색창에 "ld2410"을 입력하고 ncmreynolds의 ld2410 라이브러리를 설치하면 된다.
[이미지: 라이브러리 매니저에서 ld2410 라이브러리 설치 화면]
감지 거리, 구간별 감도, 사람이 사라진 후 OUT 핀이 LOW가 될 때까지의 시간(기본 5초) 등은 스마트폰 앱 HLKRadarTool에서 블루투스로 연결하여 쉽게 설정할 수 있다. 앱에서는 거리별 신호 세기를 그래프로 보여 주므로 감도를 조절할 때 편리하다.
5. 예제 코드
1) OUT 핀으로 사람 감지하기 (아두이노 우노)
LD2410C의 OUT 핀을 우노의 D2에 연결하고, 사람이 감지되면 우노의 내장 LED를 켜는 예제이다. HC-SR501을 사용하던 코드와 거의 같다.
const int radarPin = 2;
void setup() {
Serial.begin(9600);
pinMode(radarPin, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
int state = digitalRead(radarPin);
digitalWrite(LED_BUILTIN, state);
if (state == HIGH) {
Serial.println("사람 감지");
} else {
Serial.println("감지 없음");
}
delay(500);
}
- 1 Line: OUT 핀을 연결한 D2 핀 번호를 지정한다.
- 5~6 Line: D2 핀을 입력으로, 내장 LED 핀을 출력으로 설정한다.
- 10 Line: OUT 핀의 상태를 읽는다. 사람이 있으면 HIGH, 없으면 LOW가 된다.
- 11 Line: 읽은 상태 그대로 내장 LED를 켜고 끈다.
- 13~17 Line: 감지 결과를 시리얼 모니터에 출력한다.
코드를 업로드한 후 센서 앞에 앉아 움직이지 않고 있어도 LED가 계속 켜져 있는 것을 확인할 수 있다. 자리를 떠나면 설정된 시간(기본 5초)이 지난 후 LED가 꺼진다. OUT 핀의 HIGH 전압은 3.3V이지만 우노에서 HIGH로 인식되므로 그대로 사용할 수 있다.

2) UART로 거리와 상태 읽기 (ESP32)
ESP32의 Serial2에 LD2410C를 연결하고, 움직이는 사람과 정지한 사람의 거리와 신호 세기를 1초마다 출력하는 예제이다.
#include <ld2410.h>
#define RADAR_RX_PIN 16
#define RADAR_TX_PIN 17
ld2410 radar;
unsigned long lastPrint = 0;
void setup() {
Serial.begin(115200);
Serial2.begin(256000, SERIAL_8N1, RADAR_RX_PIN, RADAR_TX_PIN);
delay(500);
if (radar.begin(Serial2)) {
Serial.println("LD2410 연결 성공");
} else {
Serial.println("LD2410 연결 실패");
}
}
void loop() {
radar.read();
if (radar.isConnected() && millis() - lastPrint > 1000) {
lastPrint = millis();
if (radar.presenceDetected()) {
if (radar.movingTargetDetected()) {
Serial.printf("움직이는 사람: %d cm, 세기 %d\n",
radar.movingTargetDistance(), radar.movingTargetEnergy());
}
if (radar.stationaryTargetDetected()) {
Serial.printf("정지한 사람: %d cm, 세기 %d\n",
radar.stationaryTargetDistance(), radar.stationaryTargetEnergy());
}
} else {
Serial.println("감지 없음");
}
}
}
- 1 Line: ld2410 라이브러리를 포함한다.
- 3~4 Line: 센서의 TX를 연결한 ESP32 수신 핀(GPIO16)과 센서의 RX를 연결한 송신 핀(GPIO17)을 지정한다.
- 6~7 Line: 레이더 객체와 출력 간격을 확인하기 위한 시간 변수를 선언한다.
- 11 Line: Serial2를 LD2410의 통신 속도인 256000bps로 시작한다.
- 14~18 Line: 센서와 통신을 시작하고, 연결 결과를 시리얼 모니터에 출력한다.
- 22 Line: 센서가 보내는 데이터를 읽어 들인다. 데이터가 계속 들어오므로 loop()에서 delay() 없이 자주 호출해야 한다.
- 24~25 Line: 센서가 연결되어 있고 1초가 지났을 때만 결과를 출력한다.
- 26 Line: 움직이거나 정지한 사람이 감지되었는지 확인한다.
- 27~30 Line: 움직이는 사람이 있으면 거리(cm)와 신호 세기(0~100)를 출력한다.
- 31~34 Line: 정지한 사람이 있으면 거리와 신호 세기를 출력한다.
코드를 업로드한 후 시리얼 모니터(115200bps)를 열고 센서 앞에서 움직이거나 가만히 서 있으면 상태에 따라 거리 값이 출력되는 것을 확인할 수 있다. 거리 값은 0.75m 구간 단위로 계산되므로 정밀한 거리 측정용이 아니라 대략적인 위치 확인용으로 사용하는 것이 좋다.
[이미지: 시리얼 모니터에 출력된 거리와 신호 세기 값]
6. 주요 용도 및 주의사항
추천 주요 용도:
- 재실 감지 조명: 책상, 화장실, 거실 등에서 사람이 가만히 있어도 조명이 꺼지지 않는 자동 조명을 만들 수 있다.
- 스마트홈 센서: ESP32와 함께 Home Assistant 등에 연결하여 방에 사람이 있는지에 따라 에어컨, 난방, 모니터 전원을 제어할 수 있다.
- 숨김형 감지 장치: 케이스 안에 넣어도 감지가 되므로 외부에 센서가 드러나지 않는 장치를 만들 수 있다.
- 거리별 동작 장치: 사람이 가까이 오면 화면을 켜거나 안내 음성을 재생하는 등 거리에 따라 다르게 동작하는 장치를 만들 수 있다.
사용 시 주의사항:
- 오감지: 선풍기, 커튼, 화분처럼 움직이는 물체나 반려동물도 감지될 수 있으므로, 앱에서 해당 거리 구간의 감도를 낮추거나 최대 감지 거리를 줄여야 한다.
- 금속 차폐: 전파는 금속을 통과하지 못하므로 금속 케이스 안에 넣거나 금속판 뒤에 설치하면 감지되지 않는다.
- 전원 품질: 전원 노이즈가 많으면 오감지가 늘어나므로 안정적인 5V 전원을 사용하고, 필요하면 VCC와 GND 사이에 커패시터(예: 100μF)를 추가한다.
- 통신 속도: 256000bps는 SoftwareSerial로 처리하기 어려우므로 하드웨어 UART를 사용해야 한다.
구매좌표:
HLK-LD2410 5V Mini High Sensitivity 24GHz Human Presence Status Sensor Radar Module - AliExpress 502
Smarter Shopping, Better Living! Aliexpress.com
www.aliexpress.com
'각종 부품 사용방법 > 입력장치' 카테고리의 다른 글
| HX711 로드셀로 무게 측정하기(전자저울 만들기) (0) | 2026.11.03 |
|---|---|
| ESP32-CAM Adapter보드 활용방법 (0) | 2022.02.10 |
| 심박센서의 원리와 사용방법 (0) | 2021.05.02 |
| 젯슨나노(Jetson Nano)에서 Raspberry 카메라 사용하기 (0) | 2021.02.18 |
| 라즈베리파이 카메라 사양과 사용방법 (1) | 2021.01.30 |









