- Pracovné vysvetlenie:
- Dekódovanie signálov IR diaľkového ovládania pomocou Arduina:
- Popis obvodu:
- Popis kódu:
Predtým sme pokryli mnoho typov domácich automatizácií pomocou rôznych technológií, ako je domáca automatizácia založená na DTMF, domáca automatizácia riadená počítačom pomocou Arduina, domáca automatizácia ovládaná pomocou Bluetooth. V tomto projekte používame na ovládanie domácich spotrebičov bezdrôtovú komunikáciu na báze IR. V tomto projekte sa Arduino používa na riadenie celého procesu. Niektoré príkazy odosielame do riadiaceho systému pomocou diaľkového ovládača IR TV / DVD / MP3 na ovládanie domácich spotrebičov. Po prijatí signálu z IR diaľkového ovládača Arduino pošle súvisiaci signál do relé, ktoré sú zodpovedné za zapnutie alebo vypnutie domácich spotrebičov prostredníctvom ovládača relé.
Pracovné vysvetlenie:
Fungovanie tohto projektu je ľahko pochopiteľné. Keď stlačíte ktorékoľvek tlačidlo IR Remote, diaľkový ovládač odošle kód vo forme sledu kódovaných impulzov pomocou modulačnej frekvencie 38 kHz. Tieto impulzy sú prijímané snímačom TSOP1738 a načítané Arduinom a potom Arduino dekóduje prijatý sled impulzov na hexadecimálnu hodnotu a porovnáva túto dekódovanú hodnotu s preddefinovanou hexadecimálnou hodnotou stlačeného tlačidla. Ak dôjde k nejakej zhode, potom Arduino vykoná relatívnu operáciu a zodpovedajúci výsledok sa tiež zobrazí na displeji 16x2 pomocou vhodných príkazov. Tu v tomto projekte sme použili 3 žiarovky rôznych farieb na ukážku, ktorá označuje ventilátor, svetlo a televíziu.
Existuje mnoho typov IR diaľkových ovládačov, ktoré sú k dispozícii pre rôzne zariadenia, ale väčšina z nich pracuje na frekvenčnom signáli okolo 38 KHz. Tu v tomto projekte ovládame domáce spotrebiče pomocou diaľkového ovládača IR TV. Na detekciu IR diaľkového signálu používame IR prijímač TSOP1738. Tento snímač TSOP1738 dokáže snímať frekvenčný signál 38 kHz. Fungovaniu IR diaľkového ovládača a TSOP1738 sa môžeme podrobne venovať v tomto článku: IR vysielač a prijímač
Komponenty:
- Arduino UNO
- TSOP1738
- IR diaľkový ovládač TV / DVD
- ULN2003
- Relé 5 volt
- Žiarovka s držiakom
- Pripojovacie vodiče
- Chlebová doska
- 16x2 LCD
- Zdroj
- PVT
- IC 7805
V tomto projekte sme použili 7, 8 a 9 číselné tlačidlo infračerveného diaľkového ovládača na ovládanie ventilátora, svetla a TV a tlačidlo ON / OFF (tlačidlo napájania) slúži na súčasné zapnutie a vypnutie všetkých zariadení.
Tu sme použili prepínaciu metódu na ZAPNUTIE a VYPNUTIE jedného domáceho spotrebiča. Prepnúť metódu nie je nič iné, ako to dosiahnuť, či už je tlačidlo stlačené čo i len raz alebo nepárne. To sa zistí získaním pripomenutia po jeho vydelení číslom 2 (i% 2). Ak nejaké pripomenutie existuje, zariadenie sa zapne a ak je pripomienka 0, vypne sa. Predpokladajme, že je stlačený kláves 7 na diaľkovom ovládaní, potom diaľkový ovládač pošle signál do Arduina cez IR prijímač TSOP. Potom ho Arduino dekóduje a dekódovanú hodnotu uloží do premennej výsledkov. Teraz má premenná results hexadecimálnu hodnotu 0x1FE00FF, po zhode s preddefinovanou hexadecimálnou hodnotou kľúča 7 (pozri obrázok vyššie) Arduino ZAPNE ventilátor. Teraz, keď stlačíme to isté tlačidlo (klávesa 7) znova, IR pošle rovnaký kód. Arduino dostane rovnaký kód a porovnané s rovnakým kódom ako predtým, ale tentoraz sa ventilátor vypol z dôvodu prepínania bitu (i% 2).
Dekódovanie signálov IR diaľkového ovládania pomocou Arduina:
Tu je zoznam vzdialených dekódovaných výstupných kódov typu DVD NEC:
Ak nepoznáte dekódovaný výstup pre vaše IR diaľkové ovládanie, dá sa ľahko nájsť, postupujte podľa týchto krokov:
- Stiahnite si IR knižnicu odtiaľto
- Rozbaľte ho a umiestnite do priečinka „Knižnice“ v Arduine. Potom premenujte extrahovaný priečinok na IRremote.
- Spustite nižšie uvedený program z vášho Arduina a otvorte okno Serial Monitor v Arduino IDE. Teraz stlačte ľubovoľné tlačidlo IR Remote a v okne Serial Monitor uvidíte zodpovedajúci dekódovaný hexadecimálny výstup.
* IRremote: IRrecvDemo - demonštruje príjem IR kódov pomocou IRrecv * Na vstup RECV_PIN musí byť pripojený IR detektor / demodulátor. * Verzia 0.1 júla 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
Vyššie uvedený program je prevzatý z priečinka „examples“ knižnice IRremote. Môžete si pozrieť viac príkladov a dozvedieť sa viac o používaní IR diaľkového ovládača. Takto sme dekódovali IR diaľkový výstup.
Popis obvodu:
Pripojenie tohto obvodu je veľmi jednoduché, tu sa na zobrazovanie stavu domácich spotrebičov používa displej z tekutých kryštálov, ktorý je priamo pripojený k arduino v 4-bitovom režime. Dátové piny na LCD, menovite RS, EN, D4, D5, D6, D7, sú pripojené k arduino digitálnemu pinu číslo 6, 7, 8, 9, 10, 11. A výstupný pin TSOP1738 je priamo pripojený k digitálnemu pinu číslo 14 (A) Arduina. A Vcc pin je pripojený +5 voltov a GND pin pripojený na uzemňovaciu svorku obvodu. Na riadenie relé sa tiež používa budič relé, konkrétne ULN2003. 5 voltové relé SPDT 3 sa používajú na ovládanie LIGHT, FAN a TV. Relé sú pripojené k pinom arduino číslo 3, 4 a 5 cez budič relé ULN2003 na ovládanie LIGHT, FAN a TV.
Popis kódu:
V programovej časti tohto projektu Najskôr do programovania zahrňujeme knižnicu pre IR diaľkové ovládanie, ktorá je ľahko dostupná v Google. A definujte pin a deklarujte premenné.
#include
A potom zahrňte hlavičku pre displej z tekutých kryštálov a potom definujeme údaje a ovládacie piny pre LCD a domáce spotrebiče.
#include
Potom musíme inicializovať LCD a určiť smer vývodu, ktorý sa používa pre ventilátor, svetlo a televíziu.
void setup () {Serial.begin (9600); lcd.začiatok (16,2); pinMode (ventilátor, VÝSTUP); pinMode (svetlo, VÝSTUP); pinMode (TV, VÝSTUP);
Ako už bolo vysvetlené, nižšie uvedená časť kódu sa používa na porovnanie prijatej hexadecimálnej hodnoty s už definovaným hexadecimálnym kódom daného tlačidla. Ak sa zhoduje, potom sa vykoná relatívna operácia pomocou vhodných funkcií, ktoré sú uvedené v kóde.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); oneskorenie (100); lcd.setCursor (0,0); lcd.print ("Televízor s ventilátorom"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);