<목표>
- 사람을 감지하는 프로젝트에서 빠지지 않는 PIR 센서의 사용법을 다뤄보도록 한다.
<준비물>
- 아두이노(우노, 나노, 메가), PIR센서
<회로도>
<코드>
const int led_pin = 13;
const int pir_pin = 3;
int state = 0; // 센서 상태 값 저장 변수(0: LOW, 1: HIGH)
int pre_state = 0;
int count = 0;
void setup(void){
Serial.begin(9600);
Serial.println("");
pinMode(led_pin, OUTPUT);
pinMode(pir_pin, INPUT);
delay(10);
Serial.println();
}
void loop(){
state = digitalRead(pir_pin);
digitalWrite(led_pin, LOW);
if (pre_state==0 && state == 1)
{
count ++;
Serial.print("Human Detect! count : ");
Serial.println(count);
digitalWrite(led_pin, HIGH);
}
else if(pre_state == 0 && state == 0)
{
digitalWrite(led_pin, LOW);
}
pre_state = state;
}
센서선을 아두이노의 3번핀에 꽂으면 위의 코드를 그대로 사용해도 된다.
<실행 결과>
사람의 움직임을 감지하여 해당 부근을 지나간 사람수 또는 횟수를 측정하는 코드의 실행 결과이다.
통행량 같은 것을 조사할 때 사용할 수 있겠다.
다만 이 경우에는 사람이 한명씩 다닐 때에만 유효한 측정값이라는 것이 큰 단점이다.
두명이서 같은 PIR 센서가 감지하는 지점을 지나는 경우와
한명이 감지 지점을 지나는 경우를 센서는 동일하게 판단하기 때문이다.
PIR 센서의 단점을 꼽아보자면, 여러가지가 있지만 그중에서 대표적인 것은
1. 오감지가 꽤 있는 편이다.
2. 방향을 감지하지 못한다.
위의 두가지가 되겠다.
1번의 경우가 심각한 것인데,
감지거리가 나름 긴 편에 속해서 비교적 멀리에서도 감지가 되지만,
그만큼 센서가 민감하기 때문에 사람이 아닌 다른 물체의 움직임에도 반응하곤 한다.
2번의 경우에는 해당 센서의 아쉬운 부분이라 할 수 있는데,
구조 원리상 어쩔 수 없는 부분이다.
사람의 대략적인 방향까지 알 수 있었으면 엄청 좋았을 텐데, 아쉬운 부분이다.
장점은 가격이 너무 저렴하다는 것이다.
센서등에서 사용하는 센서가 바로 이 PIR 센서이다.
짝퉁이 넘쳐흐른다고하니, 조심히 구매해야한다.
※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!
'코딩 > 아두이노' 카테고리의 다른 글
아두이노 네오픽셀로 LED 색 조절하는 방법 (0) | 2021.10.14 |
---|---|
아두이노와 블루투스모듈 ZS-040로 스마트폰과 통신하기 (0) | 2021.04.30 |
아두이노 지문인식 센서 사용하는 방법 (0) | 2021.04.15 |
로드셀과 HX711을 이용해서 무게 측정해보기 - 하프브릿지 (30) | 2021.04.02 |
[SZH-SSBH-002] 적외선 장애물(물체) 감지 센서 사용하는 방법 (2) | 2021.04.01 |
댓글