„Arduino“ IR nuotolinio valdymo grandinė

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sukursime pritaikomą „Arduino“ pagrindu veikiantį IR (infraraudonųjų spindulių) pagrindu veikiantį belaidžio nuotolinio valdymo jungiklį, kurį sudaro IR nuotolinio valdymo pultas ir imtuvas, kurį galite modifikuoti pagal savo poreikius. Vėlesnėje straipsnio dalyje mes sužinosime apie patobulintą beprotišką IR nuotolinio valdymo pulto versiją, kuri reaguos tik į unikaliai priskirtą dažnį.

Jei esate aukščiau pradedančiųjų lygio, galite tai lengvai pasiekti. Siūloma grandinė, iliustruota čia, turi tik tris nuotolinio valdymo pultus ir 3 reles imtuvo gale. Galite pakeisti kodą ir grandinės schemą, kad patenkintumėte savo poreikius.



Jums reikės dviejų „Arduino“ plokščių, kurios veikia kaip nuotolinės, o kitos - kaip imtuvas. Šiam projektui rekomenduočiau „Arduino pro mini“, nes jų dydžiai yra gana maži ir bendras nuotolinio valdymo pulto dydis gali būti apgautas.

Nuotoliniam naudojimui galite naudoti 3,3 V „Arduino pro mini“, kad galėtumėte būti maitinami dviem mygtukais arba dviem AA dydžio baterijomis pagal savo poreikius.



IR siųstuvo grandinėje yra 3 įjungimo mygtukai ir IR šviesos diodas komandoms siųsti į imtuvą. Kiekvienas mygtukas užprogramuotas su unikaliu šešioliktainiu kodu, tas pats šešioliktainis kodas užprogramuotas ir imtuvo pusėje.

Kai nuspaudžiamas mygtukas, IR šviesos diodas siunčia šešioliktainį kodą imtuvui, imtuvas atpažins, kuris mygtukas yra paspaustas, ir jis įjungs / išjungs atitinkamą relę.

Siūlomas nuotolinis ryšys su imtuvu naudoja RC5 protokolą. Galite pakeisti viską pakeisdami kodą.

Jei esate tik pradedantis „Arduino“, vis tiek galite tai atlikti, tiesiog sekite schemą ir įkelkite kodą nekeisdami.

Grandinė ir programa:

„Arduino“ nuotolinis siųstuvas:

Neprotingas IR nuotolinio valdymo grandinė

Pirmiau nurodyta grandinė parodo, kaip sukurti „Arduino IR“ nuotolinį siųstuvą.

Trys 10K rezistoriai yra nuleidžiami rezistoriai, kurie neleidžia atsitiktinai įjungti nuotolinio valdymo pulto dėl statinio krūvio, o IR šviesos diodams naudojamas 220ohm srovės ribotuvas.

Nuotolinio siųstuvo programa:

//---------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“ imtuvas:

IR Arduino imtuvo grandinė, kaip parodyta aukščiau, susideda iš TSOP1738 jutiklis nedaug tranzistorių, srovės ribotuvų tranzistorių rezistoriai, relės ir diodai, skirti absorbuoti aukštos įtampos smaigalį iš relių ritinių.

Grandinės schema yra savaime suprantama.

„Arduino“ imtuvo programa:

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

Laikydamiesi pirmiau pateiktų paaiškinimų, galite atlikti tris valdiklius, jei norite pridėti daugiau valdiklių ir relės, turite redaguoti kodą ir grandinės schemą.

Galite priskirti išvestį ir įvestį nenaudojamiems imtuvų ir programos nuotolinio valdymo pultams ir prijungti tranzistorių ir relės numerius atitinkamiems imtuvo kaiščiams ir panašiai prijungti jungiklių skaičių ir nuotolinio valdymo pultą.

Norėdami priskirti daugiau mygtukų skaičiaus, galite naudoti atsitiktinį šešioliktainį kodą.

Pvz .: 0xA235, 0xFFFF, 0xBA556 ir pan. Taip pat pridėkite tą pačią šešioliktainę reikšmę imtuvo kode. Pvz .: #define output4 0xA235, #define outout5 0xFFFF ir pan.

IR nuotolinio valdymo pulto su unikaliu dažniu kūrimas

Ankstesniuose skyriuose mes sužinojome apie paprastą IR nuotolinio valdymo pultą, kuris veiks su bet kuriuo IR nuotoliniu siųstuvu.
Šiame straipsnyje mes sužinosime, kaip padaryti patobulintą pirmiau minėtos koncepcijos versiją, kad būtų galima valdyti beprotiškus buitinius prietaisus naudojant mikrovaldiklį „Arduino“, kuris veiks unikaliu dažniu ir niekada neveiks su bendru IR rageliu.

