코드 검색

HC-SR505 모션 센서 모듈과 릴레이를 위한 Arduino 코드 및 비디오

HC-SR505 모션 센서 모듈과 릴레이를 위한 Arduino 코드 및 비디오

이 튜토리얼에서는 HC-SR505 모션 센서와 릴레이 모듈을 사용하여 모션 감지 시스템을 구축합니다. 이 설정을 통해 모션이 감지되면 조명이나 부저와 같은 장치를 켤 수 있습니다. 릴레이는 고전압 장치를 안전하게 제어하는 스위치 역할을 합니다. 이 가이드가 끝나면 움직임 감지에 따라 다양한 가전제품을 활성화할 수 있는 작동하는 모션 센서 설정을 갖추게 됩니다. 더 명확한 이해를 위해 관련 비디오(비디오 0:00 부분)를 확인하세요.

HC-SR505 motion sensor

하드웨어 설명

이 프로젝트의 주요 구성 요소는 HC-SR505 모션 센서, 릴레이 모듈 및 Arduino 보드입니다. HC-SR505는 적외선 복사의 변화를 감지하여 움직임을 감지하는 수동 적외선(PIR) 센서입니다. 시야 내 물체에서 방출되는 열을 측정하여 작동합니다. 움직이는 물체가 감지되면 센서는 Arduino에 신호를 보냅니다.

릴레이 모듈은 전구와 같은 고전압 장치를 제어하는 데 사용됩니다. 전기적으로 작동하는 스위치 역할을 하여 Arduino가 장치를 안전하게 켜거나 끌 수 있게 합니다. 릴레이에는 일반적으로 열림(NO)과 일반적으로 닫힘(NC)의 두 가지 주요 구성이 있으며, 이는 릴레이가 활성화되지 않았을 때의 기본 상태를 결정합니다.

데이터시트 세부 정보

제조업체HC-SR505
부품 번호HC-SR505
로직/IO 전압3.3V - 20V
공급 전압5V
출력 전류(채널당)20 mA
피크 전류(채널당)100 mA
PWM 주파수 가이드해당 없음
입력 로직 임계값0.3V(낮음) / 2.5V(높음)
전압 강하 / RDS(on) / 포화0.2V
열 제한+70 °C
패키지모듈
참고 사항 / 변형소형 폼 팩터; 저전력 소비

  • 고전류 부하에 대해 적절한 방열을 보장하세요.
  • 안정적인 전원 공급을 위해 디커플링 커패시터를 사용하세요.
  • 고전압 연결에 주의하고 안전을 보장하세요.
  • 릴레이에 연결하기 전에 간단한 출력으로 센서를 테스트하세요.
  • 최적의 감지를 위해 PIR 센서의 방향을 확인하세요.

배선 지침

Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor

HC-SR505 모션 센서를 배선하려면 먼저 전원 핀(+)을 Arduino의 5V 출력에 연결하세요. 다음으로 접지 핀(-)을 Arduino의 접지 핀 중 하나에 연결하세요. 신호 핀(중간 핀)은 Arduino의 디지털 핀 2에 연결해야 합니다.

릴레이 모듈의 경우 VCC 핀을 Arduino의 5V 출력에 연결하고 접지 핀을 Arduino의 접지에 연결하세요. 릴레이의 입력 핀은 Arduino의 디지털 핀 9에 연결해야 합니다. 마지막으로 부저의 양극 단자를 디지털 핀 8에 연결하고 음극 단자를 접지에 연결하세요. 장치를 제어하려면 릴레이의 공통 및 일반적으로 열림 핀을 적절히 연결해야 합니다.

코드 예제 및 설명

이 프로젝트의 코드는 센서, 부저 및 릴레이용 핀을 초기화합니다. digitalRead() 함수를 사용하여 모션을 확인하고 그에 따라 응답합니다. 아래는 설정 함수의 발췌문입니다:


void setup() {
  Serial.begin(9600); // 시리얼 모니터 설정
  pinMode(PIR, INPUT_PULLUP); // 센서용 입력 핀으로 정의
  pinMode(BUZZER, OUTPUT); // 부저용 출력 핀으로 정의
  pinMode(RELAY, OUTPUT); // 릴레이용 출력 핀으로 정의
}

이 발췌문에서 핀은 입력 또는 출력 모드로 설정됩니다. Serial.begin(9600)은 디버깅을 위한 시리얼 통신을 초기화합니다.

메인 루프는 모션을 확인하고 모션이 감지되면 부저와 릴레이를 활성화합니다. 다음은 루프 함수의 핵심 발췌문입니다:

Wirig relay module to AC load

void loop() {
  int motion = digitalRead(PIR); // 센서 읽기
  if(motion) {
    Serial.println("모션 감지됨");
    digitalWrite(BUZZER, HIGH); // 부저 켜기
    digitalWrite(RELAY, LOW); // 릴레이 켜기
  } else {
    Serial.println("===움직임 없음");
    digitalWrite(BUZZER, LOW); // 부저 끄기 유지
    digitalWrite(RELAY, HIGH); // 릴레이 끄기
  }
  delay(500);
}

이 발췌문은 PIR 센서의 상태를 읽고 감지된 모션에 따라 부저와 릴레이를 활성화하거나 비활성화합니다. 500밀리초의 지연은 루프가 합리적인 간격으로 센서를 확인하도록 보장합니다.

시연 / 기대 효과

모션이 감지되면 릴레이에 연결된 조명이 켜지고 부저가 울립니다. 모션이 감지되지 않으면 릴레이가 조명을 끄고 부저는 조용합니다. HC-SR505에는 모션 감지 후 출력을 짧은 시간(최대 8초) 동안 활성 상태로 유지하는 내장 지연이 있으며, 이는 조정할 수 없습니다(비디오 5:30 부분).

비디오 타임스탬프

  • 00:00 – 프로젝트 소개
  • 01:30 – 구성 요소 설명
  • 03:15 – 배선 지침
  • 05:30 – 코드 설명
  • 07:00 – 설정 시연

이미지

Wirig relay module to AC load
Wirig relay module to AC load
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor
74-This is the Arduino code for the HC-SR505 motion sensor (small) with relay.
언어: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of human or objects using Arduino for robotic car and other applications
 * Watch HC-SR505 video https://youtu.be/qhThpxiXubI
 * 
// Written by Ahmad S. for Robojax.com on 
// February 10, 2018 at 11:41 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.
 * 
 */


#define PIR 2 // define pin 2 for sensor
#define BUZZER 8 // define pin 8 as for buzzer
#define RELAY 9 // define pin 9 as for relay

void setup() {
  // HC-SR505 Motion Sensor Code by Robojax.com 20180210
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
  pinMode(BUZZER, OUTPUT);// define pin as OUTPUT for buzzer or LED
  pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}

void loop() {
  // HC-SR505 Motion Sensor Code by Robojax.com 20180210
  int motion =digitalRead(PIR);// read the sensor 
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(BUZZER,HIGH);// turn the buzzer ON
    digitalWrite(RELAY,LOW);// turn the relay ON
  }else{
     Serial.println("===nothing moves");
     digitalWrite(BUZZER,LOW);// keep the buzzer OFF
     digitalWrite(RELAY,HIGH);// turn the relay OFF
  }
  delay(500);
 // HC-SR505 Motion Sensor Code by Robojax.com 20180210
}

필요할 수 있는 것들

자원 및 참고자료

아직 자원이 없습니다.

파일📁

데이터시트 (pdf)

프리징 파일