아두이노 나노 ESP32 - 모션 센서 | Arduino Nano ESP32 - Motion Sensor
이 튜토리얼은 Arduino Nano ESP32를 HC-SR501 모션 센서와 함께 사용하는 방법에 대한 지침을 제공합니다. 자세히는, 우리는 다음을 배우게 됩니다:
- HC-SR501 모션 센서의 작동 방식
- HC-SR501 모션 센서를 Arduino Nano ESP32에 연결하는 방법
- 사람을 감지하기 위해 HC-SR501 모션 센서에서 값을 읽는 방법
준비물
1 | × | Arduino Nano ESP32 | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | HC-SR501 Motion Sensor | 쿠팡 | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) DC Power Jack | 쿠팡 | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
HC-SR501 모션 센서에 대하여
HC-SR501 PIR 센서는 인간(또는 동물)의 움직임을 감지할 수 있는 센서입니다. 이 센서는 많은 애플리케이션에서 인간의 존재를 감지하는 데 널리 사용되고 있습니다(자동으로 전등을 켜거나 끄기, 에스컬레이터를 활성화/비활성화하기, 침입자 감지, 문 여닫기 등).
HC-SR501 모션 센서 핀배열
HC-SR501 모션 센서에는 3개의 핀이 있습니다:
- VCC 핀: 이 핀을 VCC(5V)에 연결하세요.
- GND 핀: 이 핀을 GND(0V)에 연결하세요.
- OUTPUT 핀: 이 핀을 ESP32의 입력 핀에 연결하세요. 이 핀은 움직임 감지에 따라 신호를 출력합니다:
- 움직임이 감지되지 않으면 LOW
- 움직임이 감지되면 HIGH
- 객체가 적외선을 방출하고 있습니다.
- 객체가 움직이거나 흔들리고 있습니다.
- 객체가 적외선을 방출하지만 움직이지 않는 경우(예: 사람이 움직이지 않고 가만히 서 있는 경우), 센서에 의해 감지되지 않습니다.
- 객체가 움직이지만 적외선을 방출하지 않는 경우(예: 로봇이나 차량), 센서에 의해 감지되지 않습니다.
- 움직임이 감지되면 사람이 있습니다
- 움직임이 감지되지 않으면 사람이 없습니다
HC-SR501 모션 센서에는 두 개의 포텐쇼미터와 한 개의 점퍼가 있습니다. 이러한 포텐쇼미터와 점퍼는 센서 설정을 조정하는 데 사용됩니다. 자세한 지침은 고급 사용법에 설명되어 있습니다.
HC-SR501 모션 센서의 작동 방식
HC-SR501 센서의 작동 원리는 움직이는 물체의 적외선 복사 변화를 기반으로 합니다. HC-SR501 센서에 의해 감지되기 위해서는 물체가 두 가지 요구 사항을 충족해야 합니다:
그래서:
동물과 사람들은 자연스럽게 적외선을 방출합니다. 따라서, 동물과 사람들은 움직이고 있을 때 HC-SR501 센서에 의해 감지될 수 있습니다.
위 비디오는 모션 센서의 작동 원리를 보여줍니다. 실제로 모션 센서는 센서 설정(고급 사용법 섹션에 설명됨)에 따라 다르게 작동할 수 있습니다.
인간의 존재 감지
센서 자체는 인간의 존재를 직접 감지하지 않습니다. 센서는 단지 움직임을 감지할 뿐입니다. 그리고 움직임 감지 시 인간의 존재는 추론됩니다.
이 규칙에는 실제로 문제가 있습니다. 사람들이 센서 범위 내에 있지만 움직이지 않습니다. 따라서 움직임이 감지되지 않습니다. Arduino Nano ESP32(또는 MCU)는 사람이 없다고 판단합니다.
그러나 이 센서는 이 문제가 심각하지 않고 가격이 저렴하기 때문에 많은 응용 프로그램에서 사람을 감지하기 위해 널리 사용됩니다.
아두이노 나노 ESP32 및 HC-SR501 모션 센서
ESP32의 핀이 디지털 입력으로 구성되면 연결된 모든 것의 상태(LOW 또는 HIGH)를 읽을 수 있습니다.
ESP32의 핀을 HC-SR501 센서의 OUTPUT 핀에 연결함으로써, 아두이노 나노 ESP32 코드를 사용하여 OUTPUT 핀의 값을 읽고 그로부터 움직임을 추론할 수 있습니다.
HC-SR501 모션 센서와 아두이노 나노 ESP32 간의 배선도
아두이노 나노 ESP32 보드를 USB 포트를 통해 전원을 공급할 때의 배선도.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 나노 ESP32 보드를 Vin 핀을 통해 전원을 공급할 때의 배선도.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
초기 설정
Detection Range Adjuster | Fully screw it in the clockwise direction. |
Time Delay Adjuster | Fully screw it in the anti-clockwise direction. |
Repeat Trigger Selector | Put jumper like the below image. |
모션 센서를 프로그래밍하는 방법
pinMode() 함수를 사용하여 ESP32의 핀을 디지털 입력 모드로 설정합니다.
digitalRead() 함수를 사용하여 센서의 OUTPUT 핀 상태를 읽으십시오.
- 모션 시작 감지 (핀 상태가 LOW에서 HIGH로 변경)
모션 중지 감지 (핀의 상태가 HIGH에서 LOW로 변경됨)
아두이노 나노 ESP32 코드
사용 방법
- 아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정하는 방법을 보려면 여기를 참조하세요.
- 위의 코드를 복사하여 아두이노 IDE에 붙여넣으세요.
- 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노 나노 ESP32 보드에 코드를 컴파일하고 업로드하세요.
- 아두이노 IDE에서 시리얼 모니터를 열어주세요.
- 센서 범위 앞으로 손을 움직이세요
- 시리얼 모니터에서 출력을 확인하세요
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.