ESP32 - 모션 센서 | ESP32 - Motion Sensor
이 튜토리얼은 ESP32를 HC-SR501 모션 센서와 함께 사용하는 방법을 지시합니다. 구체적으로 우리는 배울 것입니다:
- HC-SR501 움직임 센서의 작동 원리
- HC-SR501 움직임 센서를 ESP32에 연결하는 방법
- 사람을 감지하기 위해 HC-SR501 움직임 센서에서 값을 읽는 방법
준비물
1 | × | ESP-WROOM-32 Dev Module | 쿠팡 | 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 ESP32 | 쿠팡 | 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 센서에 의해 감지될 수 있습니다.
위의 동영상은 모션 센서의 작동 원리를 보여줍니다. 실제로, 모션 센서는 센서 설정(고급 사용법 섹션에서 설명됨)에 따라 다르게 작동할 수 있습니다.
인간의 존재 감지
센서 자체가 인간의 존재를 직접 감지하지는 않으며, 단지 움직임을 감지할 뿐입니다. 그리고 움직임이 감지되면 인간의 존재가 추론됩니다:
이 규칙에는 실제로 문제가 있습니다. 센서 범위 내에 사람이 있지만 움직이지 않습니다. 움직임이 감지되지 않습니다. ESP32(또는 MCU)는 사람이 없다고 판단합니다.
그러나 이 문제는 심각하지 않고 센서의 가격이 저렴하기 때문에 많은 응용 프로그램에서 사람을 탐지하는 데 널리 사용됩니다.
ESP32 와 HC-SR501 모션 센서
ESP32의 핀이 디지털 입력으로 설정되면, 연결된 모든 것의 상태(LOW 또는 HIGH)를 읽을 수 있습니다.
ESP32의 핀을 HC-SR501 센서의 OUTPUT 핀에 연결함으로써, ESP32 코드를 사용하여 OUTPUT 핀의 값을 읽고, 그 후에 움직임을 추론할 수 있습니다.
HC-SR501 모션 센서와 ESP32 간의 배선도
USB 케이블의 전원 공급을 포함한 배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.
5V 어댑터로부터의 전원 공급을 포함한 배선도
이 이미지는 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를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
- 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
- Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
- Arduino IDE에서 시리얼 모니터를 엽니다.
- 센서 범위 앞으로 손을 움직이세요
- 시리얼 모니터에서 출력을 확인하세요
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.