Arduino용 범용 리모콘입니다. Arduino를 사용하여 적외선 범위에서 데이터 전송 Arduino에 적외선 수신기 연결

Arduino를 사용하여 자신만의 TV 리모컨을 만드는 방법에 대한 기사가 인터넷에 많이 있지만 TV와 미디어 플레이어를 제어하려면 범용 리모컨이 필요했습니다. 제 만능 리모콘의 가장 큰 장점은 안드로이드 폰 애플리케이션의 버튼이 이중 용도로 사용된다는 점인데 영상을 보세요.



리모컨은 화면에 있는 버튼과 거의 동일하게 TV와 플레이어를 제어할 수 있어 매우 편리합니다. 한 가지 차이점은 " AV"TV 제어 모드에서는 버튼으로 변경됩니다" " (정지) 플레이어 제어 모드로 전환할 때. 사진은 두 가지 모드를 보여 주며, 왼쪽은 TV 제어 모드, 오른쪽은 플레이어 제어 모드입니다.

자, 이제 그러한 리모콘을 만드는 방법에 대해 조금 말씀 드리겠습니다. 장치로는 ERGO TV용 리모컨과 DUNE HD TV101W 미디어 플레이어용 리모컨을 사용했습니다.

리모콘으로부터 데이터를 수신하기 위해 38kHz의 작동 주파수에서 적외선 센서 TSOP1138(TSOP4838과 유사)을 사용하고 다음 구성표에 따라 Arduino 보드에 연결했습니다.

이 스케치는 데이터 전송 인코딩을 결정하고 리모콘 버튼의 코드를 읽는 데 필요하지 않습니다.

라인의 스케치에서 int RECV_PIN = 11; 핀 번호 4를 표시하세요

스케치를 업로드한 후 "포트 모니터"를 열고 리모컨 버튼을 눌러 수신된 데이터를 확인합니다.

그림은 TV 리모컨과 플레이어 리모컨의 전원 버튼을 스캔하는 예를 보여줍니다. 이제 버튼 코드에 대한 테이블을 만듭니다.

위 사진처럼 잘 받았습니다. 비문 아래 TV TV 리모컨 버튼 코드; 비문 아래 플레이어- 미디어 플레이어 리모콘의 코드.

이제 사진의 다이어그램에 따라 Arduino 보드에서 적외선 신호 수신기를 분리하고 HC-05 Bluetooth 모듈과 적외선 LED를 연결합니다.

그 후 바로 스케치로 이동합니다.

스케치

#포함하다 IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) ( y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // TV 리모컨의 버튼 코드 if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); 지연(40 ); ) if (x == 98) ( irsend.sendNEC(0x807FA857, 32); 지연(40); ) if (x == 99) ( irsend.sendNEC(0x807F708F, 32); 지연(40); ) if (x == 100) ( irsend.sendNEC(0x807FF00F, 32); 지연(40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); 지연(40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); 지연(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); 지연(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); 지연(40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); 지연(40); ) if (x == 106) ( irsend.sendNEC(0x807F38C7 , 32); 지연(40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); 지연(40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); 지연(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); 지연(40); ) ) if (y == 2) ( //미디어 플레이어 리모컨 버튼의 코드 if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); 지연(40); ) if (x == 98) ( irsend.sendNEC(0xFDE01F, 32); 지연(40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); 지연(40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); 지연(40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); 지연(40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32 ); 지연(40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); 지연(40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); 지연( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); 지연(40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); 지연(40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); 지연(40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); 지연(40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); 지연(40); ) ) ) )


스케치에서 다음 라인의 버튼 코드를 편집해야 합니다.

