반응형

먼저 포스트에서 아두이노를이용하여 다양한 리모콘의 신호를 해킹하는 방법을 알아 보았습니다.

https://diy-dev-design.tistory.com/65

 

[DIY] 아두이노로 만능 (통합) 리모콘 만들기 1/3

도대체 영화 한편 보려면 몇개의 리모콘을 사용하는지... TV 전원을 켜기위해 TV 리모컨을 찾아야 하고 안드로이드 TV 셋톱을 켜기위해 안드로이드 TV 리모콘을 역시 찾아야 하며 막상 틀었더니 소리가 어마무시하..

diy-dev-design.tistory.com

 

그럼 이제 신호를 TV, 안드로이드 TV BOX, 블루투스 사운드바 에 각각 보내는 테스트를 해볼 차례 입니다.

앞선 포스트에서 확인이 가능하겠지만 제가 테스트를 통해 모은 신호는 아래와 같습니다.

 * tv (NEC)
 * power :      0x2DF10EF, 32
 * input :      0x2DFD02F, 32
 * chnnel up :  0x2DF00FF, 32
 * chnnel dn :  0x2DF807F, 32
 * volumn up :  0x2DF40BF, 32
 * volumn dn :  0x2DFC03F, 32
 * OK :         0x2DF22DD, 32
 * sw up :      0x2DF02FD, 32
 * sw dn :      0x2DF827D, 32
 * sw left :    0x2DFE01F, 32
 * sw right :   0x2DF609F, 32
 * 
 * android tv (NEC)
 * power :      0x807F02FD, 32
 * sw up :      0x807F6897, 32
 * sw dn :      0x807F58A7, 32
 * sw left :    0x807F8A75, 32
 * sw right :   0x807F0AF5, 32
 * sw OK :      0x807FC837, 32
 * back :       0x807F9867, 32
 * volumn up :  0x807F18E7, 32
 * volumn dn :  0x807F08F7, 32
 * 
 * 
 * lonpoo speaker
 * power :      0x40BF807F, 32
 * volumn up :  0x40BF50AF, 32
 * volumn dn :  0x40BFD02F, 32
 * bt :         0x40BFA05F, 32
 * bt esc :     0x40BF906F, 32
 * opt :        0x40BF20DF, 32
 * 
 */

 

먼저 몇가지 확인이 쉬운 기능들을 테스트 할 예정입니다.

전원 ON/OFF 로 해보죠.

준비물은 아래와 같습니다.

  • 아두이노 나노
  • IR LED (송신용, 투명한 재질임)
  • 10 k 정도 되는 저항, 저는 4.7k * 3 개
  • push button 3개
  •  

간단하죠?

IR LED 는 전에 사 두었던 거리감지 쉴드에서 적출 하였습니다. 일정 거리 미만이 되면 신호를 보내는 쉴드 인데요. 마땅히 사용할 일이 없어 놀고 있던 보드에서 추출하였습니다.

거리 감지 센서, 아래쪽의 투명한 LED 가 IR 송신부 LED 이다.

버튼 역시 앞서 포스트에 등장했던 비디오 테이브 플레이어의 보드에서 적출 하였습니다. 다리 4개 짜리 버튼이 브래드보드에서 테스트 하기가 좋지 않기 때문에 뜯는 김에 버튼들도 추출을 진행하였습니다.

혹시 몰라 TR 도 하나 뜯어 보았는데 동작이 잘 안되면 연결해볼까 합니다.

버려진 가전제품에서 적출해낸 부품들

 

일단 테스트 코드를 만들어 보겠습니다.

미리 준비하였던 신호들을 본인의 제품에 맞는 명령으로 보내면 되는데요. 일단 예제 중에 IRremote --> IRsendDemo 예제를 기본으로 시작을 하도록 하겠습니다.

 

해당 예제에 라이브러리를 추가(스케치--> 라이브러리 포함하기--> IRremote) 하고 아래와 같이 코딩을 합니다.

