도대체 영화 한편 보려면 몇개의 리모콘을 사용하는지...
TV 전원을 켜기위해 TV 리모컨을 찾아야 하고 안드로이드 TV 셋톱을 켜기위해 안드로이드 TV 리모콘을 역시 찾아야 하며 막상 틀었더니 소리가 어마무시하게 커서 블루투스 사운드 바 소리를 줄이기 위해 사운드바 리모콘을 찾아서 겨우 소리를 줄였더니 TV 기본 사운드가 너무 큰 탓인지 사운드바의 볼륨 1에서도 소리가 커서 하나를 줄이면 소리가 아얘 나지 않는 상황이어서 다시 TV 리모콘을 집어 들고 TV 볼륨을 줄였으나 알고보니 영상의 기본 사운드가 너무 크게 인코딩 되어 있어 안드로이드 TV 에서 볼륨 레벨을 낮추기 위하여 다시 안드로이드 TV 리모콘을 집어들어야 하는 상황이 거짓말처럼 하루건너 발생하는 우리집이다.
아놔..
끌때도 TV 끄고, 안드로이드 TV 끄고 사운드바 끄고...
이걸 한번에 통합하는 건 불가능 한 것일까..
그래서 한번 만들어 보기로 하였습니다.
아두이노를 이용하여 IR 리모콘 신호를 해킹하는 예제를 언젠가 본적이 있어 구글링을 하여 보았습니다.
제가 참고한 블로그는 아래 블로그 입니다.
https://blog.naver.com/opusk/220984753138
좀 어려운 말들이 있기는 하지만 복잡할 것 없이 그냥 따라 해보시면 됩니다.
일단 신호를 따서 필요한 신호를 모두 모은 뒤에 버튼을 달고 버튼을 누를 때 마다 필요한 신호를 보내면 끝.
일단 신호를 따야 겠죠?
필요한 준비물은 아래와 같습니다.
- 아두이노 나노
- IR 리모콘 수신부 LED (저는 고장난 비디오 데크 에서 뜯어냈습니다. 재활용품 버리는날 주워왔었죠)
- 10 k 정도의 저항 (얼마인지는 모르겠네요)
- IR 라이브러리 (링크)
요렇게 하고 시작해 보겠습니다.
먼저 위에 링크 라고 되어있는 페이지로 가봅시다.
https://github.com/z3t0/Arduino-IRremote
가서보면 아래와 같은 페이지가 보이는데요. 우측에 'clone or download' 를 누르시게 되면 압축 파일로 다운로드가 됩니다.
이렇게 다운로드 받은 zip 파일을 압축을 해제한 뒤 아두이노 library 폴더에 넣으시면 되는데요. library 폴더는 아두이노가 설치된 폴더에도 있고 내문서에 Arduino 폴더에도 있습니다.
저는 설치폴더 찾아 들어가기가 귀찮아서 그냥 내문서에 있는 라이브러리 폴더에 넣었습니다.
이제 아두이노 IDE 를 실행해 봅니다. (아두이노 IDE가 켜진 상태에서 라이브러리를 추가 하였다면 모두 종료하고 재실행하면 라이브러리 및 예제가 추가되어 있는 것을 알 수 있습니다)
그런다음 예제에서 IRremote 로 들어가고 그 하위에 있는 IRrecvDumpV2 를 선택해 줍니다.
그러면 아두이노 IDE 에 예제 파일이 보이게 되는데요.
여기에서 추가로 설정해주어야 하는 것이 입력 핀 번호 수정입니다.
아래 그림과 같이 int recvPin 을 2번으로 변경해 줍니다. 2번은 나노의 D2 에 해당됩니다.
끝으로 IR 라이브러리를 추가해주어야 하는데요.
요렇게 해주면 준비가 완료 됩니다.
이제 브래드 보드에 리모콘 수신부를 연결하도록 하겠습니다.
아래 사진과 같이 연결해 줍니다.
적외선 수신부의 가장 좌측 다리를 D2 에 연결하고 10k 저항을 통해 5v 를 인가합니다.
가운데 다리는 GND 에 우측 다리는 5v 에 직접 연결합니다.
준비 완료.
아두이노 IDE 에 작성해놓은 코드를 업로드 합니다.
혹시 처음 하시는 분은 아래와 같이 설정을 하면 됩니다.
COM 포트는 사용자마다 다를거에요. 어떤 USB 포트에 연결했느냐에 따라 다른 번호가 나타납니다.
USB 를 연결한뒤에 새로 나타나는 포트가 아두이노가 연결된 포트입니다.
이제 신호를 테스트 해보겠습니다.
USB 를 연결하고 시리얼 모니터를 켠 후 리모콘의 버튼을 눌러 필요한 신호를 보내봅니다.
그럼 시리얼 모니터에 아래와 같이 출력이 됩니다.
중요한 것은 여기 빨간색 네모 박스의 내용입니다.
입력된 신호는 NEC 라는 회사의 프로토콜이며 0x807FAA55 라는 HEX 코드가 바로 입력된 신호인 것이죠. 위에 rawData 라는 정보가 보이는데 이는 NEC, LG 등과 같이 프로토콜의 제조사를 알 수 없는 리모콘신호인 경우 rawData 를 직접 보내기 위하여 사용되는 정보 입니다.
저의 경우에는 NEC 라는 제조사의 신호임이 확인되었기 때문에 해당 제조사에서 약속한 0x807FAA55 라는 값을 보내면 됩니다.
가끔 시리얼 모니터에 제조사 정보에 UNKNOWN 이라고 나오는 경우가 있습니다. 실제로 제품 사용중에 리모콘을 눌러도 신호가 전달이 되지 않는 경우가 있죠? 이렇게 신호가 불분명하게 입력되는 경우입니다. 다시 눌러보면 정확히 들어오게 되는데 이때 들어온 정보를 사용하면 됩니다.
이렇게 3개의 리모콘을 이용하여 제가 모아본 신호는 아래와 같습니다.
* 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
*
*/
저는 위의 신호들을 하나의 리모콘을 통하여 보낼 수 있도록 만들어볼 생각입니다.
그럼 다음 포스트에서 실제 신호를 보내는 예제를 만들어 보겠습니다.
그럼 이만~
그 다음 이야기는 아래 포스트에서 확인해 주세요
https://diy-dev-design.tistory.com/66
2020/06/17 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 3/3
2020/05/26 - [DIY/Arduino] - 0.96 inch OLED 디스플레이 구동하기
2020/07/01 - [DIY] - 미니 테슬라코일 만들기 - 알리 DIY KIT
만능 리모컨 만들기 최종 완성본은 아래쪽을 참고해 주세요
2022.08.16 - [DIY/Arduino] - [DIY] 아두이노로 통합(만능) 리모콘 만들기 (최종)
'DIY > Arduino' 카테고리의 다른 글
Arduino(아두이노) 무작정 시작하기 (0) | 2020.03.23 |
---|---|
[DIY] 아두이노로 통합(만능) 리모콘 만들기 2/3 (2) | 2019.11.10 |
[DIY] 아두이노를 이용한 수경재배 시스템 (10) | 2019.10.29 |
아두이노를 이용한 간단한 화분 자동 물주기 시스템 (15) | 2019.06.27 |
아두이노를 이용한 RC 카 만들기 1 (2) | 2019.06.01 |