상세 컨텐츠

본문 제목

[아두이노] 적외선 수신기(IR Receiver)로 아두이노에서 리모컨 값 받기

헉!!/Arduino

by 권태성 2016. 7. 11. 23:50

본문





에어컨을 제어하고 싶어서 아두이노 우노를 구입 했습니다.


집에 인텔 갈릴레오가 있긴했는데 저항, LED 등 기본 실습에 필요한 부품들을 구입해야했기에


스타터팩을 구입했는데 아두이노 우노를 포함한 제품들 밖에 없길래 구입하게 되었습니다.


고등학교때 ATmega 칩셋을 실습하는 과목이 있었는데 그 이후로 한번도 해본적이 없어서 걱정했었는데


인터넷에서 부품들별로 참고자료가 많아서 쉽게 시작할 수 있었습니다.


일단 구입해서 기초적인 사용법은 익혔고..


이제 실질적으로 에어컨 제어를 위한 첫걸음인 IR에 관한 이해를 위해 리모컨의 값을 아두이노에서 받아보기로 했습니다.


스타터팩을 구입하니 1838B라는 적외선 수신기가 들어있었습니다.


출처 : https://stak.com/Infrared_Remote_Control_module_Kit_HX1838_NEC_Code_VS1838B_Receiver



출처 : http://forum.hobbycomponents.com/viewtopic.php?f=6&t=1619



이렇게 생긴 수신기 입니다.


작동을 위해서는 브레드 보드에 연결해야하니 각 핀이 어떤 역할을 하는지 알아야하는데요.


위 그림을 보시면 SIGNAL(OUT), GND, VCC라고 설명이 다 되어 있습니다. 그대로 연결하면 됩니다.


그럼 소스코드로 넘어가서 아두이노 프로그램을 개발할때 우리같은 초보들이 모든것 하나하나 만들어서 개발하는건


불가능에 가깝기에 오픈소스 코드를 활용해서 쉽게 만들 수 있습니다.


IR관련 프로그램을 작성하기 위해서는 IRremote.h라는 헤더가 필요한데요.


https://github.com/z3t0/Arduino-IRremote 여기서 받을 수 있습니다.


스케치를 실행해서 다운받은 IRremote 라이브러리를 추가하고 아래 코드를 실행해보세요.


/*

  * 리모컨 값를 읽기 위한 간단한 프로그램 입니다.

  * IRremote.h를 이용합니다. (https://github.com/z3t0/Arduino-IRremote)

  * date : 2016. 07. 11

  * create : TAESEONG KWON (http://blog.taeseong.me/)

*/

#include <IRremote.h>


int RECV_PIN  = 8;                            //IR Receiver로 수신한 값을 8번 핀으로 받습니다.

IRrecv irrecv(RECV_PIN);                     //IR Receiver를 선언합니다.

decode_results results;                     //수신결과가 저장됩니다.


void setup() {

  Serial.begin(9600);

  irrecv.enableIRIn();                        //IR Receiver enable

}


void loop() {

  if(irrecv.decode(&results)){                //입력받은 값이 있으면

    Serial.println(results.value, HEX);      //콘솔에 출력 합니다.

    irrecv.resume();                          //다음 값을 받기위해 resume

  }

}


주석을 다 적어놔서 코드에 대한 설명은 따로 하지 않겠습니다.


위 프로그램을 아두이노에 업로드하면 적외선 리모컨으로부터 받은 값을 아두이노가 콘솔로 출력해줍니다.


(콘솔은 스케치에서 돋보기 아이콘을 누르면 됩니다.)


리모컨으로부터 받은 값을 콘솔에서 확인 하셨나요??


그럼 위 프로그램을 응용해서 리모컨으로 특정값을 입력받으면 LED를 점등한다거나 하는 프로그램을 만들수도 있습니다.


LED 점등은 유튜브에 초보강좌에서 대부분 다루는 내용이므로 참고하시면 될 것 같네요.