아두이노 IR 리모컨 제어
당신은 TV와 에어컨과 같은 가정용 전자기기를 사용하면서 적외선 리모콘, 즉 IR 리모콘을 접해본 적이 있을 것입니다... 이 튜토리얼에서, 우리는 적외선(IR) 리모콘과 적외선 수신기를 사용하여 아두이노를 제어하는 방법을 배울 것입니다. 구체적으로, 우리는 다음을 배울 것입니다:
그러면 IR 리모컨을 통해 LED, 팬, 펌프, 액추에이터 등을 제어하기 위한 코드를 수정할 수 있습니다.
1 | × | 아두이노 우노 R3 | 쿠팡 | 아마존 | |
1 | × | USB 2.0 케이블 타입 A/B | 쿠팡 | 아마존 | |
1 | × | IR 리모컨 키트 (리모컨 및 수신기 포함) | 아마존 | |
1 | × | CR2025 배터리 (IR 리모컨용) | 아마존 | |
1 | × | 점퍼케이블 | 아마존 | |
1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.
IR 제어 시스템에는 두 가지 구성 요소가 포함됩니다:
IR 키트에는 보통 위의 두 구성 요소가 포함됩니다.
IR 리모컨은 적외선 신호를 발신하는 소형 기기입니다. IR 리모컨은 다양한 버튼이 있는 키패드로 구성되어 있습니다:
리모컨의 각 버튼은 특정 기능이나 명령에 해당합니다.
버튼이 눌리면, 리모콘은 누른 버튼과 관련된 고유한 코드나 패턴을 포함하는 적외선 신호를 발신합니다.
이러한 적외선 신호는 적외선 스펙트럼에 있기 때문에 인간의 눈에는 보이지 않습니다.
image source: diyables.io
IR 수신 모듈은 원격 제어기에서 방출된 적외선 신호를 감지하고 수신하는 센서입니다.
적외선 수신기는 들어오는 적외선 신호를 감지하여 리모컨에 눌린 버튼을 대표하는 코드(명령)로 변환합니다.
IR 수신기는 센서나 모듈일 수 있습니다. 다음 선택지를 사용할 수 있습니다:
IR 수신기 모듈만
IR 수신 센서만
IR 수신 센서 + 어댑터
image source: diyables.io
image source: diyables.io
IR 리시버 모듈 또는 센서에는 세 개의 핀이 있습니다:
VCC 핀: 이 핀을 아두이노의 3.3V 또는 5V 핀이나 외부 전원 소스에 연결하세요.
GND 핀: 이 핀을 아두이노의 GND 핀이나 외부 전원 소스에 연결하세요.
OUT(출력) 핀: 이 핀은 IR 수신기 모듈의 출력 핀입니다. 아두이노의 디지털 입력 핀에 연결됩니다.
사용자가 IR 리모컨의 버튼을 누를 때
IR 리모컨은 특정 프로토콜을 통해 버튼에 해당하는 명령어를 적외선 신호로 인코딩합니다.
IR 리모컨은 인코딩된 적외선 신호를 방출합니다.
IR 수신기는 인코딩된 적외선 신호를 수신합니다.
IR 수신기는 인코딩된 적외선 신호를 명령어로 디코딩합니다.
아두이노는 IR 수신기로부터 명령어를 읽습니다.
아두이노는 명령어를 눌린 키와 맵핑합니다.
복잡해 보이지만 걱정하지 마세요. DIYables_IRcontroller 라이브러리의 도움으로, 그것은 식은 죽 먹기입니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
실제 배선도
image source: diyables.io
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
실제 배선도
image source: diyables.io
아두이노에 연결하기 전에 적외선 수신 센서를 어댑터에 연결할 수도 있습니다.
image source: diyables.io
도서관을 포함합니다:
#include <DIYables_IRcontroller.h>
17키 또는 21키 IR 리모컨에 해당하는 DIYables_IRcontroller_17 또는 DIYables_IRcontroller_21 객체를 선언합니다.
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200);
DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200);
IR 컨트롤러를 초기화하세요.
루프에서 키가 눌렸는지 확인하세요. 만약 그렇다면, 키를 가져오세요.
Key17 key = irController.getKey();
Key21 key = irController.getKey();
키 입력을 감지하면 각 키에 따라 특정 작업을 수행할 수 있습니다.
[DIYables 17키 IR 리모컨]용 아두이노 코드
#include <DIYables_IRcontroller.h>
#define IR_RECEIVER_PIN 7
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200);
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 리모컨 컨트롤러를 위한 아두이노 코드
#include <DIYables_IRcontroller.h>
#define IR_RECEIVER_PIN 7
DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200);
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 버튼을 클릭하세요.
아래 이미지와 같이 라이브러리 종속성을 설치하라는 요청을 받게 될 것입니다:
의존성을 설치하려면 Install All 버튼을 클릭하세요.
위의 코드를 복사하고 Arduino IDE로 열기
코드를 Arduino에 업로드하려면 Arduino IDE에서 Upload 버튼을 클릭하세요.
리모콘의 키를 하나씩 누르세요.
시리얼 모니터에서 결과를 확인하세요.
아래는 21키 IR 컨트롤러의 키를 하나씩 눌렀을 때의 결과입니다:
CH-
CH
CH+
<<
>>
>||
–
+
EQ
100+
200+
0
1
2
3
4
5
6
7
8
9
이제 IR 리모콘을 통해 LED, 팬, 펌프, 구동기 등을 제어하기 위해 코드를 수정할 수 있습니다.
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.