티스토리 뷰

PIR_MODLINK

Control LED using Arduino PIR (feat. MODLINK2)


본 체험 제품은 주식회사 빛컨의 지원을 받아 작성한 것입니다.

오늘 진행할 내용은 위 제목대로 Arduino에서 PIR센서를 활용하여 LED를 제어하는 것입니다.

단순히 LED를 제어하는 것이지만, LED가 아니라 릴레이를 활용해서 실제 전등을 제어할 수도 있겠습니다.

그 이후부터는 응용이 되겠죠.



Prochip Studio

이번 체험단을 진행하면서, 빛컨에서 제작한 IDE를 사용해 보았습니다.
Prochip Studio info & download
Prochip Studio Manual

산업용 IoT에 대한 솔루션을 제공하는만큼 PLC에서 사용하는 래더도 지원하고 있었습니다. 빛컨 라이브러리 센터를 살펴보니 Modbus관련 라이브러리도 있더군요.
아직은 초기 단계이겠지만, 발전하면 산업용 시장에서 긍정적인 반응을 얻을 것 같습니다.

PLC에 특화된 프로그램이다보니 Arduino 보드로 개발하기에는 제한된 기능이 많았지만, 자동완성 기능 등이 있어서 단순한 기능만 사용하시는 분들에게는 오히려 유익한 개발환경이 되지 않을까 생각합니다.

프로그램에 대한 리뷰가 아니므로 이정도로 넘어가도록 하겠습니다 :)



PIR ?

우선 PIR센서가 무엇인지 간략히 설명하면, Passive InfraRed 의 약자로써, 적외선의 변화를 감지하는 센서입니다.
흔히 인체감지센서로 알려져 있죠.
현관에 들어서면 인체 감지를 하여 불이 켜지는 집이 있죠? 공동주택의 복도가 특히 그렇구요.
이럴 때 사용되는 센서가 이 PIR 센서입니다.

직관적으로 아두이노에서 어떻게 사용되고 있는지 UCC 동영상을 링크하겠습니다.

아래 동영상은 PIR 센서의 작동 원리에 대해서도 간단히 설명하고 있으니 참조해보세요.

PIR센서의 동작 원리는 단순합니다.

위에서 본 PIR 센서의 바닥면을 보면 아래와 같이 핀 3개에 가변저항 2개가 붙어 있는 것을 알 수 있습니다.
노란색의 점퍼캡도 있는데, 이것의 사용용도는 데이터 시트를 참조하시면 알 수 있습니다.

점퍼캡의 용도에 대해 간단히 설명하자면, 트리거를 반복할 것인지 말것인지 결정하는 것입니다.
신호가 감지되었을 때,
그 감지된 신호가 사라질때까지 계속 알림을 줄 것인지,
아니면 잠시 멈추었다가 지정된 주기 이후 다시 확인하여 알려줄 것인지 결정하는 것입니다

일반적이라면, 전자(Repeat)의 기능으로 사용하겠죠.

또한,
위의 가변저항에 따라 감지 거리와 감지주기를 설정할 수 있습니다.

  • 감지 거리 : 약 3~7미터
  • 감지 주기 : 5~300초

위에 간단히 설명한 내용들에 대해서는 아래 데이터시트에 잘 나와 있으며, "잘 설명된 쇼핑몰"로 가시면 국문으로 간단한 설명을 보실 수 있습니다. (PinMap 포함)
Datasheet
잘 설명된 쇼핑몰



회로 구성

PIR은 핀이 세 개입니다. 즉, 위 사진 기준으로 GND, Signal, VCC 입니다 ( 데이터시트 참조 )
소스를 작성할 때, 인터럽트 방식을 사용할 것이기 때문에 (Signal로부터 High, Low 변화를 감지) Signal핀을 아두이노의 인터럽트 가능한 핀으로 연결합니다.
인터럽트가 가능한 핀에 대해서는 아두이노 공식홈페이지를 통해 확인할 수 있습니다.
CC 보드 기준 : https://www.arduino.cc/en/Reference/AttachInterrupt
ORG 보드 : http://www.arduino.org/learning/reference/AttachInterrupt

PIR Sensor UNO
VCC 5V
Signal D2 (Interrupt 지정 핀)
GND GND
LINK Module MODELINK BASE
LED LINK D6 D7
SELECT LINK D4 D5

최종적으로는 아래 사진과 같이 간단하게 구현할 수 있습니다.
만약, 가운데 보이는 프로토타입 링크에 PIR모듈을 땜하면 더 깔끔해지겠죠?




전체 소스

사실 PIR만 넣어도 되지만, 그러면 아쉬우니까 몇 가지 예외처리 겸 기능 추가를 했습니다.
작동 방식은 다음과 같습니다.

  • 스위치 S1의 On/Off에 의해 PIR 사용 여부 결정
  • PIR 사용 시 (S1 = ON)
    • PIR이 감지시 handlePIR()함수 실행
    • 이전 감지 정보를 확인하여 메시지 출력 및 LED제어
    • CHECKTIME(10초)동안 감지되지 않을 경우 LED OFF
  • PIR 미사용 시 (S1 = OFF)
    • 스위치 S2 On/Off에 따라 LED 제어



TEST

PIR센서 앞에 물체가 있음에도 불구하고 LED가 꺼진 이유에 대해 궁금하실 분들을 위해 다시 말씀드리면,
PIR 센서는 이전 값과 이후 값을 비교하여 움직임 여부를 판단합니다.
따라서, 물체가 "움직임이 없으면" 움직임이 없다라고 판단하는 것입니다.
그리고 반대로 물체가 사라졌을 때 LED가 켜진 것은 변화로 인한 "움직임이 감지"되었기 때문입니다.
 

Product Spec

  • BASE-D16 : 베이스보드, DC 5V, SPI, I2C, MODLINK Header, 확장슬롯
  • MCU : ATmega328P (Arduino UNO)
  • UPLOAD LINK : Upload/Run기능, Serial USB Port
  • LED : Pull down LED Module
  • PROTO : PROTO Type Module
  • TACT : Tact Switch Module
  • VOLUME : 가변저항 Module
  • SELECT : Switch Module



모드링크2 구입처 : 빛컨샵 http://www.vitconshop.com

아두이노길라잡이 카페 : http://cafe.naver.com/arduinoguide

작성자 블로그 : http://openmaker.tistory.com/

댓글
댓글쓰기 폼