- Delovna razlaga:
- Dekodiranje signalov IR daljinskega upravljalnika z uporabo Arduino:
- Opis vezja:
- Koda Opis:
V preteklosti smo obravnavali številne vrste avtomatizacije stanovanj z uporabo različnih tehnologij, kot so DTMF-avtomatizacija na domu, PC-nadzorovana avtomatizacija doma z uporabo Arduino-a, Bluetooth-nadzorovana avtomatizacija doma. V tem projektu uporabljamo brezžično komunikacijo na osnovi IR za nadzor gospodinjskih aparatov. V tem projektu se Arduino uporablja za nadzor celotnega procesa. Nekaj ukazov pošljemo nadzornemu sistemu z uporabo IR TV / DVD / MP3 daljinskega upravljalnika za nadzor gospodinjskih aparatov. Po prejemu signala z IR daljinskega upravljalnika Arduino pošlje ustrezen signal relejem, ki so odgovorni za vklop ali izklop gospodinjskih aparatov prek relejskega gonilnika.
Delovna razlaga:
Delovanje tega projekta je lahko razumljivo. Ko pritisnemo kateri koli gumb IR daljinskega upravljalnika, daljinski upravljavec pošlje kodo v obliki sklopa kodiranih impulzov z modulacijsko frekvenco 38Khz. Te impulze sprejme senzor TSOP1738 in prebere Arduino, nato pa Arduino dekodira prejeti impulz v šestnajstiško vrednost in primerja to dekodirano vrednost z vnaprej določeno šestnajstiško vrednostjo pritisnjenega gumba. Če pride do kakršnega koli ujemanja, Arduino izvede relativno operacijo, ustrezni rezultat pa se z ustreznimi ukazi prikaže tudi na LCD 16x2. V tem projektu smo za prikaz uporabili 3 žarnice različnih barv, ki označujejo ventilator, svetlobo in televizijo.
Obstaja veliko vrst IR daljinskega upravljalnika, ki je na voljo za različne naprave, vendar večina deluje na frekvenčnem signalu približno 38KHz. V tem projektu nadzorujemo gospodinjske aparate z daljinskim upravljalnikom IR TV. Za zaznavanje IR daljinskega signala uporabljamo IR sprejemnik TSOP1738. Ta senzor TSOP1738 lahko zazna frekvenčni signal 38 kHz. Delovanje IR daljinskega upravljalnika in TSOP1738 je podrobno opisano v tem članku: IR oddajnik in sprejemnik
Sestavni deli:
- Arduino UNO
- TSOP1738
- IR TV / DVD daljinec
- ULN2003
- Releji 5 voltov
- Žarnica z držalom
- Priključne žice
- Deska za kruh
- 16x2 LCD
- Napajanje
- PVT
- IC 7805
V tem projektu smo uporabili 7, 8 in 9 številski gumb IR daljinskega upravljalnika za nadzor ventilatorja, svetlobe in televizorja, gumb za vklop / izklop (gumb za vklop) pa za istočasno vklop in izklop vseh naprav.
Tu smo uporabili preklopno metodo za VKLOP in IZKLOP posamezne gospodinjske naprave. Preklopi način ni nič drugega, kot da to ugotovimo, ne glede na to, ali gumb pritisnemo niti krat niti nenamerno. To ugotovimo tako, da opomnik dobimo po tem, ko ga delimo z 2 (i% 2). Če obstaja opomnik, bo naprava vklopljena, če je opomnik 0, pa izklopljen. Recimo, da je na daljinskem upravljalniku pritisnjena tipka 7, nato daljinski upravljalnik Arduino prek IR sprejemnika TSOP pošlje signal. Nato ga Arduino dekodira in shrani dekodirano vrednost v spremenljivko rezultatov. Zdaj ima spremenljivka rezultatov šestnajstiško vrednost 0x1FE00FF, po ujemanju z vnaprej določeno šestnajstiško vrednostjo tipke 7 (glej zgornjo sliko), Arduino vklopi ventilator. Zdaj, ko znova pritisnemo isto tipko (tipka 7), potem IR pošlje isto kodo. Arduino dobi isto kodo in se ujema z isto kodo kot prej, toda Fan je tokrat IZKLOPLJEN zaradi preklopa bitov (i% 2).
Dekodiranje signalov IR daljinskega upravljalnika z uporabo Arduino:
Tu je seznam izhodnih kod z daljinskim odkodiranjem vrste DVD NEC:
Če ne poznate dekodiranega izhoda za vaš daljinski upravljalnik IR, ga je enostavno najti, sledite naslednjim korakom:
- Oddaljeno knjižnico IR prenesite od tukaj
- Razpakirajte in postavite v mapo Arduino 'Libraries'. Nato izvlečeno mapo preimenujte v IRremote.
- Zaženite spodnji program iz vašega Arduina in odprite okno Serial Monitor v Arduino IDE. Zdaj pritisnite kateri koli gumb IR Remote in si oglejte ustrezen dekodiran šestnajstiški izhod v oknu Serial Monitor.
* IRremote: IRrecvDemo - prikazuje sprejemanje IR kod z IRrecv * Na vhod RECV_PIN mora biti priključen IR detektor / demodulator. * Različica 0.1, julij 2009 * Avtorske pravice 2009 Ken Shirriff * http://arcfn.com * / #include
Zgornji program je vzet iz mape "Primeri" knjižnice IRremote. Oglejte si več primerov, če želite izvedeti več o uporabi IR daljinskega upravljalnika. Tako smo torej dekodirali IR daljinski izhod.
Opis vezja:
Povezave tega vezja so zelo preproste, tu se zaslon s tekočimi kristali uporablja za prikaz stanja gospodinjskih aparatov, ki so v 4-bitnem načinu neposredno povezani z arduinom. Podatkovni zatiči LCD, in sicer RS, EN, D4, D5, D6, D7, so povezani z arduino digitalnim zatičem številka 6, 7, 8, 9, 10, 11. In izhodni zatič TSOP1738 je neposredno povezan z digitalnim zatičem številka 14 (A) Arduina. In Vcc pin je povezan +5 voltov in GND pin priključen na ozemljitveni terminal vezja. Za pogon relejev se uporablja tudi relejski voznik, in sicer ULN2003. 5 voltni releji SPDT 3 se uporabljajo za nadzor LUČI, VENTILATORJA in TV-ja. Releji so na arduino pin št. 3, 4 in 5 priključeni prek relejskega gonilnika ULN2003 za nadzor LIGHT, FAN in TV.
Koda Opis:
V programski del tega projekta Najprej v programiranje vključujemo knjižnico za IR daljinec, ki je lahko dostopna pri Googlu. In definirajte spremenljivke pin in deklarirajte.
#include
Nato vključite glavo za zaslon s tekočimi kristali, nato določimo podatke in nadzorne nožice za LCD in gospodinjske aparate.
#include
Po njem moramo inicializirati LCD in dati smer zatiča, ki se uporablja za ventilator, svetlobo in televizor.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (ventilator, IZHOD); pinMode (Light, OUTPUT); pinMode (TV, IZHOD);
Kot smo že pojasnili, se spodnji del kode uporablja za primerjavo prejete šestnajstiške vrednosti z že določeno šestnajstiško kodo tega gumba. Če se ujema, se izvede relativna operacija z uporabo ustreznih funkcij, ki so podane v kodi.
void loop () {if (unrecv.decode (& results)) {Serial.println (results.value, HEX); zamuda (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (ventilator, x);