#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */
/*
 * tv (NEC)
 * power :      0x2DF10EF, 32
 * input :      0x2DFD02F, 32
 * chnnel up :  0x2DF00FF, 32
 * chnnel dn :  0x2DF807F, 32
 * volumn up :  0x2DF40BF, 32
 * volumn dn :  0x2DFC03F, 32
 * OK :         0x2DF22DD, 32
 * sw up :      0x2DF02FD, 32
 * sw dn :      0x2DF827D, 32
 * sw left :    0x2DFE01F, 32
 * sw right :   0x2DF609F, 32
 * 
 * android tv (NEC)
 * power :      0x807F02FD, 32
 * sw up :      0x807F6897, 32
 * sw dn :      0x807F58A7, 32
 * sw left :    0x807F8A75, 32
 * sw right :   0x807F0AF5, 32
 * sw OK :      0x807FC837, 32
 * back :       0x807F9867, 32
 * volumn up :  0x807F18E7, 32
 * volumn dn :  0x807F08F7, 32
 * 
 * 
 * lonpoo speaker
 * power :      0x40BF807F, 32
 * volumn up :  0x40BF50AF, 32
 * volumn dn :  0x40BFD02F, 32
 * bt :         0x40BFA05F, 32
 * bt esc :     0x40BF906F, 32
 * opt :        0x40BF20DF, 32
 * 
 */

#include <IRremote.h>

const int pw_tv = 4;
const int pw_and = 5;
const int pw_spk = 6;

IRsend irsend;

