코드 검색

아두이노 코드 및 HC-SR501 모션 센서용 비디오

아두이노 코드 및 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와 직렬로 저항을 사용하세요.
  • 감지 범위를 위해 감도 가변 저항을 조정하세요.
  • 출력이 높게 유지되는 시간을 제어하려면 시간 지연을 설정하세요.
  • 플로팅 입력에 주의하고 필요에 따라 풀업 또는 풀다운 저항을 사용하세요.

배선 지침

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

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 부분).

일반적인 문제로는 VCCGND 연결을 반대로 하는 등의 잘못된 배선이 있으며, 이는 센서를 손상시킬 수 있습니다. 플로팅 입력을 방지하려면 센서의 출력 핀이 Arduino의 지정된 입력 핀에 올바르게 연결되었는지 확인하세요.

영상 타임스탬프

  • 00:00 소개
  • 00:45 하드웨어 개요
  • 02:30 배선 지침
  • 04:00 코드 설명
  • 05:30 시연

이미지

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
48-This is the Arduino code for the HC-SR501 motion sensor.
언어: C++
/*
 * 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);

}

자원 및 참고자료

아직 자원이 없습니다.

파일📁

다른 파일들