아두이노 코드 및 HC-SR501 모션 센서용 비디오
이 튜토리얼에서는 적외선 기술을 통해 움직임을 감지하도록 설계된 HC-SR501 모션 센서를 살펴보겠습니다. 이 센서는 출력을 트리거하여 모션 감지에 따라 LED나 알람과 같은 장치를 제어할 수 있게 해줍니다. 이 튜토리얼이 끝나면 센서를 배선하고 Arduino 코드를 구현하여 효과적으로 작동시키는 방법을 명확히 이해하게 될 것입니다. (영상 00:45 부분)

하드웨어 설명
HC-SR501 모션 센서는 32 x 24밀리미터 크기의 컴팩트한 모듈로, 5~20볼트의 전압 범위에서 작동할 수 있습니다. 핵심에는 LHI 778 적외선 센서가 있으며, 적외선 복사의 변화를 감지하여 움직임을 감지합니다. 이로 인해 보안 시스템과 로봇 프로젝트를 포함한 다양한 응용 분야에 적합합니다.
이 모듈에는 전원용 VCC, 접지용 GND, 출력 신호용 OUT의 세 가지 주요 핀이 있습니다. 움직임이 감지되면 OUT 핀은 높은 신호(3.3볼트 TTL)를 보내며, 이를 사용하여 알람이나 다른 장치를 트리거할 수 있습니다. 센서에는 조정 가능한 감도 및 시간 지연 설정도 포함되어 있어 특정 요구 사항에 맞게 작동을 사용자 지정할 수 있습니다.
데이터시트 세부 정보
| 제조업체 | HC-SR501 |
|---|---|
| 부품 번호 | HC-SR501 |
| 로직/IO 전압 | 3.3 V |
| 공급 전압 | 5–20 V |
| 출력 전류 (채널당) | ≤ 20 mA |
| 피크 전류 (채널당) | ≤ 50 mA |
| PWM 주파수 가이드 | 해당 없음 |
| 입력 로직 임계값 | 0.8 V (LOW), 2.0 V (HIGH) |
| 전압 강하 / RDS(on) / 포화 | 0.1 V |
| 열 제한 | 0°C ~ 70°C |
| 패키지 | 모듈 |
| 참고 사항 / 변형 | 감도 및 시간 지연 조정 가능 |
- 올바른 공급 전압(5-20 V)을 확인하세요.
- 전류를 제한하려면 LED와 직렬로 저항을 사용하세요.
- 감지 범위를 위해 감도 가변 저항을 조정하세요.
- 출력이 높게 유지되는 시간을 제어하려면 시간 지연을 설정하세요.
- 플로팅 입력에 주의하고 필요에 따라 풀업 또는 풀다운 저항을 사용하세요.
배선 지침

HC-SR501 모션 센서를 배선하려면 먼저 VCC 핀을 Arduino의 5V 출력에 연결하세요. 다음으로 GND 핀을 Arduino의 접지(GND)에 연결하세요. OUT 핀은 Arduino의 디지털 핀 2에 연결해야 하며, 이 핀이 모션 감지 신호를 읽습니다.
시각적 피드백을 위해 LED를 사용하는 경우 LED의 애노드(긴 핀)를 Arduino의 디지털 핀 8에 연결하세요. 캐소드(짧은 핀)는 680옴 저항의 한쪽 단자에 연결하고, 저항의 다른 쪽 단자는 접지에 연결해야 합니다. 이 설정을 통해 Arduino는 모션 감지에 따라 LED를 제어할 수 있습니다.
코드 예제 및 설명
이 설정을 위한 Arduino 코드는 시리얼 모니터를 초기화하고 입력 및 출력 핀을 구성합니다. 코드의 주요 식별자에는 모션 센서의 상태를 저장하는 motion과 입력 읽기 및 LED 제어에 사용되는 디지털 핀이 포함됩니다.
void setup() {
Serial.begin(9600);// 정보 표시를 위해 시리얼 모니터 설정
pinMode(2, INPUT);// 센서로부터 입력
pinMode(8, OUTPUT);// 알람 또는 LED로 출력
}
이 발췌문에서 setup() 함수는 시리얼 통신을 초기화하고 센서와 LED의 핀 모드를 설정합니다. 핀 2는 모션 센서의 출력을 읽기 위한 입력으로 설정되고, 핀 8은 LED를 제어하기 위한 출력으로 설정됩니다.
void loop() {
int motion = digitalRead(2);
if(motion){
Serial.println("Motion detected");
digitalWrite(8, HIGH);
}else{
Serial.println("===nothing moves");
digitalWrite(8, LOW);
}
delay(500);
}
이 코드 스니펫은 프로그램이 모션 센서의 상태를 지속적으로 확인하는 메인 루프를 나타냅니다. 움직임이 감지되면 시리얼 모니터에 "Motion detected"를 출력하고 LED를 켭니다. 움직임이 감지되지 않으면 "===nothing moves"를 출력하고 LED를 끕니다.
시연 / 예상 결과
설정이 완료되고 코드가 Arduino에 업로드되면 HC-SR501 센서가 움직임을 감지할 때 LED가 켜지는 것을 확인할 수 있습니다. 또한 시리얼 모니터에는 움직임 감지 여부를 나타내는 메시지가 표시됩니다. 센서의 감도 및 시간 지연 설정을 조정하면 센서가 움직임에 반응하는 속도가 달라지는 것을 확인할 수 있습니다 (영상 05:30 부분).
일반적인 문제로는 VCC와 GND 연결을 반대로 하는 등의 잘못된 배선이 있으며, 이는 센서를 손상시킬 수 있습니다. 플로팅 입력을 방지하려면 센서의 출력 핀이 Arduino의 지정된 입력 핀에 올바르게 연결되었는지 확인하세요.
영상 타임스탬프
- 00:00 소개
- 00:45 하드웨어 개요
- 02:30 배선 지침
- 04:00 코드 설명
- 05:30 시연
/*
* This is the Arduino code for HC-SR501 Motion Sensor
* to detect motion of humans or objects using Arduino for robotic car and other applications
* Watch the video https://youtu.be/mZCJNOf69JI
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: Dec 27, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(2, INPUT);// Input from sensor
pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}
void loop() {
int motion =digitalRead(2);
if(motion){
Serial.println("Motion detected");
digitalWrite(8,HIGH);
}else{
Serial.println("===nothing moves");
digitalWrite(8,LOW);
}
delay(500);
}
자원 및 참고자료
아직 자원이 없습니다.
파일📁
다른 파일들
-
HC-SR501 모션 센서 LHI778 매뉴얼
robojax-HC-SR501-motion-LHI778-manual.pdf0.20 MB