아두이노 나노 - 모션 센서 | Arduino Nano - Motion Sensor
당신이 자동 문, 조명, 에스컬레이터가 있는 장소를 마주쳤을 때 “어떻게 그런 일이 가능한 거지?”라고 궁금해한 적이 있나요? 만약 그렇다면, 이 튜토리얼은 당신의 질문에 답할 뿐만 아니라 아두이노 나노와 모션 센서를 사용하여 그것을 실현하는 방법을 보여줄 것입니다. 시작해볼까요!
이 튜토리얼은 모션 센서와 함께 아두이노 나노를 사용하는 방법을 안내합니다. 자세히는, 우리는 배울 것입니다:
- HC-SR501 모션 센서 작동 방법
- 아두이노 나노에 HC-SR501 모션 센서를 연결하는 방법
- 아두이노 나노를 프로그래밍하여 HC-SR501 모션 센서의 상태를 읽는 방법
- 아두이노 나노와 HC-SR501 모션 센서를 사용하여 인간의 존재를 감지하고 그에 따라 조치를 취하는 방법
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | HC-SR501 Motion Sensor | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
HC-SR501 모션 센서에 관하여
HC-SR501 PIR 센서는 사람(또는 동물)의 움직임을 감지할 수 있습니다. 이 센서는 전등을 자동으로 켜거나 끄기, 문을 열거나 닫기, 에스컬레이터를 활성화하거나 비활성화하기, 침입자 감지 등 다양한 용도로 일반적으로 사용됩니다.
모션 센서 핀배열
HC-SR501 모션 센서에는 3개의 핀이 있습니다:
- GND 핀: 이것은 GND(0V)에 연결되어야 합니다.
- VCC 핀: 이것은 VCC(5V)에 연결되어야 합니다.
- 출력 핀: 이것은 출력 핀이며 움직임이 감지되지 않을 때는 LOW가 되고 움직임이 감지될 때 HIGH가 됩니다. 이 핀은 아두이노의 입력 핀에 연결되어야 합니다.
HC-SR501은 센서 설정을 조정하는 데 사용되는 점퍼와 두 개의 가변 저항기가 있습니다.
작동 원리
HC-SR501 센서는 움직이는 물체에서 나오는 적외선의 변화를 감지하여 움직임을 탐지할 수 있습니다. HC-SR501 센서가 물체를 감지하려면 두 가지 기준이 충족되어야 합니다:
- 객체는 움직이거나 흔들려야 합니다.
- 객체는 적외선을 방출해야 합니다.
따라서:
- 물체가 이동 중이지만 적외선을 방출하지 않는 경우(예: 로봇이나 자동차 장난감 등), 센서에 의해 감지되지 않을 것입니다.
- 물체가 적외선을 방출하지만 이동하지 않는 경우(예: 가만히 서 있는 사람 등), 센서에 의해 감지되지 않을 것입니다.
인간과 동물은 적외선 방사의 원천입니다. 따라서 센서는 그들의 움직임을 감지할 수 있습니다.
출력 핀의 상태:
- 센서의 감지 범위에 인간(또는 동물)이 없을 때, 센서의 출력 핀은 LOW 상태입니다.
- 인간(또는 동물)이 센서의 감지 범위에 들어오면, 출력 핀은 LOW에서 HIGH로 전환되어 움직임이 감지되었음을 나타냅니다.
- 인간(또는 동물)이 센서의 감지 범위를 벗어나면, 출력 핀은 HIGH에서 LOW로 전환되어 움직임이 종료되었음을 의미합니다.
위의 비디오는 모션 센서의 기본 작동 방식을 보여줍니다. 실제로 모션 센서는 구성에 따라 다르게 작동할 수 있습니다(이는 고급 사용법 섹션에서 설명되어 있습니다).
인간의 존재를 감지하세요
센서 자체는 사람의 존재를 인식하지 않습니다. 단지 움직임만 감지합니다. 우리는 센서가 감지한 움직임을 바탕으로 아두이노 나노를 사용하여 다음 규칙에 따라 사람의 존재를 추론합니다:
- 만약 움직임이 감지된다면, 사람이 있는 것이다.
- 만약 움직임이 감지되지 않는다면, 사람이 없는 것이다.
이 규칙은 실제 상황에서 완벽하게 작동하지 않습니다: 사람들이 센서의 범위 안에 있지만 움직이지 않을 때는 움직임이 감지되지 않습니다. 따라서 아두이노 나노는 사람이 없다고 결론지을 것입니다.
예를 들어, 회의실의 모션 센서는 사람이 있을 때 불을 켜도록 설정되어 있습니다. 회의가 진행 중이고 아무도 움직이지 않으면 모션을 감지하지 못하여 사람의 존재를 인식하지 못하고, 결과적으로 불이 꺼집니다. 불을 다시 켜려면 누군가 움직여야 합니다.
그러나 이 문제는 심각하지 않으며 센서가 저렴합니다. 따라서 많은 애플리케이션에서 인간을 감지하는 데 널리 사용됩니다.
아두이노 나노 - HC-SR501 모션 센서
아두이노의 디지털 입력 핀을 HC-SR501 센서의 출력 핀에 연결하세요. 아두이노 나노 코드를 사용하여 출력 핀의 값이 변화하는 것을 확인함으로써 움직임을 감지할 수 있습니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
초기 설정
Time Delay Adjuster | Screw it in anti-clockwise direction fully. |
Detection Range Adjuster | Screw it in clockwise direction fully. |
Repeat Trigger Selector | Put jumper as shown on the image. |
움직임 센서를 위한 프로그래밍 방법
Arduino의 핀을 디지털 입력으로 설정하려면 pinMode() 함수를 사용하세요.
센서의 OUTPUT 핀 상태를 digitalRead() 함수로 확인하세요.
움직임이 시작되는 시점을 확인하십시오 (핀의 상태가 LOW에서 HIGH로 변경됩니다).
핀의 상태가 HIGH에서 LOW로 변하여 움직임이 멈췄음을 알아내십시오.
아두이노 나노 코드
사용 방법
- 위의 코드를 복사하고 Arduino IDE에서 열어보세요.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 Arduino Nano에 업로드하세요.
- 시리얼 모니터를 엽니다.
- 센서의 범위 안에서 손을 움직이세요.
- 시리얼 모니터에서 출력을 확인하세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
고급 사용법
앞서 언급했듯이, 점프선 하나와 두 개의 가변 저항을 사용하여 센서의 구성을 변경할 수 있습니다.
탐지 범위 조절기
이 포텐쇼미터는 어떤 것이 감지될 수 있는 거리를 변경할 수 있습니다(약 3에서 7미터까지).
- 오른쪽으로 완전히 돌리면 3미터까지 감지할 수 있게 합니다.
- 왼쪽으로 완전히 돌리면 7미터까지 감지할 수 있게 합니다.
우리는 3m에서 7m 사이의 값 범위를 설정하기 위해 전위차계를 사용할 수 있습니다.
시간 지연 조정기
이 저항기는 시간 지연을 조정하는 데 사용됩니다:
- 시계 방향으로 완전히 돌렸을 때, 시간 지연은 대략 5분입니다.
- 반시계 방향으로 완전히 돌렸을 때, 시간 지연은 약 3초입니다.
다음 부분에서는 반복 트리거와 함께 시간 지연 개념에 대한 설명을 제공합니다.
반복 트리거 선택기
트리거 모드를 선택하는 데 사용되는 점퍼가 있습니다: 단발 트리거 또는 반복 가능한 트리거.
시간 지연 조정기를 통해 설정되는 시간 지연 설정을 time_delay라고 합시다. 센서의 범위 내에서 time_delay보다 몇 배 더 긴 시간(이는 motion_time으로 알려져 있습니다) 동안 움직인다면:
단일 트리거 모드에서: OUTPUT 핀의 상태는 여러 번 LOW와 HIGH 사이를 전환됩니다. HIGH 지속 시간은 time_delay와 동일하며, LOW 지속 시간은 3초로 고정됩니다.
반복 트리거 모드: OUTPUT 핀의 상태는 (motion_time + time_delay)의 기간 동안 HIGH 상태를 유지합니다.
테스팅
단일 트리거 모드:
- 점퍼를 옮겨 단일 트리거 모드를 선택하세요.
- 센서 앞에서 손을 약 10초 동안 흔들어주세요.
- 손을 센서의 영역에서 멀리 이동하세요.
- 3초를 기다린 후, 시리얼 모니터에서 다음과 같은 출력을 관찰해야 합니다:
반복 가능한 트리거 모드:
- 반복 가능한 트리거 모드를 선택하려면 점퍼를 설치하세요
- 센서 앞에서 손을 흔들어 약 10초 동안 유지하세요
- 센서의 감지 범위에서 손을 빼세요
- 3초를 기다리세요, 그러면 시리얼 모니터에서 이렇게 출력이 보일 것입니다:
단일 트리거 모드일 때 센서가 두 번 또는 세 번 활성화됨을 관찰할 수 있습니다. 반면, 반복 가능한 트리거 모드에서는 센서가 한 번만 트리거됩니다.
※ NOTE THAT:
낮은 시간 동안(3초, 고정되어 조절할 수 없는 값) 센서는 어떠한 움직임도 감지할 수 없습니다. 이것은 실제로 문제를 일으키지 않습니다.
반복 가능한 트리거 모드 사용을 권장합니다.
많은 실제 상황에서:
- 인간이 존재하자마자 장치/기계를 켜거나 활성화합니다
- 인간이 더 이상 존재하지 않은 바로 후에 장치/기계를 끄거나 비활성화하지 않습니다. 우리는 일정 시간이 지난 후에 장치/기계를 끄거나 비활성화합니다.
시간 지연 사용 방법
인간이 감지되지 않으면, 자동화 시스템은 조치를 취하기 전에 일정 기간 동안 대기할 것입니다.
모션 센서는 3초의 최소값부터 5분의 최대값까지 시간 지연을 설정할 수 있는 시간 지연 조절기를 가지고 있습니다. 추가적으로, 아두이노 나노 코드를 사용하여 시간 지연에 대한 어떤 값이든 설정할 수 있습니다.
아두이노 나노 코드에서 타임아웃을 지정하지 않으면, 타임아웃은 센서에 설정된 시간 지연과 동일하게 됩니다.
아두이노 나노 코드에서 타임아웃이 설정되면 센서 구성의 시간 지연과 아두이노 나노 코드의 시간 지연의 합계가 됩니다.
아두이노 나노 코드에서 시간 지연 설정하기
반복 가능한 트리거 모드가 활성화되면 코드의 지연 시간은 시간 지연 조절기를 통해 센서의 설정에서 설정된 time_delay에 30초가 더해진 값이 됩니다.
도전하세요
모션 센서를 사용하여 다음 프로젝트 중 하나를 수행하세요:
- 방에 들어갔을 때 불을 켜고 나간 후 30초 후에 불을 끄세요. 팁: 아두이노 나노 - 릴레이를 확인해보세요.
- 귀중품에 누군가 다가올 때 경보를 울리세요. 팁: 아두이노 나노 - 피에조 부저를 확인해보세요.