아두이노 - IR 리모컨 제어 | Arduino - IR Remote Control

당신은 TV와 에어컨과 같은 가정용 전자기기를 사용하면서 적외선 리모콘, 즉 IR 리모콘을 접해본 적이 있을 것입니다... 이 튜토리얼에서, 우리는 적외선(IR) 리모콘과 적외선 수신기를 사용하여 아두이노를 제어하는 방법을 배울 것입니다. 구체적으로, 우리는 다음을 배울 것입니다:

그러면 IR 리모컨을 통해 LED, 팬, 펌프, 액추에이터 등을 제어하기 위한 코드를 수정할 수 있습니다.

IR controller - IR receiver - Arduino

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×IR Kit (Remote Controller and Receiver) Amazon
1×CR2025 Battery Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Recommended) Breadboard Shield For Arduino Uno 쿠팡 | Amazon
1×(Recommended) Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

IR 리모컨에 관하여

IR 제어 시스템에는 두 가지 구성 요소가 포함됩니다:

  • IR remote controller: IR 리모콘
  • IR receiver: 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 수신기로부터 명령어를 읽습니다.
  • 아두이노는 명령어를 눌린 키와 맵핑합니다.

복잡해 보이지만 걱정하지 마세요. DIYables_IRcontroller 라이브러리의 도움으로, 그것은 식은 죽 먹기입니다.

선연결

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

Arduino IR Remote Control Wiring Diagram

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

실제 배선도

Arduino IR remote control receiver module
image source: diyables.io

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

Arduino IR Remote Control Wiring Diagram

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

실제 배선도

Arduino IR remote control receiver sensor
image source: diyables.io

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

아두이노에 연결하기 전에 적외선 수신 센서를 어댑터에 연결할 수도 있습니다.

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

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

아두이노 코드

[DIYables 17키 IR 리모컨]용 아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-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("WARNING: undefined key:"); break; } } }

DIYables 21키 IR 리모컨 컨트롤러를 위한 아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-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 DIYables_IRcontroller library

아래 이미지와 같이 라이브러리 종속성을 설치하라는 요청을 받게 될 것입니다:

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