- Radno objašnjenje:
- Dekodiranje signala daljinskog upravljača pomoću Arduina:
- Opis kruga:
- Šifra Opis:
Prije smo obrađivali mnoge vrste kućne automatizacije koristeći različite tehnologije poput DTMF automatizirane kuće, automatiziranu kućnu automatizaciju pomoću PC-a pomoću Arduino-a, Bluetooth kontroliranu kućnu automatizaciju. U ovom projektu koristimo bežičnu komunikaciju zasnovanu na IR-u za kontrolu kućanskih aparata. U ovom se projektu Arduino koristi za kontrolu cijelog procesa. Neke naredbe šaljemo upravljačkom sustavu pomoću daljinskog upravljača IR TV / DVD / MP3 za upravljanje kućanskim uređajima. Nakon primanja signala s IR daljinskog upravljača, Arduino šalje povezani signal relejima koji su odgovorni za UKLJUČIVANJE ili ISKLJUČIVANJE kućanskih aparata putem upravljačkog programa releja.
Radno objašnjenje:
Rad ovog projekta je lako razumljiv. Kada pritisnemo bilo koju tipku IR daljinskog upravljača, tada daljinski šalje kôd u obliku sklopa kodiranih impulsa koristeći modulacijsku frekvenciju od 38Khz. Te impulse prima senzor TSOP1738 i čita ih Arduino, a zatim Arduino dekodira primljeni niz impulsa u heksadecimalnu vrijednost i uspoređuje tu dekodiranu vrijednost s unaprijed definiranom heksadecimalnom vrijednošću pritisnutog gumba. Ako se dogodi bilo kakvo podudaranje, Arduino izvršava relativnu operaciju, a odgovarajući rezultat također se prikazuje na LCD zaslonu 16x2 pomoću odgovarajućih naredbi. Ovdje smo u ovom projektu koristili 3 žarulje različitih boja, za demonstraciju koja označava ventilator, svjetlo i TV.
Postoje mnoge vrste IR daljinskih upravljača dostupnih za različite uređaje, ali većina ih radi na frekvencijskom signalu od oko 38KHz. Ovdje u ovom projektu kontroliramo kućanske aparate pomoću daljinskog upravljača IR TV-a. Za otkrivanje IR daljinskog signala koristimo TSOP1738 IR prijemnik. Ovaj senzor TSOP1738 može osjetiti frekvencijski signal od 38 kHz. Rad IR daljinskog upravljača i TSOP1738 može se detaljno opisati u ovom članku: IR odašiljač i prijemnik

Komponente:
- Arduino UNO
- TSOP1738
- Daljinski upravljač za IR TV / DVD
- ULN2003
- Releji 5 volti
- Žarulja s držačem
- Spajanje žica
- Daska za kruh
- LCD 16x2
- Napajanje
- PVT
- IC 7805
Ovdje smo u ovom projektu koristili 7, 8 i 9 numeričku tipku IR daljinskog upravljača za upravljanje ventilatorom, svjetlom i TV-om, a tipka ON / OFF (tipka za uključivanje) služi za istovremeno uključivanje i isključivanje svih uređaja.
Ovdje smo koristili preklopnu metodu za UKLJUČIVANJE i ISKLJUČIVANJE pojedinačnog kućanskog uređaja. Prebaci metodu nije ništa drugo nego dobiti to bez obzira pritiska li se tipka čak niti jedanput ili neparno. To se utvrđuje dobivanjem podsjetnika nakon što ga podijelite s 2 (i% 2). Ako postoji podsjetnik, uređaj će biti UKLJUČEN, a ako je podsjetnik 0, tada će biti ISKLJUČEN. Pretpostavimo da je tipka 7 pritisnuta na daljinskom upravljaču, a zatim daljinski šalje signal Arduinu putem TSOP IR prijemnika. Zatim ga Arduino dekodira i pohrani dekodiranu vrijednost u varijablu rezultata. Sada varijabla rezultata ima hex vrijednost 0x1FE00FF, nakon što je podudara s unaprijed definiranom hex vrijednošću tipke 7 (vidi gornju sliku), Arduino UKLJUČA VENTILATOR. Kad opet pritisnemo istu tipku (tipka 7), tada IR šalje isti kôd. Arduino dobiva isti kôd i podudara se s istim kodom kao i prije, ali ovaj put je ventilator ISKLJUČEN zbog prebacivanja bita (i% 2).
Dekodiranje signala daljinskog upravljača pomoću Arduina:
Ovdje je popis DVD NEC tipa Daljinski dekodirani izlazni kodovi:

