Hardware | Programování | Pojďme programovat elektroniku

Pojďme programovat elektroniku: Vyzkoušíme IR, ovládneme světýlko přes Bluetooth a vyšleme zprávu na sto metrů

  • Budeme odposlouchávat IR ovladač klimatizace
  • Vyrobíme laciný rádiový vysílač
  • Vyzkoušíme komunikaci pomocí Bluetooth a v pásmu 433 MHz

Už je to měsíc, co jsem naposledy z krabice vytáhl ultrazvukový dálkoměr HC-SR04, infračervený detektor pohybu PIR a jednoduchý detektor dešťových kapek, připojil je k malé prototypovací destičce Arduino a na jednoduchých příkladech ukázal, že ke zprovoznění elektronického prvku chytré domácnosti dnes nepotřebujete titul inženýra, ale jen základní znalost programování, odvahu učit se nové věci a pár korun na účtu, eBay je totiž na podobné experimentování nebezpečně levný.

V mezidobí mi dorazilo několik desítek nových obálek a balíčků s hromadou atraktivních hraček, které si vyzkoušíme v dalších pokračováních našeho seriálu. Pokud jsme doposud pomocí všemožných senzorů měřili hodnoty, dnes se podíváme na několik modulů, které se postarají o to, aby se dostala informace z bodu A do bodu B a to bez kabelu.

Infračervený vysílač a přijímač

Tím nejprimitivnějším komerčně používaným způsobem bezdrátové komunikace je dnes IR – infračervený přenos signálu. Má jej každý televizní ovladač a dokonce i některé telefony. Podobný IR vysílač/přijímač seženete i v každém e-shopu pro bastlíře, přičemž cena se bude pohybovat od několika desetikorun na eBay a jemu podobných po vyšší částku v Česku, která je ale ospravedlnitelná nejen povinnou zárukou, ale často i skladovou dostupností, takže na drobnou součástku nebudete čekat dlouhé týdny.

519484392
Primitivní infračervený vysílač a přijímač, kterých jsou plné e-shopy pro bastlíře

Infračervený vysílač za dvacetikorunu samozřejmě sám o sobě nic neumí. Je to vlastně jen dioda, která svítí infračerveným světlem, když do ní pošlete signál. A stejně tak přijímač zachytí buď IR světlo a tedy logickou jedničku, anebo nic a tedy logickou nulu. Podobné moduly mají zpravidla tři vodiče: napájení (+), zem (-) a pin samotného digitálního signálu.

Je to primitivní (a proto komplikované)

Infračervený vysílač je tedy po technické stránce naprosto primitivní – jako byste za tmy blikali třeba baterkou a světlo zaznamenávali pomocí fotorezistoru. Pokud nebudete chtít jen blikat, ale přenášet i nějaké informace, samotný přenosový protokol, tedy generátor blikání a jeho detektor, si už musíte napsat svépomocí. A pokud budete chtít pomocí IR ovládat nějaké spotřebiče, bude to ještě mnohem složitější, protože budete potřebovat přesnou dokumentaci signálů, které používají.

587764801
Infračervený signál pro zapnutí spotřebiče může vypadat třeba takto. Střídají se různě dlouhé impulzy světla (hodnota 1) oddělené drobnou prodlevou (hodnota 0). Čas na ose X je v mikrosekundách.

Zpravidla si proto budete muset zahrát na reverzního inženýra, který pomocí IR přijímače nejprve nahraje signál z dálkového ovládání pro daný úkon, no a pak už jej může zreprodukovat a vyslat stejný sled světelných pulzů do vysílače.

Knihovna IRremote

Podobný problém už naštěstí řešily tisíce bastlířů před námi, takže GitHub je plný knihoven pro Arduino, které se o to postarají za nás. Jedna z těch povedenějších se jmenuje IRremote a má v sobě dokonce předvolby pro některé výrobce – třeba Sony, Samsung a další. Instalaci knihoven pro Arduino jsme si už vysvětlili v předchozím povídání, takže stačí jen otevřít některý z dodaných praktických příkladů.

Já se pomocí IR přijímače a vysílače pokusím zapnout starou a relativně hloupou redakční klimatizaci. Není napojená na žádný centrální termostat, takže je třeba nastavit teplotu na dálkovém ovladači a podle potřeby ji spustit.

Mým cílem pro příští letní sezónu bude mikropočítač, který bude klimatizaci pomocí IR signálu spouštět automaticky tehdy, pokud teplota v kanceláři překoná neúnosnou mez, a také podle časového plánu vždy ráno před příchodem kolegů do práce, aby byla kancelář patřičně vychlazená.

Zapnu klimatizaci pomocí Arduina

Dnes zdolám první překážku. Pokusím se ji zapnout pomocí Arduina a IR vysílače namísto dálkového ovládání.

492476397
Stropní klimatizaci lze nastavit a spustit jen pomocí dálkového IR ovladače

Knihovna IRremote naši klimatizaci samozřejmě vůbec nezná, takže použiji jeden z jejích příkladů jménem IRrecvDumpV2, který skrze sériovou linku vypíše do PC zachycený signál ve formě pole časů jednotlivých pulzů v mikrosekundách. Příklad zároveň vygeneruje úryvek kódu, který pak budu moci použít pro vysílač.

Po spuštění programu na Arduinu stačí na IR přijímač namířit dálkové ovládání a stisknout požadované tlačítko. V sériovém monitoru se rázem vypíše zachycený signál.

200454592 381560927
Jakmile jsem klepl na tlačítko dálkového ovládání, rozsvítila se detekční LED dioda na modulu IR přijímače a na počítači se skrze sériovou linku vypsal zaznamenaný infračervený signál vyjádřený délkou jednotlivých pulzů v mikrosekundách. Na posledním řádku mi program vygeneroval kód v C s hodnotami signálu, který mohu zkopírovat a použít naopak pro vysílač.

Pak už stačí přepnout obvod na vysílač a otevřít příklad IRsendRawDemo, který pošle optický signál podle pole časů jednotlivých pulzů, které jsem zachytil v předchozím kroku.

137103401 140660846
Zaznamenaný signál jsem zkopíroval do příkladu s vysílačem, který je už poměrně jednoduchý. Poté jsem program spustil na Arduinu a namířil vysílač na klimatizaci, která krátce poté pípla a spustila se.

V další kapitole vyzkoušíme nejlevnější modul pro rádiovou komunikaci. Když si nedáte jedno pivo, je váš.

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,