Arduino IR 원격 제어 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 글에서는 IR 리모컨과 수신기로 구성된 맞춤형 Arduino 기반 IR (적외선) 기반 무선 원격 제어 스위치를 구성 할 예정이며, 필요에 따라 수정할 수 있습니다. 이 기사의 후반부에서는 고유하게 할당 된 주파수에만 응답하는 IR 리모컨의 업그레이드 된 완전 방지 버전에 대해 알아 봅니다.

초보자 수준 이상이면 쉽게 수행 할 수 있습니다. 여기에 설명 된 제안 된 회로는 원격 제어 장치 3 개와 수신기 측 릴레이 3 개만 있습니다. 필요에 따라 코드와 회로도를 수정할 수 있습니다.



두 개의 Arduino 보드가 필요합니다.이 보드는 원격 역할을하고 다른 보드는 수신기 역할을합니다. 이 프로젝트에는 Arduino pro mini를 권장합니다. 크기가 매우 작고 리모컨의 전체 크기가 떨릴 수 있기 때문입니다.

3.3V 기반 Arduino pro mini를 리모컨으로 사용할 수 있으므로 필요에 따라 버튼 셀 2 개 또는 AA 크기 배터리 2 개로 전원을 공급할 수 있습니다.



IR 송신기 회로에는 3 개의 푸시 버튼과 수신기로 명령을 보내기위한 IR LED가 있습니다. 각 버튼은 고유 한 16 진수 코드로 프로그래밍되어 있으며 동일한 16 진수 코드가 수신기 측에서도 프로그래밍됩니다.

버튼을 누르면 IR LED가 16 진수 코드를 수신기로 보내고 수신기는 어떤 버튼을 눌렀는지 인식하고 해당 릴레이를 ON / OFF합니다.

제안 된 리모트는 RC5 프로토콜을 사용하여 수신기와 통신하며 코드를 수정하여 모든 것을 변경할 수 있습니다.

아두 이노 초보자 인 경우 다이어그램을 따라 수정하지 않고 코드를 업로드하면됩니다.

회로 및 프로그램 :

Arduino 원격 송신기 :

완벽한 IR 원격 제어 회로

위의 회로는 Arduino IR 원격 송신기를 구축하는 방법을 보여줍니다.

3 개의 10K 저항은 풀다운 저항으로, 정전기로 인한 리모컨의 우발적 인 트리거링을 방지하고 220ohm 전류 제한 저항이 IR LED에 사용됩니다.

원격 송신기를위한 프로그램 :

//---------Program developed by R.Girish--------//
#include
IRsend irsend
const int button1 = 4
const int button2 = 5
const int button3 = 6
void setup() {
pinMode(button1, INPUT)
pinMode(button2, INPUT)
pinMode(button3, INPUT)
}
void loop()
{
if (digitalRead(button1) == HIGH)
{
delay(50)
irsend.sendRC5(0x80C, 32)
delay(200)
}
if (digitalRead(button2) == HIGH)
{
delay(50)
irsend.sendRC5(0x821, 32)
delay(200)
}
if (digitalRead(button3) == HIGH)
{
delay(50)
irsend.sendRC5(0x820, 32)
delay(200)
}
}
//---------Program developed by R.Girish--------//

Arduino 수신기 :

위와 같이 IR Arduino 수신기 회로는 TSOP1738 센서 적은 트랜지스터, 트랜지스터 용 전류 제한 저항기, 릴레이 코일에서 고전압 스파이크를 흡수하기위한 릴레이 및 다이오드.

회로도는 자명합니다.

Arduino 수신기 용 프로그램 :

//-----------------Program developed by R.Girish-----------//
#include
int input = 11
int op1 = 8
int op2 = 9
int op3 = 10
int intitial1
int intitial2
int intitial3
IRrecv irrecv(input)
decode_results dec
#define output1 0x80C // code received from button A
#define output2 0x821 // code received from button B
#define output3 0x820 // code received from button C
void setup()
{
irrecv.enableIRIn()
pinMode(op1,1)
pinMode(op2,1)
pinMode(op3,1)
}
void loop() {
if (irrecv.decode(&dec)) {
unsigned int value = dec.value
switch(value) {
case output1:
if(intitial1 == 1) {
digitalWrite(op1, LOW)
intitial1 = 0
} else {
digitalWrite(op1, HIGH)
intitial1 = 1
}
break
case output2:
if(intitial2 == 1) {
digitalWrite(op2, LOW)
intitial2 = 0
} else {
digitalWrite(op2, HIGH)
intitial2 = 1
}
break
case output3:
if(intitial3 == 1) {
digitalWrite(op3, LOW)
intitial3 = 0
} else {
digitalWrite(op3, HIGH)
intitial3 = 1
}
break
}
irrecv.resume()
}
}
//--------------Program developed by R.Girish-----------//

위의 설명에 따라 세 가지 컨트롤을 수행 할 수 있습니다. 더 많은 컨트롤과 릴레이를 추가하려면 코드와 회로도를 편집해야합니다.

프로그램에서 수신기와 원격에서 사용하지 않는 핀에 대한 출력 및 입력을 할당하고 수신기의 각 핀에 대한 트랜지스터 및 릴레이 수를 연결하고 마찬가지로 원격에서 스위치 수와 풀다운 저항을 연결합니다.

더 많은 수의 버튼을 할당하기 위해 임의의 16 진수 코드를 사용할 수 있습니다.

예 : 0xA235, 0xFFFF, 0xBA556 등. 또한 수신자 코드에도 동일한 16 진수 값을 추가합니다. 예 : #define output4 0xA235, #define outout5 0xFFFF 등.

고유 한 주파수로 IR 리모컨 만들기