void setup()
{
  pinMode(pw_tv, INPUT_PULLUP);
  pinMode(pw_and, INPUT_PULLUP);
  pinMode(pw_spk, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}

void loop() {

  int s_pw_tv = digitalRead(pw_tv);
  int s_pw_and = digitalRead(pw_and);
  int s_pw_spk = digitalRead(pw_spk);

  // tv 전원 역할 스위치 (평상시는 HIGH 입니다)
  if (s_pw_tv == HIGH) {
    digitalWrite(13, LOW);
  }else{
    digitalWrite(13, HIGH);
    for (int i = 0; i < 3; i++) {
     irsend.sendNEC(0x2DF10EF,32);     
      delay(40);
    }
  }
  
  // 안드로이드 tv box 전원 역할 스위치 (평상시는 HIGH 입니다)
  if (s_pw_and == HIGH) {
    digitalWrite(13, LOW);
  }else{
    digitalWrite(13, HIGH);
    for (int i = 0; i < 3; i++) {
     irsend.sendNEC(0x807F02FD,32);     
      delay(40);
    }
  }
  
  // 사운드 바 전원 역할 스위치 (평상시는 HIGH 입니다)
  if (s_pw_spk == HIGH) {
    digitalWrite(13, LOW);
  }else{
    digitalWrite(13, HIGH);
    for (int i = 0; i < 3; i++) {
     irsend.sendNEC(0x40BF807F,32);     
      delay(40);
    }
  }
	
	delay(50); //5 second delay between each signal burst
}

3개의 버튼을 사용할 것이므로 3개의 입력핀을 설정한뒤 버튼이 눌렸을 때 LED (13번 핀, 아두이노 기본 LED) 를 켜주면서 3차례에 걸쳐 신호를 보내도록 코딩하였습니다.

저는 모든 신호의 제품이 NEC 로 확인 되었기 때문에 라이브러리의 sendNEC 라는 명령을 통해 신호를 보내 주었습니다.

보드는 아래와 같이 구성하였습니다.

3개의 버튼은 각각 4,5,6 번에 연결, IR LED 는 3번에 연결 하였다.

코드를 보면 알겠지만 버튼은 모두 GND 에 연결하고 PULLUP 상태를 만들어 준 뒤 LOW 일때 동작하도록 하였습니다. 이렇게 하면 아두이노 내부 저항에 의해 별도의 외부 저항 없이 버튼 연결이 가능하게 됩니다.

IR LED 의 경우 방향이 정해져 있는데 어짜피 다이오드 이므로 신호가 나오는지 체크해서 신호가 안나오면 방향을 반대로 뒤집어 주면 됩니다. 

신호가 나오는지는 핸드폰 카메라로 확인이 가능한데요, 신호가 나올때는 보라색으로 깜박깜박 합니다. 아래 영상을 참고하시면 됩니다.

 

IR 신호가 정상적으로 나온다면 불이 깜빡이는 것을 확인할 수 있다. 

 

해당 보드로 TV 와 안드로이드 TV box, 사운드바가 정상적으로 동작하는 것을 확인할 수 있습니다.

실제 LED 는 TR 없이 쇼파에서 문제 없이 동작하였으니 이제 실제 결과물을 만들어야 할 시간입니다.

동작할 기능은 많은데 모든 기능에 대하여 버튼을 만들어 넣을 수 는 없을 것 같으니 머리를 좀 써야 할 시간입니다. 이제부터 본격적인 개발이 시작된다고 할까요?

 

이거 뭐 껌이네요. 여러분도 한번 도전해 보시기 바랍니다.

 

자 대망의 만능 리모콘 만들기 3편은 다음 포스트에서 소개해 드리겠습니다.

 

그럼 이만~

 

2020/06/17 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 3/3

 

[DIY] 아두이노로 통합(만능) 리모콘 만들기 3/3

아두이노로 통합(만능) 리모콘 만들기 3/3 이라 쓰고 왠지 이번 포스트에서 끝나지 않을 것 같은 느낌이 강하게 듭니다. 지난 포스트에서 아두이노 IR 센서를 이용하여 신호를 해킹하고 또 필요한

diy-dev-design.tistory.com

2020/05/26 - [DIY/Arduino] - 0.96 inch OLED 디스플레이 구동하기

 

0.96 inch OLED 디스플레이 구동하기

가끔 아두이노로 무엇인가를 만들어 보려고 하다보면 디스플레이가 있으면 하는 생각이 들때가 있습니다. 아두이노는 작은 컴퓨터이기는 하지만 모름지기 컴퓨터라 한다면 입력장치 - 중앙처��

diy-dev-design.tistory.com

2019/06/27 - [DIY/Arduino] - 아두이노를 이용한 간단한 화분 자동 물주기 시스템

 

아두이노를 이용한 간단한 화분 자동 물주기 시스템

얼마뒤면 베트남으로 가족 여행을 떠날 예정입니다. 7박이나 하고 올 예정이므로 집을 비우기 전 준비해야 할 것들이 많습니다. 이것저것 여행준비를 하던 찰나 베란다에 내어 둔 화분이 걱정이

diy-dev-design.tistory.com

2022.03.26 - [DIY] - [DIY]무민양품 USB 데스크팬 수리하기

 

[DIY]무민양품 USB 데스크팬 수리하기

사무실을 이사하다보면 각 종 쓰레기가 쏟아져 나오는데 간혹 쓸만한 것들이 나오는 경우가 있습니다. 오호~ 이건 무민 양품의 USB 선풍기! 뭐 고장 났으니 버렸겠지 싶어 지나쳐 가다가 ... 고치

diy-dev-design.tistory.com

 

만능 리모컨 만들기 최종 완성본은 아래에서 확인하세요~

2022.08.16 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 (최종)

 

[DIY] 아두이노로 통합(만능) 리모콘 만들기 (최종)

만능 리모컨을 만들기로 해놓고 정말 많은 시간이 흘렀습니다. 2019.11.10 - [DIY/Arduino] - [DIY] 아두이노로 만능 (통합) 리모콘 만들기 1/3 2019.11.10 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘..

diy-dev-design.tistory.com

 

반응형

+ Recent posts