If (x == 97) ( irsend.sendNEC(0x807F08F7, 32); 지연(40);
807F08F7 값을 다음으로 변경합니다.

If (y == 1) ( //TV 리모컨의 버튼 코드 if (x == 97) ( irsend.sendNEC(0x12345678, 32); 지연(40); )
여기서 12345678은 버튼의 코드입니다.

버튼 코드를 사용하여 스케치를 편집한 후 Arduino 보드에 스케치를 업로드하고 휴대폰에 애플리케이션 설치를 진행합니다.

전화기에서 Bluetooth를 켜고 장치를 찾아 쌍을 만든 다음 응용 프로그램을 시작합니다. 풀트전화로.

시작하면 오른쪽 하단에 빨간색 Bluetooth 아이콘이 있는 화면이 표시됩니다. 이는 장치에 연결되어 있지 않음을 나타냅니다.

그 후 이 아이콘을 클릭하세요. 연결할 장치를 선택하는 사용 가능한 모든 블루투스 장치 목록이 포함된 창이 표시됩니다.

이제 메인 화면으로 돌아가서 이미 TV를 제어할 수 있습니다.

제어 모드로 전환하려면 라벨이 붙은 버튼을 눌러야 합니다. "플레이어". 앞서 말했듯이 'AV' 버튼은 '' 버튼으로 변경됩니다. ":

장치 연결을 끊으려면 "전원" 버튼을 몇 초 동안 누르기만 하면 됩니다.

음, 완성된 장치의 사진 몇 장입니다.

꽤 괜찮은 결과가 나온 것 같습니다. 기사에 대한 의견을 기다리고 있습니다.

인코딩 및 변조된 데이터 패킷을 IR LED로 보내고, 버튼을 누르고 있으면 패킷도 반복됩니다.

  • IR LED의 보이지 않는 적외선 빛은 Trima IR 수신기 모듈에 닿아 복조된 전기 펄스로 변환됩니다.
  • iarduino_IR 라이브러리는 IR 수신기에서 펄스를 지속적으로 읽고 디코딩합니다(두 번째 Arduino 하드웨어 타이머 사용).
  • 루프 코드에서는 라이브러리에서 디코딩된 데이터와 장치(램프)에 할당된 데이터를 확인하고 일치하면 Trema 모듈 Solid State의 입력에서 상태("1"/"0")를 변경합니다. 따라서 릴레이는 장치(램프)를 켜거나 끄는 것입니다.
  • 이 장치는 TV 리모컨에서 사용하지 않는 버튼(예: 컬러 텔레텍스트 버튼)을 할당하여 방의 조명을 제어하는 ​​경우 유용할 수 있습니다.

    백열등 대신 최대 2A의 전류 소비로 ~220V 네트워크 장치를 연결할 수 있습니다.

    우리는 다음이 필요합니다:

    • IR 원격 제어 x 1pcs (모든 TV IR 리모컨이 가능합니다)
    • 우리가 제어할 장치(램프) x 3개.

    프로젝트를 구현하려면 라이브러리를 설치해야 합니다.

    • IR 트랜시버 작업을 위한 라이브러리 iarduino_IR
      중요한: 라이브러리는 두 번째 하드웨어 타이머를 사용합니다.
      PWM 신호를 3 또는 11 출력으로 출력하지 마십시오!

    Wiki 페이지 - Arduino IDE에 라이브러리 설치에서 라이브러리를 설치하는 방법을 확인할 수 있습니다.

    동영상:

    연결 다이어그램:

    이 회로는 디지털 모듈만 사용하며 모든(디지털 및 아날로그 모두) Arduino 핀에 연결할 수 있습니다. 예를 들어 모든 모듈을 아날로그 출력에 연결했습니다. Arduino 아날로그 핀이 일반 디지털 핀으로 작동하여 논리 "0"과 "1"의 형태로 디지털 신호를 수신하고(IR 수신기에서) 전송할 수 있다는 사실을 모든 사람이 아는 것은 아닙니다.

    장치를 다른 핀에 연결하려면 스케치의 두 번째(IR 개체 선언) 및 세 번째(pinRelay 배열 선언) 줄에 해당 번호를 표시해야 합니다. 프로그램 코드는 스케치의 세 번째 줄(pinRelay 배열 선언)에 핀 번호를 나열하여 Arduino에 있는 사용 가능한 핀 수만큼 릴레이를 연결할 수 있도록 작성되었습니다.

    작업 알고리즘:

    • 시작 시, 스케치는 IR 원격 버튼 코드를 각 솔리드 스테이트 릴레이에 순차적으로 할당합니다. 먼저 LED가 깜박이고 무접점 릴레이의 회로가 닫히고 출력이 먼저 표시됩니다. IR 리모컨의 아무 버튼이나 누르면 해당 버튼의 코드가 해당 릴레이에 할당되고 다음 코드가 깜박이기 시작하는 식으로 모든 릴레이가 IR 리모컨의 버튼에 할당될 때까지 계속됩니다.
    • 약속 후버튼 기능, 모든 릴레이가 꺼져 있습니다. IR리모콘 버튼을 누르면 이 버튼의 코드가 할당된 릴레이가 켜집니다. 표시된 버튼을 다시 누르면 릴레이가 꺼집니다. 어떤 릴레이에도 코드가 할당되지 않은 버튼을 누르면 장치가 응답하지 않습니다.
    • 만약에시작할 때마다 버튼 코드를 할당하지 않으려면 varRelay 배열을 선언할 때 이를 명시적으로 지정하고 설정 코드에서 for 및 while 루프를 제거하세요.
    • 각 버튼의 코드를 알아보세요다음 줄을 작성할 수 있습니다: if(IR.check())(Serial.println(IR.data);)

    프로그램 코드:

    #포함하다 // IR 수신기와 작동하도록 라이브러리를 연결합니다. iarduino_IR_RX IR(A5); // IR 수신기와 함께 작동하기 위한 IR 개체를 선언합니다(IR 수신기가 연결된 모든 핀을 나타냄) const uint8_t pinRelay = (A1,A2,A3); // 무접점 릴레이가 연결된 핀(디지털 또는 아날로그)의 번호를 나타내는 배열을 선언합니다. const uint8_t allRelay = sizeof(pinRelay); // pinRelay 배열의 요소 수(릴레이 수)를 전달하여 상수를 선언합니다. uint32_t varRelay; // 릴레이를 포함한 IR 수신기의 코드(명령)로 배열을 선언합니다. bool modRelay; // 릴레이 상태를 사용하여 배열을 선언합니다. uint8_t setRelay; // IR 수신기의 명령이 기록되는 릴레이 수로 변수를 선언합니다. void setup())( IR.begin(); // IR 트랜시버 작업을 초기화합니다. for(uint8_t i=0; i IR 리모콘과 IR 수신기 모듈을 함께 사용하면 Arduino 보드의 원격 제어를 쉽게 구현할 수 있습니다.

    제조업체가 권장하는 하네스가 보드에 설치된 VS1838B IR 수신기에 지나지 않습니다.

    이 모듈을 기본적으로 사용하려면 38kHz 주파수의 리모콘이 필요합니다.

    이 보드의 장점은 푸시인 커넥터입니다. 이를 통해 IR 수신기를 납땜 없이 프로젝트에 필요한 주파수에서 작동하는 다른 수신기로 교체할 수 있습니다.

    주요 기술적 특성:

    공급 전압: 2.7~5.5V

    변조 주파수: 38kHz

    온도 범위: - 20 ... + 80°C

    인터페이스: 디지털

    아두이노에 연결하기

    모듈에는 3핀 2.54mm 커넥터가 장착되어 있습니다.

    : GND 핀에 연결

    : +5V 출력에 연결

    : 디지털 핀(예: D2)에 연결됩니다.

    Arduino 환경에서 작업하는 예

    이 모듈을 사용하려면 IRRemote 라이브러리를 설치해야 합니다.

    다운로드하여 압축을 풀고 Arduino 폴더의 라이브러리 폴더에 넣습니다. 라이브러리를 추가할 때 Arduino IDE가 열려 있었다면 환경을 재부팅하세요.

    리모컨 버튼 읽기

    리모콘 판독값을 읽으려면 아래 스케치를 작성하세요. 누른 버튼의 인코딩을 포트로 출력합니다.

    예를 들어 그림과 같이 리모콘을 사용하겠습니다. 이 유형의 리모콘은 세트에 포함되어 있습니다.

    닉네임으로 커뮤니티 회원이 작성한 원본 기사에서 다양한 리모콘의 작동 논리의 차이점을 읽을 수 있습니다.

    샘플 코드:

    #포함하다 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //특정 포트로부터 신호를 수신하기 위한 객체 생성 decode_results 결과; //결과를 저장하는 변수무효의 설정 () { 연속물 // 수신 시작) 무효의 고리() ( if (irrecv.decode(&results)) //신호를 받을 때... { 연속물.println(결과.값); //...해당 값을 직렬 포트로 출력합니다. irrecv.resume(); ) )

    포트 모니터에 다음이 표시되어야 합니다.

    각 버튼을 거의 1초 동안 누르고 있으면 약 10개의 코드를 얻을 수 있습니다. 첫 번째는 버튼 코드입니다. 그 후 버튼이 멈췄다는 표준 코드가 나타나기 시작합니다.

    리모콘으로 Arduino 보드 제어

    첫 번째 버튼이 인코딩되면 Arduino 보드(D13)의 LED가 켜지고 두 번째 버튼이 인코딩되면 꺼지도록 만들어 보겠습니다.

    샘플 코드:

    // Arduino IDE 1.0.3에서 테스트됨#포함하다 int RECV_PIN = 2; 정수 LED = 13; IRrecv irrecv(RECV_PIN); decode_results 결과; 무효의 설정 () { 연속물.시작(9600); irrecv.enableIRIn(); // 수신자 시작핀모드(LED, 출력); ) 무효의 고리() ( if (irrecv.decode(&results)) ( 연속물.println(결과.값); if (결과.값 == 16769565) //인코딩 1을 받았을 때( 디지털쓰기(LED, 높음); // LED를 켠다) if (결과.값 == 16761405) // 인코딩 2를 수신할 때( 디지털쓰기(LED, LOW); // LED 끄기) irrecv.resume(); //다음 값을 구한다 } }

    모두들 좋은 하루(혹은 밤, 원하시면) 서정적인 소개부터 시작하겠습니다. 요즘은 집을 갖고 있는 사람들이 많아 리모콘이 있는 TV, 튜너, DVD 플레이어 . 많은 사람(및 가족)은 손에 리모컨이 없는 가정 생활을 상상할 수 없습니다. 동의하십시오 - 가전 제품의 주인이되고 언제든지 이러한 하드웨어에 대한 귀하의 의지를 지시하는 것이 얼마나 대단한지. 이 기사에서는 원격 제어 기술을 더 깊이 살펴보고 우리의 요구에 맞는 몇 가지 적용 사례를 제시하고자 합니다.

    그렇다면 실험의 구성 요소로 무엇이 필요합니까? 옵션으로 기성품 IR 리모컨 및 IR 수신기 모듈 판매. 하지만 우리는 기다리고 돈을 지불하고 싶지 않기 때문에 더 하드코어하게 행동할 것입니다. 출처를 알 수 없는 리모콘을 기본으로 삼아 적외선 수신기가 납땜된 중국 튜너의 보드 조각도 있습니다. 아래 사진에서 이러한 구성 요소를 볼 수 있습니다. 솔직히 말해서 리모콘은 사무실 책상에 있는 불필요한 쓰레기 중에서 발견되었고, IR 수신기가 달린 보드는 가장 가까운 라디오 수리점에서 가져왔습니다.

    그럼 내가 아까 말했듯이 한니발 - "카르타고로 전진하다" . 수신기의 납땜을 풀고 보드에 연결하기만 하면 됩니다. 아두이노다음 계획에 따라 ...

    • IR 수신기 연결

    IR 수신기 보드에서 납땜된 부품에는 표시가 없으며 수천 개가 생산된 또 다른 알려지지 않은 중국 무선 부품일 뿐입니다. 간단히 말해서, 하나의 건물에 결합되어 있다고 말할 수 있습니다.포토다이오드, 프리앰프 및 드라이버 . 출력은 정규로 구성됩니다.TTL 신호 패딩이 없어 마이크로컨트롤러에 의한 추가 처리에 적합합니다. 캐리어 주파수는 아마(!) 36kHz일텐데 지금은 별로 중요하지 않은데... 그냥 보드에 연결해 보도록 하겠습니다아두이노 , 조건부 다이어그램은 이 장치의 원하는 핀아웃을 제공합니다. 아래 그림에서 빨간색으로 표시된 부분이 우리 몸을 이루는 몸체의 형태입니다.IR 수신기 , 녹색으로 강조 표시됨 - 보드에 연결된 핀아웃아두이노 .

    주목!!! 인터넷에는 이러한 패키지(TSOP)의 장치에 대한 핀아웃 다이어그램이 많이 있습니다. 이 기사에 제공된 핀아웃은 인터넷에서 찾은 핀아웃과 일치하지 않을 수 있지만 이것이 모든 것이 우리와 연결되는 방식입니다. IR 수신기가 연결되었을 때 가열되기 시작하면 즉시 조립된 회로를 끄십시오. 이는 연결 핀아웃이 실제 핀아웃과 일치하지 않음을 의미하므로 거의 무작위로 선택해야 합니다. 인터넷에서 찾은 회로가 IR 수신기에 적합하지 않았기 때문에 이것이 바로 우리가 한 일입니다. 여기서 일반적으로 가장 중요한 것은 Arduino 보드를 태우지 말고 주의해서 진행하는 것입니다!!!

    • IR원격 라이브러리

    그래서 모든 것이 연결되어 있습니다. 리모콘에서 코드를 읽을 수 있는 라이브러리가 있습니다. IRremote.h, 리모콘 또는 오히려 버튼 코드를 연구하는 것이 도움이 됩니다. 앞으로는 우리 자신의 목적에 맞게 읽기 코드를 사용할 것입니다. 버튼 코드를 읽는 데 사용되는 스케치는 이 라이브러리의 예에 나와 있습니다. IRrecvDemo. 주목!!! 스케치를 컴파일할 때 오류가 발생하며 맨 처음에 두 개의 플러그인 라이브러리를 더 추가해야 합니다.

    #include "boarddefs.h" //추가 라이브러리 #include "IRremote.h" #include "IRremoteInt.h" //추가 라이브러리 int RECV_PIN = 2; //IR 수신기의 출력 신호를 연결하기 위한 핀 //IRrecv 클래스의 인스턴스를 생성하고 IR 수신기의 신호를 매개변수로 연결하기 위한 핀을 전달 IRrecv irrecv(RECV_PIN); decode_results 결과; //누른 버튼의 수신 코드를 저장하는 변수 void setup() ( Serial.begin(9600); irrecv.enableIRIn(); //IR 수신기가 작동하도록 설정 ) void loop() ( if (irrecv.decode( &results)) //이벤트가 발생한 경우/버튼이 눌린 경우 ( Serial.println(results.value, HEX); //눌린 버튼의 코드를 16진수 형식으로 포트 모니터에 출력 irrecv.resume(); // 다음 값 읽기/버튼 ) 지연(100 ); )

    스케치가 보드에 업로드된 후아두이노(우리는 사용 아두이노 나노방패에 Nano용 I/O 무선 쉴드 ), 열 수 있습니다 포트 모니터 리모컨의 버튼을 눌렀을 때 어떤 코드가 나타나는지 확인하세요. 스케치 결과는 아래 스크린샷에 표시됩니다.

    그런데 다음과 같이 포트 모니터 우리는 입증된 소프트웨어를 사용합니다. 관심이 있는 사람이라면 기사를 읽고 Serial Monitor Pro를 다운로드할 수 있습니다.

    #define KEY_ONOFF 0x807F807F //켜기/끄기 버튼 #define KEY_MUTE 0x807F48B7 //음소거 버튼 #define KEY_1 0x807F00FF //버튼 1 #define KEY_2 0x807FE01F //버튼 2 #define KEY_3 0x807F609F //버튼 3 #define KEY_4 0x807F20DF //버튼 4 #define KEY_5 0x807FD02F //버튼 5 #define KEY_6 0x807F50AF //버튼 6 #define KEY_7 0x807F10EF //버튼 7 #define KEY_8 0x807FF00F //버튼 8 #define KEY_9 0x807F708F //버튼 9 # KEY_0 0x80 정의 7FC837 //버튼 0

    이제 일반적으로 최종 테스트를 위한 모든 준비가 완료되었습니다. 이는 릴레이 모듈의 켜기/끄기를 제어하는 ​​기본 테스트가 될 것입니다. 다음은 작은 작업입니다.

    • 우리는 두 개의 릴레이 모듈을 사용합니다
    • 릴레이 번호 1을 리모콘의 버튼 "1"에 바인딩합니다.
    • 릴레이 2번은 리모콘의 버튼 "2"에 연결되어 있습니다.
    • 릴레이 모듈 중 하나를 켜려면 해당 모듈이 할당된 버튼을 누르십시오.
    • 릴레이 모듈을 끄는 것도 해당 모듈이 할당된 버튼을 눌러 수행됩니다.
    • On/Off 버튼을 누르면 두 릴레이 모듈이 무조건 꺼집니다(켜져 있거나 둘 중 하나가 켜져 있는 경우).

    위 작업을 구현하는 스케치:

    #include "boarddefs.h" //추가 라이브러리 #include "IRremote.h" #include "IRremoteInt.h" //추가 라이브러리 #define KEY_ONOFF 0x807F807F //켜기/끄기 버튼 #define KEY_1 0x807F00FF //버튼 1 #define KEY_2 0x807FE01F //버튼 2 #define RELOUT1 3 //릴레이 1용 출력 포트 #define RELOUT2 4 //릴레이 2용 출력 포트 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results 결과; 정적 부울 REL1_ONOFF = false; 정적 부울 REL2_ONOFF = false; void setup() ( pinMode(RELOUT1, OUTPUT); pinMode(RELOUT2, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); // 수신기 시작 ) void loop() ( if (irrecv.decode(&results )) ( 스위치(결과.값) ( ​​case(KEY_ONOFF): REL1_ONOFF = false; REL2_ONOFF = false; break; case(KEY_1): if(REL1_ONOFF) REL1_ONOFF = false; else REL1_ONOFF = true; break; case(KEY_2 ): if(REL2_ONOFF) REL2_ONOFF = false; else REL2_ONOFF = true; 중단; ) irrecv.resume(); ) digitalWrite(RELOUT1, REL1_ONOFF); digitalWrite(RELOUT2, REL2_ONOFF); 지연(100); )

    그리고 기사 마지막에는 두 스케치의 작업을 보여주는 비디오가 있습니다. 원하고 창의적인 상상력이 있다면 플러그인 제품군을 확장하고 모든 것을 보다 발전된 방식으로 관리할 수 있습니다. 우리 기사에서 우리는 이 기술의 적용에 대한 기본적인 예를 제시하려고 했습니다. 많은 관심 부탁드리며 즐겁게 시청해주세요!!!

    댓글이 작동하려면 자바스크립트를 활성화하세요.

    Arduino를 사용하여 자신만의 TV 리모컨을 만드는 방법에 대한 기사가 인터넷에 많이 있지만 TV와 미디어 플레이어를 제어하려면 범용 리모컨이 필요했습니다. 제 만능 리모콘의 가장 큰 장점은 안드로이드 폰 애플리케이션의 버튼이 이중 용도로 사용된다는 점인데 영상을 보세요.



    리모컨은 화면에 있는 버튼과 거의 동일하게 TV와 플레이어를 제어할 수 있어 매우 편리합니다. 한 가지 차이점은 " AV"TV 제어 모드에서는 버튼으로 변경됩니다" " (정지) 플레이어 제어 모드로 전환할 때. 사진은 두 가지 모드를 보여 주며, 왼쪽은 TV 제어 모드, 오른쪽은 플레이어 제어 모드입니다.

    자, 이제 그러한 리모콘을 만드는 방법에 대해 조금 말씀 드리겠습니다. 장치로는 ERGO TV용 리모컨과 DUNE HD TV101W 미디어 플레이어용 리모컨을 사용했습니다.

    리모콘으로부터 데이터를 수신하기 위해 38kHz의 작동 주파수에서 적외선 센서 TSOP1138(TSOP4838과 유사)을 사용하고 다음 구성표에 따라 Arduino 보드에 연결했습니다.

    이 스케치는 데이터 전송 인코딩을 결정하고 리모콘 버튼의 코드를 읽는 데 필요하지 않습니다.

    라인의 스케치에서 int RECV_PIN = 11; 핀 번호 4를 표시하세요

    스케치를 업로드한 후 "포트 모니터"를 열고 리모컨 버튼을 눌러 수신된 데이터를 확인합니다.

    그림은 TV 리모컨과 플레이어 리모컨의 전원 버튼을 스캔하는 예를 보여줍니다. 이제 버튼 코드에 대한 테이블을 만듭니다.

    위 사진처럼 잘 받았습니다. 비문 아래 TV TV 리모컨 버튼 코드; 비문 아래 플레이어- 미디어 플레이어 리모콘의 코드.

    이제 사진의 다이어그램에 따라 Arduino 보드에서 적외선 신호 수신기를 분리하고 HC-05 Bluetooth 모듈과 적외선 LED를 연결합니다.

    그 후 바로 스케치로 이동합니다.

    스케치

    #포함하다 IRsend irsend; int y = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) ( y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // TV 리모컨의 버튼 코드 if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); 지연(40 ); ) if (x == 98) ( irsend.sendNEC(0x807FA857, 32); 지연(40); ) if (x == 99) ( irsend.sendNEC(0x807F708F, 32); 지연(40); ) if (x == 100) ( irsend.sendNEC(0x807FF00F, 32); 지연(40); ) if (x == 101) ( irsend.sendNEC(0x807F30CF, 32); 지연(40); ) if (x == 102) ( irsend.sendNEC(0x807FB04F, 32); 지연(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); 지연(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); 지연(40); ) if (x == 105) ( irsend.sendNEC(0x807FD827, 32); 지연(40); ) if (x == 106) ( irsend.sendNEC(0x807F38C7 , 32); 지연(40); ) if (x == 107) ( irsend.sendNEC(0x807F48B7, 32); 지연(40); ) if (x == 108) ( irsend.sendNEC(0x807FB847, 32); 지연(40); ) if (x == 109) ( irsend.sendNEC(0x807F6897, 32); 지연(40); ) ) if (y == 2) ( //미디어 플레이어 리모컨 버튼의 코드 if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); 지연(40); ) if (x == 98) ( irsend.sendNEC(0xFDE01F, 32); 지연(40); ) if (x == 99) ( irsend.sendNEC(0xFD18E7, 32); 지연(40); ) if (x == 100) ( irsend.sendNEC (0xFDE817, 32); 지연(40); ) if (x == 101) ( irsend.sendNEC(0xFDA857, 32); 지연(40); ) if (x == 102) ( irsend.sendNEC(0xFD6897, 32 ); 지연(40); ) if (x == 103) ( irsend.sendNEC(0xFDA857, 32); 지연(40); ) if (x == 104) ( irsend.sendNEC(0xFD6897, 32); 지연( 40); ) if (x == 105) ( irsend.sendNEC(0xFDE817, 32); 지연(40); ) if (x == 106) ( irsend.sendNEC(0xFD18E7, 32); 지연(40); ) if (x == 107) ( irsend.sendNEC(0xFD9867, 32); 지연(40); ) if (x == 108) ( irsend.sendNEC(0xFD28D7, 32); 지연(40); ) if (x = = 109) ( irsend.sendNEC(0xFD20DF, 32); 지연(40); ) ) ) )


    스케치에서 다음 라인의 버튼 코드를 편집해야 합니다.

    If (x == 97) ( irsend.sendNEC(0x807F08F7, 32); 지연(40);
    807F08F7 값을 다음으로 변경합니다.

    If (y == 1) ( //TV 리모컨의 버튼 코드 if (x == 97) ( irsend.sendNEC(0x12345678, 32); 지연(40); )
    여기서 12345678은 버튼의 코드입니다.

    버튼 코드를 사용하여 스케치를 편집한 후 Arduino 보드에 스케치를 업로드하고 휴대폰에 애플리케이션 설치를 진행합니다.

    전화기에서 Bluetooth를 켜고 장치를 찾아 쌍을 만든 다음 응용 프로그램을 시작합니다. 풀트전화로.

    시작하면 오른쪽 하단에 빨간색 Bluetooth 아이콘이 있는 화면이 표시됩니다. 이는 장치에 연결되어 있지 않음을 나타냅니다.

    그 후 이 아이콘을 클릭하세요. 연결할 장치를 선택하는 사용 가능한 모든 블루투스 장치 목록이 포함된 창이 표시됩니다.

    이제 메인 화면으로 돌아가서 이미 TV를 제어할 수 있습니다.

    제어 모드로 전환하려면 라벨이 붙은 버튼을 눌러야 합니다. "플레이어". 앞서 말했듯이 'AV' 버튼은 '' 버튼으로 변경됩니다. ":

    장치 연결을 끊으려면 "전원" 버튼을 몇 초 동안 누르기만 하면 됩니다.

    음, 완성된 장치의 사진 몇 장입니다.

    꽤 괜찮은 결과가 나온 것 같습니다. 기사에 대한 의견을 기다리고 있습니다.