Circuitul de control la distanță IR Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un comutator de telecomandă fără fir bazat pe Arduino, bazat pe IR (infraroșu), care constă din telecomandă IR și un receptor, pe care îl puteți modifica în funcție de nevoile dvs. În partea de mai târziu a articolului aflăm despre o versiune actualizată infailibilă a unei telecomenzi IR care va răspunde doar la o frecvență atribuită în mod unic.

Dacă sunteți peste nivelul pentru începători, îl puteți realiza cu ușurință. Circuitul propus ilustrat aici are doar trei comenzi pe telecomandă și 3 relee pe capătul receptorului. Puteți modifica codul și schema de circuit pentru a vă satisface nevoile.



Veți avea nevoie de două plăci Arduino, care funcționează la distanță și o altă funcție de receptor. Aș recomanda Arduino pro mini pentru acest proiect, deoarece dimensiunile acestora sunt destul de mici și dimensiunea totală a telecomenzii ar putea fi evitată.

Puteți utiliza Arduino pro mini pe bază de 3,3 V pentru telecomandă, astfel încât să puteți fi alimentat cu două butoane sau două baterii de dimensiune AA, în funcție de nevoile dvs.



Circuitul transmițătorului IR are 3 butoane de pornire și un LED IR pentru trimiterea comenzilor către receptor. Fiecare buton are programat un cod hexazecimal unic, același cod hexazecimal este programat și pe partea receptorului.

Când este apăsat un buton, LED-ul IR trimite codul hexazecimal către receptor, receptorul va recunoaște care dintre butoane este apăsat și pornește / oprește releul corespunzător.

Telecomanda propusă folosește protocolul RC5 pentru comunicarea cu receptorul. Puteți schimba totul modificând codul.

Dacă sunteți doar începător în Arduino, îl puteți îndeplini doar urmați diagrama și încărcați codul fără a modifica.

Circuitul și programul:

Transmițător de la distanță Arduino:

Circuit de control de la distanță IR fără probleme

Circuitul de mai sus ilustrează modul de construire a transmițătorului la distanță IR Arduino.

Cele trei rezistențe de 10K sunt rezistențe de tragere, care previn declanșarea accidentală a telecomenzii din cauza încărcării statice și un rezistor de limitare a curentului de 220ohm este utilizat pentru LED-ul IR.

Program pentru emițător de la distanță:

//---------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--------//

Receptor Arduino:

Circuitul receptorului Arduino IR, așa cum se arată mai sus, este format din Senzor TSOP1738 puțini tranzistori, rezistențe de limitare a curentului pentru tranzistoare, relee și diode pentru absorbția vârfurilor de înaltă tensiune din bobinele releului.

Diagrama circuitului se explică de la sine.

Program pentru receptor 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-----------//

Urmând explicațiile de mai sus puteți efectua trei controale, dacă doriți să adăugați mai multe controale și relee, trebuie să editați codul și schema de circuit.

Puteți atribui ieșire și intrare pentru pinii neutilizați din receptor și telecomandă în program și puteți conecta numărul tranzistorului și releul pentru pinii respectivi din receptor și conectați în mod similar numărul de comutatoare și rezistați în jos la telecomandă.

Puteți utiliza cod hexazecimal aleatoriu pentru alocarea unui număr mai mare de butoane.

De exemplu: 0xA235, 0xFFFF, 0xBA556 și așa mai departe. Și, de asemenea, adăugați aceeași valoare hexazecimală și în codul receptorului. De exemplu: #define output4 0xA235, #define outout5 0xFFFF și așa mai departe.

Realizarea unei telecomenzi IR cu frecvență unică

În secțiunile de mai sus am aflat despre o telecomandă IR simplă care va funcționa cu orice transmițător IR la distanță.
În articolul următor vom învăța cum să realizăm o versiune actualizată a conceptului de mai sus pentru un control infailibil al aparatelor electrocasnice folosind microcontrolerul arduino, care va funcționa cu o frecvență unică și nu va funcționa niciodată cu un receptor IR comun.

Telecomandă IR fără probleme

