본문 바로가기
아두이노 센서

[센서/움직임감지센서] PIR(passive infrared) motion sensor로 움직임을 감지해보자

by 작동미학 2015. 11. 10.
반응형

IR기반 움직임 센서를 통해 움직임을 감지해보자

 

▶ 이 가이드를 따라하면

- 꽤 긴 거리(7m)의 움직임을 감지하여 활용할 수 있다.

 

▶ 먼저 읽으면 좋은 글

- Arduino 일반 : http://bbangpan.tistory.com/1

 

▶ 부품 설명 및 회로 구성

PIR motion sensor는 시중의 다양한 가전/장치에 사용되는 인체 움직임 감지용 센서이다. 접근하면, 전등 불켜지는(?) 대표적인 센서라고 보면 된다. 장점은 일반적인 초음파 센서 등에 비해 꽤 장거리(7m전후)까지 처리할 수 있다는 점이다. 모듈 신호 구조는 단순해서 움직임이 감지되면 digital signal이 HIGH로 바뀐다. 생각보다 꽤 큰 범위의 상하좌우 각도 범위의 움직임 측정이 가능하다. 사진으로 보자

<PIR montion sensor>

다양한 버전이 있는데, 이 센서에는 위 설명대로 GND/5V/OUTPUT 이렇게 3개의 핀이 주로 장착되어 있다. 조절용 나사가 붙어있는 버전도 있는데, 움직임이 감지된 후 OUTPUT이 HIGH될때까지 다소의 시간지연이 가능하고 센서 감도를 조절하는게 가능하다. PIR 센서의 이름에 passive가 들어가는데 PIR은 (Passive InfraRed의 약자) 따로 빛을 생성하여 반사되는 것을 측정하는게 아니라, 물체에서 방출된 적외선의 움직임을 감지한다는 의미이다.

앞서 밝혔듯이 연결은 간단해서 다음 그림을 참조로 한다.

<PIR 센서와 Arduino 연결, GND->GND/VCC->5V/OUT->D7정도를 연결했다>


▶ 소스 코드 입력 및 구동

이 센서의 구동은 별도 라이브러리 없이 Digital Signal을 읽으면 끝이다. 몇가지 버전이 있는데 단순하게는 아래와 같다.

(아래는 D2에 digital pin이 연결되어 있다고 가정)

 

int pirPin = 2; //the digital pin connected to the PIR sensor's output

int ledPin = 13;

 

void setup(){

Serial.begin(9600);

pinMode(pirPin, INPUT);

pinMode(ledPin, OUTPUT);

digitalWrite(pirPin, LOW);

}

 

void loop(){

digitalWrite(ledPin, digitalRead(pirPin));

delay(50);

}

 

이러면 센서 앞에서 움직임이 어느정도 감지되면 D2에서 1(HIGH)을 출력하다가 잠시 후 LOW로 바뀌는 것을 알 수 있다.

Arduino 공식 사이트에는 이 PIR 센서에 대한 설명이 나오는데, 전압 인가 후 몇 초 정도 오작동할 수 있으므로 해당 시간 동안 중지하는 코드도 포함되어 있다(그러나 특별히 이런 대기 시간이 필요한 종류가 많은지 모르겠다. 대부분 곧바로 작동한다)

이는 별도 이 글에 포함하지 않고, Arduino 공식 페이지를 소개한다. (http://playground.arduino.cc/Code/PIRsense)이 웹 페이지의 해당 소스를 가져다 쓰면 이러한 것들을 반영하여 운영할 수 있다.

http://playground.arduino.cc/Code/PIRsense

 

다만, 간단한 목적으로는 먼저 소개한 소스를 변형하여 사용하면, 어렵지않게 동작 감지를 구현해 낼 수 있다.

 

▶ 구매 가이드

Arduino PIR sensor : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20151110063716&SearchText=PIR+sensor+arduino ($ 1)

 

강의 키워드

PIR motion sensor, PIR 움직임 센서, PIR 모션 센서, 움직임 감지, 인체 감지

반응형