- Darbinis paaiškinimas:
- IR nuotolinio valdymo signalų dekodavimas naudojant „Arduino“:
- Grandinės aprašymas:
- Kodo aprašymas:
Anksčiau mes apėmėme daugybę namų automatikos rūšių, naudodami skirtingas technologijas, tokias kaip DTMF pagrįsta namų automatika, kompiuterio valdoma namų automatika naudojant „Arduino“, „Bluetooth“ valdoma namų automatika. Šiame projekte mes naudojame IR pagrįstą belaidį ryšį valdydami buitinę techniką. Šiame projekte „Arduino“ naudojama viso proceso kontrolei. Mes siunčiame kai kurias komandas į valdymo sistemą, naudodami IR TV / DVD / MP3 nuotolinio valdymo pultą kintamosios srovės buitinei technikai valdyti. Gavęs signalą iš IR nuotolinio valdymo pulto, „Arduino“ siunčia susijusį signalą relėms, kurios atsakingos už buitinių prietaisų įjungimą arba išjungimą per relės tvarkyklę.
Darbinis paaiškinimas:
Šio projekto įgyvendinimas yra lengvai suprantamas. Kai paspaudžiame bet kurį IR nuotolinio valdymo pulto mygtuką, nuotolinis siunčia kodą koduotų impulsų pavidalu, naudodamas 38 kHz moduliacinį dažnį. Šiuos impulsus priima TSOP1738 jutiklis, juos nuskaito „Arduino“, o tada „Arduino“ iššifruoja gautą impulsų seką į šešiakampę vertę ir palygina tą dekoduotą vertę su iš anksto nustatyta paspausto mygtuko šešiakampe. Jei įvyksta bet kokia atitiktis, „Arduino“ atlieka santykinę operaciją, o atitinkami rezultatai taip pat rodomi 16x2 LCD ekrane, naudojant atitinkamas komandas. Šiame projekte mes panaudojome 3 skirtingų spalvų lemputes, kurios demonstruoja ventiliatorių, šviesą ir televizorių.
Skirtingiems įrenginiams yra daugybė IR nuotolinio valdymo pultų, tačiau dauguma jų veikia prie 38KHz dažnio signalo. Šiame projekte mes valdome buitinę techniką naudodami IR televizoriaus nuotolinio valdymo pultą. Norėdami nustatyti IR nuotolinį signalą, mes naudojame TSOP1738 IR imtuvą. Šis TSOP1738 jutiklis gali pajusti 38 kHz dažnio signalą. IR nuotolinio valdymo ir TSOP1738 veikimas gali būti išsamiai aprašytas šiame straipsnyje: IR siųstuvas ir imtuvas
Komponentai:
- „Arduino UNO“
- TSOP1738
- IR TV / DVD nuotolinio valdymo pultas
- ULN2003
- Relės 5 voltai
- Lemputė su laikikliu
- Jungiamieji laidai
- Bandomoji Lenta
- 16x2 LCD ekranas
- Maitinimo šaltinis
- PVT
- IC 7805
Šiame projekte mes naudojome 7, 8 ir 9 IR nuotolinio valdymo pulto mygtukus ventiliatoriaus, šviesos ir televizoriaus valdymui, o ON / OFF mygtukas (maitinimo mygtukas) naudojamas įjungti ir išjungti visus prietaisus vienu metu.
Čia mes naudojome vieno buitinio prietaiso įjungimo ir išjungimo perjungimo metodą. Perjungimo metodas yra ne kas kita, kaip sužinoti, ar mygtukas paspaudžiamas net kelis kartus, ar nelyginis kartų skaičius. Tai nustatoma gavus priminimą padalijus jį iš 2 (i% 2), jei yra koks nors priminimas, įrenginys bus įjungtas, o jei priminimas yra 0, jis bus išjungtas. Tarkime, kad nuotolinio valdymo pulte paspaudžiamas 7 klavišas, tada nuotolinis siunčia signalą „Arduino“ per TSOP IR imtuvą. Tada „Arduino“ jį dekoduoja ir įrašo iššifruotą vertę į rezultatų kintamąjį. Dabar rezultatų kintamasis turi šešioliktainę reikšmę 0x1FE00FF, suderinęs jį su iš anksto nustatyta 7 rakto šešiakampe verte (žr. Aukščiau esantį paveikslėlį), „Arduino“ įjungia ventiliatorių. Dabar, kai dar kartą paspausime tą patį klavišą (7 klavišas), IR siunčia tą patį kodą. „Arduino“ gauna tą patį kodą ir suderina su tuo pačiu kodu, kaip ir anksčiau, tačiau šį kartą ventiliatorius išjungtas dėl perjungimo bitų (i% 2).
IR nuotolinio valdymo signalų dekodavimas naudojant „Arduino“:
Čia yra DVD NEC tipo nuotolinio iššifruoto išvesties kodų sąrašas:
Jei nežinote savo IR nuotolinio įrenginio iššifruoto išvesties, jį galima lengvai rasti, tiesiog atlikite šiuos veiksmus:
- Atsisiųskite IR nuotolinę biblioteką iš čia
- Išpakuokite ir įdėkite į „Arduino“ bibliotekų aplanką. Tada pervadinkite išgautą aplanką į „IRremote“.
- Paleiskite žemiau esančią programą iš „Arduino“ ir atidarykite „Serial Monitor“ langą „Arduino IDE“. Dabar paspauskite bet kurį IR nuotolinio valdymo pulto mygtuką ir „Serial Monitor“ lange pamatykite atitinkamą iššifruotą šešiakampę išvestį.
* IRremote: IRrecvDemo - rodo, kad gaunami IR kodai su IRrecv. * Prie įvesties RECV_PIN turi būti prijungtas IR detektorius / demoduliatorius. * Versija 0.1, 2009 m. Liepos mėn. * Autorių teisės, 2009 m. Ken Shirriff * http://arcfn.com * / #include
Pirmiau nurodyta programa yra paimta iš „IRremote“ bibliotekos aplanko „pavyzdžiai“. Galite sužinoti daugiau pavyzdžių, kad sužinotumėte daugiau apie IR nuotolinio valdymo pulto naudojimą. Taigi taip mes iššifravome IR nuotolinį išėjimą.
Grandinės aprašymas:
Šios grandinės prijungimas yra labai paprastas, nes skystųjų kristalų ekranas naudojamas namų technikos būsenai rodyti, kuris yra tiesiogiai prijungtas prie „Arduino“ 4 bitų režimu. LCD duomenų kaiščiai, būtent RS, EN, D4, D5, D6, D7, yra prijungti prie „Arduino“ skaitmeninių kaiščių numerių 6, 7, 8, 9, 10, 11. O TSOP1738 išvesties kaištis yra tiesiogiai prijungtas prie skaitmeninio kaiščio numerio 14 (A) iš Arduino. Ir Vcc kaištis yra prijungtas +5 voltų ir GND kaištis, prijungtas grandinės įžeminimo gnybte. Relių tvarkyklė, būtent ULN2003, taip pat naudojama važiuoti relėmis. 5 voltų SPDT 3 relės naudojamos LIGHT, FAN ir TV valdymui. Relės yra prijungtos prie „Arduino“ kontaktų 3, 4 ir 5 per relės tvarkyklę ULN2003, skirtos valdyti LIGHT, FAN ir TV.
Kodo aprašymas:
Programuodami šio projekto dalį Pirmiausia, programuodami, mes įtraukiame IR nuotolinio valdymo biblioteką, kurią lengvai galite rasti „Google“. Ir apibrėžkite PIN ir deklaruokite kintamuosius.
# įtraukti
Tada pridėkite skystųjų kristalų ekrano antraštę, tada mes nustatysime LCD ir buitinės technikos duomenis ir valdymo kaiščius.
# įtraukti
Po to turime inicijuoti LCD ekraną ir nurodyti kaiščio, naudojamo ventiliatoriui, šviesai ir televizoriui, kryptį.
negaliojanti sąranka () {Serial.begin (9600); lcd.prade (16,2); pinMode (ventiliatorius, OUTPUT); pinMode (šviesa, IŠĖJIMAS); pinMode (TV, OUTPUT);
Kaip jau paaiškinta, žemiau esanti kodo dalis naudojama norint palyginti gautą šešioliktainę reikšmę su jau apibrėžtu to mygtuko šešioliktainiu kodu. Jei jis sutapo, santykinė operacija atliekama naudojant atitinkamas funkcijas, kurios nurodytos kode.
void loop () {if (irrecv.decode (& results)) {Serial.println (rezultatai.value, HEX); vėlavimas (100); lcd.setCursor (0,0); „lcd.print“ („Fan Light TV“); if (rezultatai.vertė == 0x1FE00FF) {i ++; int x = i% 2; „digitalWrite“ (ventiliatorius, x);