- Explicație de lucru:
- Decodarea semnalelor de telecomandă IR folosind Arduino:
- Descrierea circuitului:
- Descrierea codului:
Anterior am acoperit multe tipuri de automatizări casnice folosind diferite tehnologii, cum ar fi automatizarea caselor bazate pe DTMF, automatizarea caselor controlate de PC folosind Arduino, automatizarea caselor controlate Bluetooth. În acest proiect, folosim comunicații fără fir bazate pe IR pentru controlul aparatelor electrocasnice. În acest proiect, Arduino este utilizat pentru controlul întregului proces. Trimitem câteva comenzi către sistemul de control utilizând telecomanda IR TV / DVD / MP3 pentru controlul aparatelor electrocasnice de curent alternativ. După primirea semnalului de la telecomandă IR, Arduino trimite semnalul aferent către relee care sunt responsabile pentru pornirea sau oprirea aparatelor de uz casnic printr-un driver de releu.
Explicație de lucru:
Lucrul acestui proiect este ușor de înțeles. Când apăsăm orice buton al telecomenzii IR, atunci telecomanda trimite un cod sub formă de tren de impulsuri codificate folosind frecvența de modulare de 38Khz. Aceste impulsuri sunt recepționate de senzorul TSOP1738 și citite de Arduino, iar apoi Arduino decodează trenul de impulsuri într-o valoare hexagonală și compară valoarea decodificată cu valoarea hexagonală predefinită a butonului apăsat. Dacă apare o potrivire, atunci Arduino efectuează o operație relativă, iar rezultatul corespunzător este afișat și pe ecranul LCD 16x2 utilizând comenzile corespunzătoare. Aici, în acest proiect, am folosit 3 becuri de diferite culori, pentru demonstrație care indică Fan, Light și TV.
Există multe tipuri de telecomenzi IR disponibile pentru diferite dispozitive, dar cele mai multe dintre ele sunt lucrate la un semnal de frecvență de 38KHz. Aici, în acest proiect, controlăm aparatele electrocasnice folosind telecomanda TV IR. Pentru detectarea semnalului la distanță IR, utilizăm receptorul IR TSOP1738. Acest senzor TSOP1738 poate detecta semnalul de frecvență 38Khz. Funcționarea telecomenzii IR și a TSOP1738 poate fi prezentată în detaliu în acest articol: Transmițător și receptor IR
Componente:
- Arduino UNO
- TSOP1738
- Telecomandă TV / DVD IR
- ULN2003
- Relee de 5 volți
- Bec cu suport
- Conectarea firelor
- Placă de pâine
- 16x2 LCD
- Alimentare electrică
- PVT
- IC 7805
Aici, în acest proiect, am folosit 7, 8 și 9 butoane numerice ale telecomenzii IR, pentru controlul ventilatorului, luminii și respectiv TV și butonul ON / OFF (butonul de alimentare) este utilizat pentru pornirea și oprirea simultană a tuturor aparatelor.
Aici am folosit metoda de comutare pentru PORNIT și OPRIT singurul electrocasnic. Comutați metoda nu este altceva decât să obțineți acest lucru, indiferent dacă butonul este apăsat chiar de ori sau cel ciudat de ori. Acest lucru se găsește prin obținerea memento-ului după împărțirea acestuia la 2 (i% 2), dacă există un memento, atunci dispozitivul va fi pornit, iar dacă mementoul este 0, acesta va fi oprit. Să presupunem că tasta 7 este apăsată pe telecomandă, apoi telecomanda trimite un semnal către Arduino prin receptorul IR TSOP. Apoi Arduino îl decodează și stochează valoarea decodificată în variabila de rezultate. Acum variabila de rezultate are o valoare hexagonală 0x1FE00FF, după ce o potriveste cu valoarea hexagonală predefinită a tastei 7 (vezi imaginea de mai sus), Arduino pornește ventilatorul. Acum, când apăsăm din nou aceeași tastă (tasta 7), atunci IR trimite același cod. Arduino primește același cod și se potrivește cu același cod ca înainte, dar de data aceasta Fanul sa oprit din cauza comutării bitului (i% 2).
Decodarea semnalelor de telecomandă IR folosind Arduino:
Iată o listă a codurilor de ieșire decodate la distanță de tip DVD NEC:
Dacă nu cunoașteți ieșirea decodificată pentru telecomanda IR, aceasta poate fi găsită cu ușurință, urmați acești pași:
- Descărcați biblioteca de la distanță IR de aici
- Dezarhivați-l și plasați-l în folderul Arduino „Biblioteci”. Apoi redenumiți folderul extras în IRremote.
- Rulați programul de mai jos de pe Arduino și deschideți fereastra Serial Monitor în Arduino IDE. Acum apăsați orice buton IR Remote și vedeți ieșirea hexagonală decodificată corespunzătoare în fereastra Serial Monitor.
* IRremote: IRrecvDemo - demonstrează că primesc coduri IR cu IRrecv * Un detector / demodulator IR trebuie conectat la intrarea RECV_PIN. * Versiunea 0.1 iulie 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Programul de mai sus este preluat din folderul „exemple” al bibliotecii IRremote, puteți consulta mai multe exemple pentru a afla mai multe despre utilizarea telecomenzii IR. Deci, așa am decodat ieșirea la distanță IR.
Descrierea circuitului:
Conexiunile acestui circuit sunt foarte simple aici, un afișaj cu cristale lichide este utilizat pentru afișarea stării aparatelor electrocasnice care este conectat direct la arduino în modul 4 biți. Pinii de date ai ecranului LCD și anume RS, EN, D4, D5, D6, D7 sunt conectați la pinul digital arduino numărul 6, 7, 8, 9, 10, 11. Iar pinul de ieșire al TSOP1738 este conectat direct la pinul digital numărul 14 (A) din Arduino. Și pinul Vcc este conectat la un pin +5 volți și GND conectat la terminalul de masă al circuitului. Un șofer de releu și anume ULN2003 este, de asemenea, utilizat pentru conducerea releelor. Releele SPDT 3 de 5 volți sunt utilizate pentru controlul LIGHT, FAN și TV. Și relele sunt conectate la pinul arduino numărul 3, 4 și 5 prin driverul de releu ULN2003 pentru controlul LIGHT, FAN și TV respectiv.
Descrierea codului:
În programarea unei părți a acestui proiect În primul rând în programare includem o bibliotecă pentru telecomandă IR, care este ușor disponibilă la Google. Și definiți variabilele pin și declarați.
#include
Și apoi includem un antet pentru afișajul cu cristale lichide și apoi definim date și pini de control pentru LCD și electrocasnice.
#include
După el, trebuie să inițializăm ecranul LCD și să indicăm direcția pinului care este utilizat pentru ventilator, lumină și televizor.
void setup () {Serial.begin (9600); lcd.inceput (16,2); pinMode (Fan, OUTPUT); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
După cum s-a explicat deja, mai jos o parte a codului este utilizată pentru a compara valoarea hexagonală primită cu codul hexagonal deja definit al acelui buton. Dacă se potrivește, atunci se efectuează o operație relativă utilizând funcțiile corespunzătoare care sunt date în cod.
bucla void () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); întârziere (100); lcd.setCursor (0,0); lcd.print („Fan Light TV”); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);