Ako ne znate dekodirani izlaz vašeg IR daljinskog upravljača, lako ga možete pronaći, samo slijedite ove korake:
- Preuzmite IR udaljenu knjižnicu s ovdje
- Otpakirajte ga i stavite u svoju Arduino mapu 'Knjižnice'. Zatim preimenujte izvađenu mapu u IRremote.
- Pokrenite donji program sa svog Arduina i otvorite prozor Serial Monitor u Arduino IDE-u. Sada pritisnite bilo koji IR daljinski gumb i pogledajte odgovarajući dekodirani hex izlaz u prozoru Serial Monitor.
* IRremote: IRrecvDemo - prikazuje primanje IR kodova s IRrecv * IR detektor / demodulator mora biti povezan na ulaz RECV_PIN. * Verzija 0.1, srpnja 2009. * Autorsko pravo 2009 Ken Shirriff * http://arcfn.com * / #include
Gornji program preuzet je iz mape 'examples' biblioteke IRremote, možete pogledati još primjera kako biste saznali više o korištenju IR daljinskog upravljača. Dakle, tako smo dekodirali IR daljinski izlaz.
Opis kruga:
Veze ovog sklopa vrlo su jednostavne, ovdje se zaslon s tekućim kristalima koristi za prikaz statusa kućanskih aparata koji je izravno povezan s arduinom u 4-bitnom načinu rada. Priključci za podatke LCD-a, naime RS, EN, D4, D5, D6, D7, spojeni su na arduino digitalni pin broj 6, 7, 8, 9, 10, 11. A izlazni pin TSOP1738 izravno je povezan na digitalni pin broj 14 (A) Arduina. I Vcc pin je povezan +5 volti i GND pin spojen na masnom priključku kruga. Za pogon releja koristi se i relejni pokretač, odnosno ULN2003. 5-voltni SPDT 3 releji koriste se za upravljanje SVJETLOM, VENTILATOROM i TV-om. A releji su spojeni na arduino pin broj 3, 4 i 5 preko pokretača releja ULN2003 za upravljanje LIGHT, FAN i TV.

Šifra Opis:
U programski dio ovog projekta Prije svega u programiranje uključujemo knjižnicu za IR daljinski upravljač koja je lako dostupna na Googleu. I definirajte pin i deklarirajte varijable.
#include
A zatim uključite zaglavlje za zaslon s tekućim kristalima, a zatim definiramo podatke i kontrolne igle za LCD i kućanske uređaje.
#include
Nakon njega moramo inicijalizirati LCD i dati smjer pina koji se koriste za ventilator, svjetlo i TV.
void setup () {Serial.begin (9600); lcd.početak (16,2); pinMode (Ventilator, IZLAZ); pinMode (svjetlo, IZLAZ); pinMode (TV, IZLAZ);
Kao što je već objašnjeno, donji dio koda koristi se za usporedbu primljene hex vrijednosti s već definiranim hex kodom tog gumba. Ako se podudara, tada se izvodi relativna operacija pomoću odgovarajućih funkcija danih u kodu.
void loop () {if (unrecv.decode (& results)) {Serial.println (results.value, HEX); kašnjenje (100); lcd.setCursor (0,0); lcd.print ("Fan Light TV"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Ventilator, x);
