아두이노 나노 - IR 리모콘 제어 | Arduino Nano - IR Remote Control

집에서 TV나 에어컨과 같은 기기를 사용할 때 적외선 원격 제어기, 즉 IR 원격 제어기를 만나본 적이 있을 것입니다... 이 튜토리얼은 적외선(IR) 원격 제어기와 적외선 수신기를 사용하여 Arduino Nano를 제어하는 방법을 알려드립니다. 구체적으로 우리는 다음을 배울 것입니다:

IR controller - IR receiver - Arduino Nano

준비물

1×Arduino Nano Amazon
1×USB A to Mini-B USB cable 쿠팡 | Amazon
1×IR Remote Controller and Receiver Kit Amazon
1×CR2025 Battery Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Nano Amazon
1×(Recommended) Screw Terminal Adapter 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 핀: 이 핀을 아두이노 나노 또는 외부 전원 소스의 3.3V 또는 5V 핀에 연결하세요.
  • GND 핀: 이 핀을 아두이노 나노 또는 외부 전원 소스의 GND 핀에 연결하세요.
  • OUT (출력) 핀: 이 핀은 IR 수신 모듈의 출력 핀입니다. 아두이노 나노의 디지털 입력 핀에 연결됩니다.

작동 원리

사용자가 IR 리모컨의 버튼을 누를 때, 다음과 같은 단계가 발생합니다:

  • IR 리모컨은 특정 프로토콜을 사용하여 버튼과 관련된 명령어를 적외선 신호로 인코딩합니다.
  • IR 리모컨은 인코딩된 적외선 신호를 방출합니다.
  • IR 수신기는 인코딩된 적외선 신호를 수신합니다.
  • IR 수신기는 인코딩된 적외선 신호를 디코딩하여 원래의 명령어로 다시 변환합니다.
  • 아두이노 나노는 IR 수신기로부터 수신된 명령어를 읽습니다.
  • 아두이노 나노는 수신된 명령어를 IR 리모컨에서 눌린 해당 키와 매핑합니다.

이 단계들은 IR 리모컨의 버튼 누름이 어떻게 Arduino Nano에 의해 인식 가능한 명령으로 변환되는지 과정을 설명합니다.

복잡해 보일 수 있지만 걱정할 필요가 없습니다. DIYables_IRcontroller 라이브러리 덕분에 매우 쉬워집니다.

선연결

아두이노 나노와 IR 수신 모듈 간의 배선도

Arduino Nano IR Remote Control Wiring Diagram

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

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

Arduino Nano IR Remote Control Wiring Diagram

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

아두이노 나노와 IR 수신기 센서 및 어댑터 사이의 전선 연결도

Arduino Nano에 IR 수신 센서를 연결하기 전에, 어댑터에 연결할 수 있는 옵션이 있습니다. 이를 통해 보다 쉽게 설치할 수 있고 IR 수신 센서와 Arduino Nano 간의 올바른 연결을 보장합니다.

당신은 먼저 아댑터에 연결하기 전에 IR 수신기 센서를 아댑터에 연결할 수도 있습니다.

Arduino Nano 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입니다. // 또는 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 컨트롤러를 사용하는 경우

키를 누를 때 감지하면 각 키에 해당하는 특정 작업을 수행할 수 있습니다.

아두이노 나노 코드

Arduino Nano 코드 DIYables 17키 IR 리모컨

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

아두이노 나노 코드 DIYables 21키 IR 리모컨

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

사용 방법

  • Arduino IDE 왼쪽 바의 Libraries 아이콘을 클릭하세요.
  • "DIYables_IRcontroller"를 검색한 다음, DIYables 제작의 DIYables_IRcontroller 라이브러리를 찾으세요.
  • DIYables_IRcontroller 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
Arduino Nano DIYables_IRcontroller library

아래 이미지와 같이 라이브러리 종속성 설치를 요청받게 됩니다:

Arduino Nano IRremote library
  • 의존성을 설치하려면 Install All 버튼을 클릭하세요.
  • 위의 코드를 복사하고 아두이노 IDE로 열기
  • 아두이노 나노에 코드를 업로드하려면 아두이노 IDE에서 Upload 버튼을 클릭하세요.
  • 리모컨의 키를 하나씩 누르세요.
  • 시리얼 모니터에서 결과를 확인하세요.
  • 17키 IR 컨트롤러의 키를 하나씩 눌렀을 때 기대할 수 있는 결과입니다:
COM6
Send
1 2 3 4 5 6 7 8 9 * 0 # UP DOWN LEFT RIGHT OK
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!