이 프로젝트 정보
이 프로젝트는 리모컨 대신 사용하는 방법을 보여줍니다.
이 프로젝트는 Android 모바일을 사용하여 TV, 위성 수신기 및 스테레오를 제어하는 방법을 보여줍니다. 리모컨 대신 사용하세요.
기본적으로 이 기술을 리모컨으로 작동하는 다른 모든 장치에 적용할 수 있습니다. . 각 기기의 리모컨을 사용하는 대신 모바일로 집에 있는 모든 기기를 제어하고 싶었습니다.
이제 모바일에서 단 하나의 애플리케이션으로 홈 원격 장치를 원하는 만큼 제어할 수 있습니다!
먼저 , 이 단계에서 해야 할 일은 Google Play 스토어에서 Android 애플리케이션을 다운로드하는 것입니다. 신청
그럼 , 리모컨을 디코딩해야 합니다.
리모콘 핸드셋의 송신기는 사용자가 핸드셋의 버튼을 누르면 적외선 펄스 스트림을 보냅니다. 송신기는 종종 리모콘 핸드셋의 끝 부분에 내장된 발광 다이오드(LED)입니다. 적외선 펄스는 해당 버튼에 고유한 패턴을 형성합니다. 장치의 수신기가 패턴을 인식하고 장치가 그에 따라 응답하도록 합니다(Wikipedia).
따라서 각 버튼의 고유한 패턴을 알아야 합니다.
간단히 IR 라이브러리를 다운로드해야 합니다. 아두이노용
해당 라이브러리의 예에서 IRrecvDump를 찾을 수 있습니다. 예(세 번째 이미지에 나와 있음). 리모콘의 데이터를 인코딩하는 데 사용되는 코드입니다.
IR 수신기를 배선해야 합니다. 그림과 같이:
1- 접지
2-5V
3- 핀 11
업로드 후 Arduino에 대한 이 코드는 직렬 모니터를 열고 TV 리모컨의 아무 버튼이나 누르면 다섯 번째 이미지 이미지와 같은 것을 찾을 수 있습니다.
네 번째 이미지와 같이 리모컨의 각 버튼을 나타내는 16진수 코드를 찾을 수 있습니다. 기능에 해당하는 16진수를 기록해 두십시오(예:20DFC03F ,32는 전원 버튼을 나타냄).
참고 , "알 수 없는 인코딩"이 표시되면 버튼을 다시 누르십시오.
이제 장치에 명령을 전송하는 데 사용되는 코드를 업로드해야 합니다. 코드를 찾을 수 있지만 리모컨에 따라 약간의 변경이 있을 수 있습니다.
여기서 해야 할 일은 16진수 값으로 바꾸는 것입니다. (0x20DF10EF로) ) 전원 버튼, 볼륨 업/다운 버튼 및 원하는 기타 버튼에서 얻은 값으로.
1Sheeld 모바일 애플리케이션에는 원격 제어 인터페이스가 없기 때문에 KeyPad shield를 사용했습니다. 리모컨으로 키보드 실드를 선택할 수 있습니다. 훨씬 더 많은 기기에서도 사용할 수 있습니다.
테스트
드디어 , IR LED를 사용합니다. 핀 3에서 아두이노에 넣고 그림과 같이 장치 앞의 옆에 놓습니다.
이제 1Sheeld 모바일 애플리케이션을 열고 쉴드와 연결한 다음 키패드 쉴드를 선택하세요. 이 모든 것이 동영상에 나와 있습니다.
이제 휴대폰의 버튼을 누르면 전원 켜기, 볼륨 높이기, 볼륨 낮추기 등의 해당 작업이 수행됩니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드"> 코드
<울> 리모컨 코드
원격 제어 코드C/C++
이 코드는 키패드 실드의 여러 버튼을 사용하여 TV를 켜고 끄고, 위성 수신기 채널을 변경하고, 스테레오를 제어합니다.#include #include IRsend irsend;void setup( ) { OneSheeld.begin();} 무효 루프(){ if(Keypad.isRowPressed(0) &&Keypad.isColumnPressed(0)) { irsend.sendNEC(0x20DF10EF, 32); } else if(Keypad.isRowPressed(0) &&Keypad.isColumnPressed(1)) { irsend.sendNEC(0x20DFC03F, 32); } else if(Keypad.isRowPressed(0) &&Keypad.isColumnPressed(2)) { irsend.sendNEC(0x20DF40BF, 32); } else if(Keypad.isRowPressed(1) &&Keypad.isColumnPressed(1)) { irsend.sendNEC(0x41048B7, 32); } else if(Keypad.isRowPressed(1) &&Keypad.isColumnPressed(0)) { irsend.sendNEC(0x410C837, 32); } else if(Keypad.isRowPressed(2) &&Keypad.isColumnPressed(0)) { for (int i =0; i <3; i++) { irsend.sendSony(0xa81, 12); // Sony TV 전원 코드 delay(40); } }}
섹션>