ESP8266 - IR 리모컨 제어 | ESP8266 - IR Remote Control

당신은 아마도 집에서 TV나 에어컨과 같은 기기를 사용할 때 적외선 리모컨, 또는 IR 리모컨을 접해본 적이 있을 것입니다... 이 튜토리얼은 적외선(IR) 리모컨과 적외선 수신기를 사용하여 ESP8266을 제어하는 방법을 안내합니다. 구체적으로, 우리는 다음을 배우게 될 것입니다:

IR controller - IR receiver - ESP8266 NodeMCU

준비물

1×ESP8266 NodeMCU Amazon
1×Micro USB Cable Amazon
1×IR Remote Controller and Receiver Kit Amazon
1×CR2025 Battery Amazon
1×Jumper Wires Amazon
1×(Optional) 5V Power Adapter Amazon
1×(Optional) ESP8266 Screw Terminal Adapter Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

IR 리모컨에 대하여

IR 제어 시스템은 두 부분으로 구성됩니다: IR 리모콘과 IR 수신기.

  • IR 리모컨은 적외선 신호를 사용하여 명령을 보내는 데 사용됩니다.
  • IR 수신기는 이러한 신호를 캡처하고 해석하여 장치를 제어합니다.

IR 키트는 일반적으로 위에서 언급한 두 가지 구성요소로 이루어져 있습니다: IR 리모컨과 IR 수신기.

IR 리모컨

IR 리모컨은 적외선 신호를 전송하는 휴대용 장치입니다. 여러 버튼이 있는 키패드로 장착되어 있습니다:

  • 리모컨의 각 버튼은 구별되는 기능이나 명령을 수행합니다.
  • 버튼이 눌리면, 리모컨은 보이지 않는 적외선 신호를 발산합니다. 이 신호는 눌린 버튼과 연결된 특별한 코드나 패턴을 포함합니다.
  • 이러한 적외선 신호는 적외선 스펙트럼에 속하기 때문에, 인간의 눈으로는 볼 수 없습니다.
IR controller
image source: diyables.io

IR 수신기

IR 수신 모듈은 리모컨이 방출하는 적외선 신호를 감지하고 수신하는 센서입니다.

적외선 수신기는 들어오는 적외선 신호를 감지하여 리모콘에 눌린 버튼을 나타내는 코드(명령)로 변환합니다.

IR 리시버는 센서 또는 모듈일 수 있습니다. 다음 선택 사항을 사용할 수 있습니다:

  • IR 리시버 모듈만
  • IR 리시버 센서만
  • IR 리시버 센서 + 어댑터
IR Receiver sensor module
image source: diyables.io
IR Receiver sensor adapter
image source: diyables.io

IR 리시버 핀배열

IR 수신 모듈 또는 센서에는 세 개의 핀이 있습니다:

  • VCC 핀: 이 핀을 ESP8266의 3.3V 또는 5V 핀 또는 외부 전원원에 연결하세요.
  • GND 핀: 이 핀을 ESP8266의 GND 핀 또는 외부 전원원에 연결하세요.
  • OUT(출력) 핀: 이 핀은 IR 수신 모듈의 출력 핀입니다. ESP8266의 디지털 입력 핀에 연결됩니다.

작동 원리

사용자가 IR 리모컨의 버튼을 누를 때 다음과 같은 동작이 일어납니다:

  • IR 리모컨은 버튼의 명령을 특정 프로토콜을 사용하여 적외선 신호로 변환합니다.
  • IR 리모컨은 인코딩된 적외선 신호를 방출합니다.
  • IR 수신기는 방출된 적외선 신호를 수신합니다.
  • IR 수신기는 적외선 신호를 디코드하여 원래의 명령으로 다시 변환합니다.
  • ESP8266은 IR 수신기로부터 명령을 읽고 수신합니다.
  • ESP8266은 수신된 명령을 IR 리모컨에 눌린 해당 버튼에 매핑합니다.

요약하자면, 이러한 단계들은 IR 리모컨의 버튼 누름이 ESP8266에서 활용될 수 있는 이해할 수 있는 명령으로 어떻게 변환되는지를 보여줍니다.

복잡해 보여도 걱정하지 마세요. DIYables_IRcontroller 라이브러리의 도움으로 굉장히 쉬워집니다.

선연결

ESP8266과 IR 수신 모듈 간의 배선도

ESP8266 NodeMCU IR Remote Control Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

ESP8266과 IR 수신 센서 간의 배선도

ESP8266 NodeMCU IR Remote Control Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP8266과 적외선 수신 센서 및 어댑터 간의 배선도

IR 수신 센서를 ESP8266에 연결하기 전에, 어댑터에 연결할 수 있는 옵션이 있습니다. 이를 통해 설정이 더 쉬워지고 IR 수신 센서와 ESP8266 사이의 올바른 연결이 보장됩니다.

ESP8266 NodeMCU IR remote control receiver adapter
image source: diyables.io

IR 리모컨 프로그래밍 방법

