Diaľkové ovládanie spotrebiča pomocou infračerveného signálu
Zo stránky SensorWiki
Záverečný projekt predmetu MIPS / LS2025 - Meno Priezvisko
Zadanie
Cieľom môjho zadania bolo vytvoriť program, ktorý umožní ovládať pomocou infračerveného diaľkového ovládača spotrebič, svietidlo, v mojom príklade som na demonštráciu použil LED diódu. Podmienkou bolo, že nie je povolené použiť žiadne externé knižnice na spracovanie IR signálu, ako je napríklad IRremote, ktorá by úlohu výrazne zjednodušila.

Literatúra:
Analýza a opis riešenia
Pre komunikáciu pomocou infračerveného signálu som použil prijímač AX-1838HS a IR ovládač Car MP3, ktoré sú bežne dodávané v sete s Arduino UNO.


Zapojenie a nastavenie
- IR prijímač je pripojený na vstup Arduina (PIN PD3)
- LED dióda je pripojená na výstup (PIN PB0)
- PIN pre IR prijímač je nastavený ako vstup s interným pull-up rezistorom, čo zabezpečuje stabilný logický stav, keď IR prijímač neodovzdáva signál
- PIN pre LED diódu je nastavený ako výstup


Teoretický úvod do IR signálu
Infračervený prijímač neprodukuje priamo dekódované kódy, ale vysiela digitálny signál, ktorý predstavuje modulovaný IR svetelný impulz. V tomto prípade ide o NEC protokol, ktorý prenáša 32-bitové správy s pevnými časovými intervalmi pre logické 0 a 1.

Manuálna implementácia dekódovania NEC protokolu
Keďže nebolo možné použiť hotovú knižnicu, bolo potrebné napísať funkciu, ktorá:
- čaká na začiatok signálu (dlhý LOW pulz – tzv. lead pulse)
- meria časové úseky LOW a HIGH úrovní na vstupe, aby rozpoznala jednotlivé bity (0 alebo 1)
- spočíta postupne 32 bitov dát
- výsledkom je 32-bitové číslo, ktoré reprezentuje príkaz z diaľkového ovládača.
Algoritmus a program
Po zapnutí sa vykoná inicializácia pinov – LED pin sa nastaví ako výstup a IR pin ako vstup s aktivovaným pull-up odporom. Hlavná slučka programu neustále čaká na infračervený signál pomocou funkcie ir_receive. Táto funkcia najprv zachytí úvodný signál (LEAD PULSE a SPACE) a potom načíta 32 bitov kódu vyslaného z diaľkového ovládača. Každý bit je určený dĺžkou trvania signálu – krátka doba znamená logickú nulu, dlhšia logickú jednotku. Po úspešnom prijatí kódu sa porovná s preddefinovanými hodnotami pre tlačidlá 1 a 2. Ak bol prijatý kód pre tlačidlo 1, LED dióda sa zapne, ak pre tlačidlo 2, LED sa vypne.
#include <avr/io.h>
int main(void)
{
unsigned int measuredValue;
while (1)
{
/* relax */
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Na ovládanie LED diódy stačia dve tlačítka, pri prijatí kódu tlačidla „1“ sa nastaví stav LED diódy na zapnutý, pri prijatí kódu tlačidla „2“ sa stav LED diódy nastaví na vypnutý. Iné kódy sú ignorované.
Na konci uvádzame fotku hotového zariadenia.

Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.