Acest circuit vă poate activa / dezactiva gadgeturile folosind butoanele neutilizate ale telecomenzii TV sau orice altă telecomandă neutilizată care ar putea sta în cutia de gunoi de-a lungul timpului.

Motto-ul acestui proiect este de a ajuta persoanele cu probleme fizice și de a le ajuta să acceseze comutarea PORNIT / OPRIT a aparatelor electrocasnice de bază, cum ar fi ventilatoarele sau luminile, în mod independent.

Al doilea obiectiv este de a permite utilizatorului să controleze gadgeturile „Ca un șef” fără a fi nevoie să se deplaseze din poziția sa existentă.

Circuitul utilizează comunicații tradiționale bazate pe IR între emițător și receptor.

Acest circuit este cent la sută infailibil pentru alte telecomenzi IR și alte surse IR și mai puțin susceptibil la erori.

Problema majoră cu non-microcontroler bazat Circuit telecomandă IR , care se găsește în jurul internetului, este că ar putea porni / opri cu orice telecomandă bazată pe IR și poate controla un singur dispozitiv la un moment dat și, de asemenea, mai susceptibil la erori.

Acest circuit depășește problemele specificate mai sus și putem controlați mai multe gadgeturi pe o singură telecomandă și atribuiți chei pentru anumite gadgeturi.

Înainte de a continua acest proiect, trebuie să descărcați fișierele bibliotecii pentru arduino din acest link și să urmați instrucțiunile date mai jos: github.com/z3t0/Arduino-IRremote

Instrucțiuni:

1) Faceți clic pe butonul „clonați sau descărcați” din link-ul dat și apăsați pe „Descărcați ZIP”.

2) Extrageți fișierul și mutați folderul „IRremote” în dosarul bibliotecii dvs. Arduino.

3) Ștergeți folderul „RobotIRremote” din biblioteca dvs. arduino. „RobotIRremote” are o definiție similară a bibliotecii „IRremote”, care se confruntă și nu poate încărca codul în Arduino, deci ștergerea / eliminarea este obligatorie.

Prin duplicarea instrucțiunilor de mai sus, software-ul dvs. Arduino IDE este gata pentru orice / majoritatea proiectelor bazate pe IR.

Atribuiți chei pentru telecomandă:

În telecomanda noastră TV fiecare tastă are un cod hexazecimal unic, care este utilizat pentru a recunoaște ce tastă este apăsată pentru o operație. Înainte de a încărca codul final în Arduino, trebuie să găsiți care sunt codurile hexazecimale pentru cheile dvs.

Pentru a face acest lucru, construiți următorul circuit în panou și urmați instrucțiunile.

1) Deschideți Arduino IDE și încărcați codul de exemplu „IRrecv Demo”

2) Deschideți monitorul serial și apăsați tasta de pe telecomandă pe care doriți să o utilizați.

Codul hexazecimal va apărea imediat ce apăsați tasta. Acesta este codul hexazecimal pentru acea cheie.

3) Faceți același lucru pentru alte două taste (3 taste sunt date în acest proiect pentru controlul a 3 dispozitive)

· Vom folosi aceste coduri hexazecimale în programul principal și le vom încărca pe arduino.

Program:
//-----------------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-----------//

NOTĂ:

În program:

#define output1 0x111 // plasează codul primit de la butonul A

#define output2 0x111 // plasează codul primit de la butonul B

#define output3 0x111 // plasează codul primit de la butonul C

· Plasați-vă cele 3 coduri unice de pe telecomandă în acest loc de 111, 112 și 113 și încărcați codul. Codurile hexazecimale vor fi de la 0 la 9 și de la A la F, de exemplu: 20156, 26FE789, FFFFFF.

· Plasați codul cu „0x” (zero x).

Diagrama circuitului:

· Apăsarea tastei declanșează releul PORNIT și apăsând din nou acesta va opri releul.




Precedent: Repulsiv natural împotriva țânțarilor folosind rezistor de mare putere Următorul: Circuitul detectorului de metale din sol profund - Scanner la sol