도서관을 포함합니다:

cpp #include <DIYables_IRcontroller.h> // IR 리시버용 라이브러리

17키 또는 21키 IR 리모컨에 해당하는 DIYables_IRcontroller_17 또는 DIYables_IRcontroller_21 객체를 선언하십시오.

DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다 // OR DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다

IR 컨트롤러를 초기화하십시오.

irController.begin();

루프에서 키가 눌렸는지 확인하세요. 만약 그렇다면, 키를 가져오세요.

Key17 key = irController.getKey(); // 17키 IR 컨트롤러를 사용하는 경우 // OR Key21 key = irController.getKey(); // 21키 IR 컨트롤러를 사용하는 경우

키 입력을 감지한 후, 각 키에 따라 특정 작업을 수행할 수 있습니다.

ESP8266 코드

ESP8266 코드 DIYables 17키 IR 리모컨

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리 #define IR_RECEIVER_PIN D5 // IR 컨트롤러에 연결된 ESP8266 핀 D5 DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다 void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_1: Serial.println("1"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_2: Serial.println("2"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_3: Serial.println("3"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_4: Serial.println("4"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_5: Serial.println("5"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_6: Serial.println("6"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_7: Serial.println("7"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_8: Serial.println("8"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_9: Serial.println("9"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_STAR: Serial.println("*"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_0: Serial.println("0"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_SHARP: Serial.println("#"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_UP: Serial.println("UP"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_DOWN: Serial.println("DOWN"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_LEFT: Serial.println("LEFT"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_RIGHT: Serial.println("RIGHT"); // 할 일: 당신의 컨트롤 break; case Key17::KEY_OK : Serial.println("OK"); // 할 일: 당신의 컨트롤 break; default: Serial.println("WARNING: undefined key:"); break; } } }

DIYables 21키 IR 리모컨을 위한 ESP8266 코드

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리 #define IR_RECEIVER_PIN D5 // IR 컨트롤러에 연결된 ESP8266 핀 D5 DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다 void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key21 key = irController.getKey(); if (key != Key21::NONE) { switch (key) { case Key21::KEY_CH_MINUS: Serial.println("CH-"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_CH: Serial.println("CH"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_CH_PLUS: Serial.println("CH+"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_PREV: Serial.println("<<"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_NEXT: Serial.println(">>"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_PLAY_PAUSE: Serial.println(">||"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_VOL_MINUS: Serial.println("–"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_VOL_PLUS: Serial.println("+"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_EQ: Serial.println("EQ"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_100_PLUS: Serial.println("100+"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_200_PLUS: Serial.println("200+"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_0: Serial.println("0"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_1: Serial.println("1"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_2: Serial.println("2"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_3: Serial.println("3"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_4: Serial.println("4"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_5: Serial.println("5"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_6: Serial.println("6"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_7: Serial.println("7"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_8: Serial.println("8"); // 할 일: 당신의 컨트롤 break; case Key21::KEY_9: Serial.println("9"); // 할 일: 당신의 컨트롤 break; default: Serial.println("WARNING: undefined key:"); break; } } }

사용 방법

ESP8266를 Arduino IDE에서 시작하려면 다음 단계를 따르세요:

  • ESP8266을 처음 사용하는 경우, Arduino IDE에서 ESP8266 환경 설정하는 방법 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성 요소를 연결하세요.
  • USB 케이블을 사용하여 컴퓨터에 ESP8266 보드를 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드를 선택하세요, 예를 들어 (NodeMCU 1.0 (ESP-12E Module))과 그에 해당하는 COM 포트를 선택합니다.
  • Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하세요.
  • "DIYables_IRcontroller"를 검색한 다음, DIYables에 의한 DIYables_IRcontroller 라이브러리를 찾으세요.
  • DIYables_IRcontroller 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
ESP8266 NodeMCU DIYables_IRcontroller library

아래 이미지와 같이 라이브러리 의존성을 설치하라는 요청을 받게 됩니다:

ESP8266 NodeMCU IRremote library
  • Install All 버튼을 클릭하여 종속성을 설치하세요
  • 위의 코드를 복사하고 Arduino IDE로 엽니다
  • 코드를 ESP8266에 업로드 하려면 Arduino IDE에서 Upload 버튼을 클릭하세요
  • 리모컨의 버튼을 하나씩 누르세요
  • 시리얼 모니터에서 결과를 확인하세요.
  • 17키 IR 컨트롤러의 버튼을 하나씩 누를 때, 다음과 같은 결과가 나타납니다:
COM6
Send
UP DOWN LEFT RIGHT OK # 0 * 9 8 7 6 5 4 3 2 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

이제 IR 리모컨을 사용하여 LED, 팬, 펌프, 액추에이터 등 다양한 장치를 제어하고 코드를 사용자 정의할 수 있는 능력을 가지게 되었습니다. 이는 리모컨을 통해 전송된 명령에 이러한 장치들이 반응하도록 코드를 변경할 수 있다는 의미입니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!