위의 섹션에서 우리는 모든 IR 원격 송신기에서 작동하는 간단한 IR 원격 제어에 대해 배웠습니다.
다음 기사에서는 고유 한 주파수로 작동하고 일반 IR 핸드셋으로는 작동하지 않는 arduino 마이크로 컨트롤러를 사용하여 가전 제품을 완벽하게 제어하기 위해 위 개념의 업그레이드 버전을 만드는 방법을 배웁니다.

완벽한 IR 원격 제어

이 회로는 TV 리모컨의 사용하지 않는 버튼이나 오랫동안 정크 박스에있을 수있는 기타 사용하지 않는 리모컨을 사용하여 기기를 켜거나 끌 수 있습니다.

이 프로젝트의 모토는 장애가있는 사람들을 돕고 팬이나 조명과 같은 기본 가전 제품의 ON / OFF 전환에 독립적으로 액세스 할 수 있도록 돕는 것입니다.

두 번째 목표는 사용자가 기존 위치에서 이동하지 않고도 '상사처럼'장치를 제어 할 수 있도록하는 것입니다.

이 회로는 송신기와 수신기 간의 기존 IR 기반 통신을 사용합니다.

이 회로는 다른 IR 리모컨 및 기타 IR 소스에 대해 완벽하고 오류에 덜 민감합니다.

비 마이크로 컨트롤러 기반의 주요 문제 IR 원격 제어 회로 인터넷에서 발견되는, IR 기반 리모컨으로 켜고 끌 수 있으며 한 번에 하나의 장치 만 제어 할 수 있으며 오류에 더 취약합니다.

이 회로는 위에 명시된 문제를 극복하고 하나의 리모컨으로 여러 장치 제어 특정 가젯에 키를 할당합니다.

이 프로젝트를 진행하기 전에이 링크에서 arduino 용 라이브러리 파일을 다운로드하고 아래 지침을 따라야합니다. github.com/z3t0/Arduino-IRremote

명령:

1) 주어진 링크에서 '복제 또는 다운로드'버튼을 클릭하고 'ZIP 다운로드'를 누르십시오.

2) 파일 압축을 풀고“IRremote”폴더를 Arduino의 라이브러리 폴더로 이동합니다.

3) arduino 라이브러리에서“RobotIRremote”폴더를 삭제합니다. “RobotIRremote”는“IRremote”라이브러리와 충돌하여 Arduino에 코드를 업로드 할 수없는 유사한 정의를 가지고 있으므로 삭제 / 제거가 필수입니다.

위의 지침을 복제하면 Arduino IDE 소프트웨어는 대부분의 IR 기반 프로젝트에 사용할 수 있습니다.

원격 키 할당 :

TV 리모컨에서 각 키에는 고유 한 16 진수 코드가 있으며, 이는 조작을 위해 어떤 키를 눌렀는지 인식하는 데 사용됩니다. 최종 코드를 Arduino에 업로드하기 전에 키의 16 진수 코드를 찾아야합니다.

이를 위해 브레드 보드에 다음 회로를 구성하고 지침을 따르십시오.

1) Arduino IDE를 열고 예제 코드“IRrecv Demo”를 업로드합니다.

2) 직렬 모니터를 열고 사용하려는 리모컨의 키를 누릅니다.

키를 누르는 즉시 16 진수 코드가 표시됩니다. 이것이 특정 키에 대한 16 진수 코드입니다.

3) 다른 두 개의 키에 대해 동일하게 수행하십시오 (이 프로젝트에서는 3 개의 장치를 제어하기 위해 3 개의 키가 제공됩니다).

· 우리는 메인 프로그램에서이 16 진수 코드를 사용하고 arduino에 업로드 할 것입니다.

프로그램:
//-----------------Program developed by R.Girish-----------//
#include
int input = 11
int op1 = 8
int op2 = 9
int op3 = 10
int intitial1
int intitial2
int intitial3
IRrecv irrecv(input)
decode_results dec
#define output1 0x111 // place your code received from button A
#define output2 0x112 // place your code received from button B
#define output3 0x113 // place your code received from button C
void setup()
{
irrecv.enableIRIn()
pinMode(op1,1)
pinMode(op2,1)
pinMode(op3,1)
}
void loop() {
if (irrecv.decode(&dec)) {
unsigned int value = dec.value
switch(value) {
case output1:
if(intitial1 == 1) {
digitalWrite(op1, LOW)
intitial1 = 0
} else {
digitalWrite(op1, HIGH)
intitial1 = 1
}
break
case output2:
if(intitial2 == 1) {
digitalWrite(op2, LOW)
intitial2 = 0
} else {
digitalWrite(op2, HIGH)
intitial2 = 1
}
break
case output3:
if(intitial3 == 1) {
digitalWrite(op3, LOW)
intitial3 = 0
} else {
digitalWrite(op3, HIGH)
intitial3 = 1
}
break
}
irrecv.resume()
}
}
//--------------Program developed by R.Girish-----------//

노트:

프로그램에서 :

#define output1 0x111 // 버튼 A에서받은 코드 배치

#define output2 0x111 // 버튼 B에서받은 코드 배치

#define output3 0x111 // 버튼 C에서받은 코드 배치

· 리모컨의 3 개의 고유 코드를 111, 112, 113의이 위치에 배치하고 코드를 업로드합니다. 16 진수 코드는 0에서 9까지, A에서 F까지입니다 (예 : 20156, 26FE789, FFFFFF).

· '0x'(제로 x)로 코드를 입력합니다.

회로도 :

· 키를 누르면 릴레이가 켜지고 다시 누르면 릴레이가 꺼집니다.




이전 : 고 와트 저항기를 사용한 천연 모기 구충제 다음 : 깊은 토양 금속 탐지기 회로 – 접지 스캐너