2016년 3월 17일 목요일

Gear S2 로 문열기 - 3편 (리모컨 신호 IR Receiver 로 capture 하기)

전체 설계는 했으니 가장 기본적이고 중요한 홈패트 '문열기' 리모컨 신호를 capture 해 둔다.
Arduino uno 와 IR Receiver
예전에 사 두었던 아두이노와 DFRobot 의 IR Receiver Module V2 가 필요하다. 아두이노에 대해 아무것도 몰랐을 때 빨리 사기 쉬운 것들로 뭉텅이로 샀었는데 지금 다시 사라면 아마 안샀을 것들이지만 굳이 돈 쓰지 않고 재활용 하는 것으로.. ㅎㅎ
(지금 산다면 제일 작고 싸고 기본 기능만 있는 것들로 살 것 같다)

그럼 이제 capture를 해 보자. capture 할 대상은
홈패트 리모컨 (현관보기, 문열기, 전화 그리고 TV 보기 기능이 있다)
개발환경 : ubuntu 15.10
IDE : Arduino 1.6.8
Library : IRremote
보드 : DFRobot Romeo V1.2
센서 : DFRobot IR Receiver Module V2, Keys IR Transmitter KY-005

1. arduino 소프트웨어를 다운로드 한다.

 - ubuntu 에 기본으로 설치 가능한 arduino 를 사용해도 되지만 version 이 1.0.5 이고 눈에 띄는 버그들이 많아서 공식 홈페이지에서 최신 버전 (1.6.8) 을 다운 로드 한다.



  $ mv arduino-1.6.8-linux64.tar.xz ~/ && cd ~/
  $ tar xvf arduino-1.6.8-linux64.tar.xz
  $ cd arduino-1.6.8 && ./install.sh

  설치를 하면 바탕화면에 프로그램 메뉴에 아이콘이 설치가 된다. 예전에는 permission 문제 때문에 몇가지 해줘야 할 것들이 있었는데 이제 그냥 실행해도 된다.

2. IRremote library 를 arduino 에 추가해 준다.

 - IR Receiver 와 Transmitter 를 사용하려면 IRremote library 가 필요한다.
 - https://github.com/z3t0/Arduino-IRremote/releases 에서 최신 버전의 Arduino-IRremote-dev.zip 을 다운로드 받고 arduino 메뉴에서 추가 해 준다.

3. IRremote 예제 파일에서 RecvDump 를 컴파일, 업로드 하고 리모콘 신호를 capture 한다.

 - 메뉴 > 파일 > 예제> IRremote > IRrecvDumpV2
 - 메뉴 > 스케치 > 확인/컴파일
 - 메뉴 > 스케치 > 업로드
 - IR Receiver 는 11번 digital pin 에 꽂고

 - 리모컨을 눌러 주면 이렇게 capture 가 된다.
 - 여기서 중요한 것은 rawData 이다.
  unsigned int  rawData[67] = {8900,4450, ..... }
 - 같은 방법으로 '문열림' 과 필요한 버튼들을 capture 해 둔다.

3. IR Transmitter 를 digital 3번 핀에 달고 capture 한 rawData 를 실험해 본다.


 - 메뉴 > 파일 > 예제> IRremote > IRSendRawDemo
 - 소스 코드에서 rawData 를 바꿔준다.
#include <IRremote.h>
IRsend irsend;
void setup()
{
}
void loop() {
  int khz = 38; // 38kHz carrier frequency for the NEC protocol
  unsigned int irSignal[] = { 이 부분에 rawData 를 넣어준다};

  irsend.sendRaw(irSignal, sizeof(irSignal) / sizeof(irSignal[0]), khz); //Note the approach used to automatically calculate the size of the array.
  delay(5000); //In this example, the signal will be repeated every 5 seconds, approximately.
}
 - 편의상 TV 모니터의 전원을 capture 해서 테스트 했다.
 - 컴파일/다운로드 하면 5초마다 한번씩 TV 가 켜지고 꺼진다.

시연을 해보면,
영상에는 없지만 '문열림' 도 같은 방법으로 테스트 해 보니 잘 동작 했다.
이렇게 첫 단추를 잘 끼운 듯 하고 이제 Tizen 개발 환경을 준비 해야 겠다.

댓글 없음: