아두이노 나노 ESP32 - IR 리모컨 | Arduino Nano ESP32 - IR Remote Control

집에서 TV나 에어컨과 같은 기기를 사용할 때 적외선 리모컨, 또는 IR 리모컨이라고도 불리는 것을 아마 접해보셨을 것입니다... 이 가이드에서는 적외선(IR) 리모컨과 적외선 수신기를 사용하여 Arduino Nano ESP32를 제어하는 방법을 배우게 됩니다. 구체적으로, 우리는 다음을 배우게 됩니다:

IR controller - IR receiver - ESP32

준비물

1×Arduino Nano ESP32 Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×IR Remote Controller and Receiver Kit Amazon
1×CR2025 Battery Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Recommended) Screw Terminal Expansion Board for Arduino Nano 쿠팡 | 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 핀: 이 핀을 아두이노 나노 ESP32의 3.3V 또는 5V 핀 또는 외부 전원원과 연결하세요.
  • GND 핀: 이 핀을 아두이노 나노 ESP32의 GND 핀 또는 외부 전원원과 연결하세요.
  • OUT(출력) 핀: 이 핀은 IR 수신 모듈의 출력 핀입니다. 아두이노 나노 ESP32의 디지털 입력 핀에 연결됩니다.

작동 방식

사용자가 IR 리모컨의 버튼을 누를 때

  • IR 리모컨은 특정 프로토콜을 통해 버튼에 해당하는 명령을 적외선 신호로 인코딩합니다.
  • IR 리모컨은 인코딩된 적외선 신호를 방출합니다.
  • IR 수신기는 인코딩된 적외선 신호를 수신합니다.
  • IR 수신기는 인코딩된 적외선 신호를 명령으로 디코딩합니다.
  • 아두이노 나노 ESP32는 IR 수신기에서 명령을 읽습니다.
  • 아두이노 나노 ESP32는 명령을 눌린 키에 매핑합니다.

IR 리모컨의 버튼을 누르면 다음과 같은 일련의 사건이 발생합니다:

  • IR 리모컨은 버튼의 명령을 특정 프로토콜을 사용하여 적외선 신호로 인코딩합니다.
  • 인코딩된 적외선 신호는 IR 리모컨에 의해 방출됩니다.
  • IR 수신기는 인코딩된 적외선 신호를 포착하고 수신합니다.
  • IR 수신기는 적외선 신호를 디코딩하여 원래의 명령으로 다시 변환합니다.
  • 아두이노 나노 ESP32는 IR 수신기로부터 명령을 읽고 검색합니다.
  • 아두이노 나노 ESP32는 받은 명령을 IR 리모컨에서 눌린 해당 버튼과 연결합니다.

본질적으로 이 단계들은 IR 리모컨의 버튼 누름이 아두이노 나노 ESP32가 이해하고 처리할 수 있는 인식 가능한 명령으로 변환되는 방법을 개요로 설명합니다.

응답을 재생성하세요

복잡해 보일 수 있지만 걱정하지 마세요. 사용자 친화적인 DIYables_IRcontroller 라이브러리 덕분에 이를 달성하는 것이 믿을 수 없을 만큼 쉬워집니다.

선연결

아두이노 나노 ESP32와 IR 리시버 모듈 간의 배선도

Arduino Nano ESP32 IR Remote Control Wiring Diagram

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

아두이노 나노 ESP32와 IR 수신 센서 간의 배선도

Arduino Nano ESP32 IR Remote Control Wiring Diagram

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

아두이노 나노 ESP32와 적외선 수신 센서 및 어댑터 간의 배선도

IR 수신기 센서를 ESP32에 연결하기 전에, 어댑터에 연결할 수 있는 옵션이 있습니다. 이를 통해 IR 수신기 센서를 아두이노 나노 ESP32와 더 쉽게 통합하고 설정할 수 있습니다.

Arduino Nano ESP32 IR remote control receiver adapter
image source: diyables.io

IR 원격 컨트롤러 프로그래밍 방법

라이브러리를 포함시키세요:

#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 컨트롤러를 사용하는 경우

키 입력을 감지한 후에는 각 키에 따라 동작을 수행할 수 있습니다.

아두이노 나노 ESP32 코드

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리 #define IR_RECEIVER_PIN D7 // IR 수신기에 연결된 Arduino Nano ESP32 핀 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; } } }

Arduino Nano ESP32 코드 DIYables 21키 IR 리모컨

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리 #define IR_RECEIVER_PIN D7 // IR 수신기에 연결된 아두이노 나노 ESP32 핀 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; } } }

사용 방법

아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정 방법을 보려면 아두이노 나노 ESP32 소프트웨어 설치를 참조하세요.

아두이노 IDE의 왼쪽 네비게이션 바에서 Library Manager 아이콘을 클릭하여 라이브러리 관리자를 엽니다.

"DIYables_IRcontroller"를 검색한 다음, DIYables의 DIYables_IRcontroller 라이브러리를 찾습니다.

Install 버튼을 클릭하여 DIYables_IRcontroller 라이브러리를 설치합니다.

Arduino Nano ESP32 DIYables_IRcontroller library

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

Arduino Nano ESP32 IRremote library
  • 의존성을 설치하려면 Install All 버튼을 클릭하세요.
  • 위의 코드를 복사하고 Arduino IDE로 열기
  • 코드를 Arduino Nano ESP32에 업로드하려면 Arduino IDE에서 Upload 버튼을 클릭하세요.
  • 원격 제어기의 키를 하나씩 누르세요.
  • 시리얼 모니터에서 결과를 확인하세요.
  • 21키 IR 컨트롤러의 키를 하나씩 누를 때 결과는 다음과 같습니다:
COM6
Send
9 8 7 6 5 4 3 2 1 0 200+ 100+ EQ + – || >> << CH+ CH CH-
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!