Neprotingas IR nuotolinis valdymas

Ši grandinė gali įjungti / išjungti jūsų programėles naudodama nenaudojamus televizoriaus nuotolinio valdymo pulto mygtukus arba bet kurį kitą nenaudojamą nuotolinio valdymo pultą, kuris amžiams gali gulėti jūsų šiukšlių dėžėje.

Šio projekto šūkis yra padėti žmonėms su fizine negalia ir padėti jiems savarankiškai naudotis pagrindinių buitinių prietaisų, tokių kaip ventiliatoriai ar žibintai, ON / OFF jungikliu.

Antrasis tikslas yra suteikti vartotojui galimybę valdyti programėles „Kaip bosas“, nereikalaujant pereiti iš esamos padėties.

Grandinėje naudojamas tradicinis IR pagrįstas ryšys tarp siųstuvo ir imtuvo.

Ši grandinė yra procentais neapsaugota nuo kitų IR nuotolinio valdymo pultų ir kitų IR šaltinių ir yra mažiau jautri klaidoms.

Pagrindinė su mikrovaldikliu nesusijusi problema IR nuotolinio valdymo grandinė , kuris randamas visame internete, yra tai, kad jis gali įjungti / išjungti bet kurį IR valdomą nuotolinio valdymo pultą ir vienu metu valdyti tik vieną įrenginį, taip pat labiau jautriai reaguoti į klaidas.

Ši grandinė įveikia aukščiau nurodytas problemas ir mes galime vienu nuotolinio valdymo pultu valdykite keletą įtaisų ir priskirti raktus konkrečioms programėlėms.

Prieš tęsdami šį projektą, turite atsisiųsti „Arduino“ bibliotekos failus iš šios nuorodos ir vadovaukitės toliau pateiktomis instrukcijomis: github.com/z3t0/Arduino-IRremote

Instrukcijos:

1) Spustelėkite mygtuką „klonuoti arba atsisiųsti“ suformuokite pateiktą nuorodą ir paspauskite „Atsisiųsti ZIP“.

2) Ištraukite failą ir perkelkite aplanką „IRremote“ į savo „Arduino“ bibliotekos aplanką.

3) Ištrinkite aplanką „RobotIRremote“ iš savo „arduino“ bibliotekos. „RobotIRremote“ turi panašią „IRremote“ bibliotekos apibrėžtį, kuri prieštarauja ir negali įkelti kodo į „Arduino“, todėl ištrinti / pašalinti būtina.

Kopijuodami aukščiau pateiktą instrukciją, „Arduino IDE“ programinė įranga yra paruošta bet kuriam / daugeliui IR pagrįstų projektų.

Priskirkite nuotolinio valdymo raktus:

Mūsų televizoriaus nuotolinio valdymo pulte kiekvienas raktas turi unikalų šešioliktainį kodą, kuris naudojamas atpažinti, kuris klavišas yra paspaustas operacijai atlikti. Prieš įkeldami galutinį kodą į „Arduino“, turite sužinoti, kokie yra jūsų raktų šešioliktainiai kodai.

Norėdami tai padaryti, duonos lentoje sukonstruokite šią grandinę ir vykdykite instrukcijas.

1) Atidarykite „Arduino IDE“ ir įkelkite pavyzdinį kodą „IRrecv Demo“

2) Atidarykite nuoseklųjį monitorių ir paspauskite nuotolinio valdymo pulto mygtuką, kurį norite naudoti.

Kai paspausite klavišą, pamatysite iššokantį šešioliktainį kodą. Tai yra konkretaus rakto šešioliktainis kodas.

3) Atlikite tą patį su kitais dviem klavišais (šiame projekte yra 3 raktai, skirti valdyti 3 įrenginius)

· Šiuos šešioliktainius kodus naudosime pagrindinėje programoje ir įkelsime į „arduino“.

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

PASTABA:

Programoje:

#define output1 0x111 // įdėkite kodą, gautą iš mygtuko A

#define output2 0x111 // įdėkite kodą, gautą iš mygtuko B

#define output3 0x111 // įdėkite kodą, gautą iš mygtuko C

· Įdėkite 3 unikalius kodus iš nuotolinio valdymo pulto į 111, 112 ir 113 vietas ir įkelkite kodą. Šešioliktainiai kodai bus nuo 0 iki 9 ir nuo A iki F, pavyzdžiui: 20156, 26FE789, FFFFFF.

· Įdėkite kodą „0x“ (nulis x).

Grandinės schema:

· Paspaudus klavišą, relė įjungiama ir vėl paspaudus, relė bus išjungta.




Pora: Natūralus uodų repelentas, naudojant didelio galingumo varžą Kitas: Gilaus dirvožemio metalo detektoriaus grandinė - žemės skaitytuvas