Tento set je složen ze dvou částí, přijímače a vysílače, fungujících na povoleném kmitočtu 433 MHz. Přijímač tvoří poměrně malý elektronický modul, který obsahuje vše potřebné pro svou funkci, případně je pro lepší dosah možné v jeho levém horním rohu připájet externí anténu. Vysílač je dodáván ve tvaru klíčenky s posuvným krytem, pod kterým se nachází čtyři tlačítka pojmenovaná A B C D. Dosah vysílače je možné zvětšit pomocí teleskopické anténky, kdy podle výrobce je možné dosáhnout bezdrátového přenosu na vzdálenost 50 až 100 m ve volném prostoru. Pro zapojení přijímače stačí připojit napájecí napětí o velikosti 5 V a číst informace o stisku tlačítek ze zbylých pinů, přičemž modul má na sobě také pin s názvem V1, který slouží jako obecná detekce použití vysílače, tedy při stisku jakéhokoliv tlačítka se zároveň aktivuje i pin V1.
Pro úspěšné propojení s Arduino deskou stačí propojit přítomných sedm vodičů. Propojíme tedy GND se zemí, 5V s +5 V, D0 s pinem 3, D1 s pinem 4, D2 s pinem 5, D3 s pinem 6 a V1 s pinem 2. Všechny datové piny samozřejmě můžeme vyměnit za jiné volné, ale pro zachování funkčnosti je nutné zapojit V1 na pin podporující přerušení, u Arduino UNO jsou to piny 2 a 3.
Ukázkový kód obsahuje na začátku vytvoření pole se všemi připojenými piny, kde V1 je na prvním (respektive v programu nultém) místě. Dále je vytvořena pomocná proměnná stisk, do které se ukládá stav tlačítka. V podprogramu setup je nejprve nastavena komunikace po sériové lince a jako další je pomocí smyčky for provedeno nastavení všech pinů pole ovladani jako vstupních. Na konci tohoto podprogramu se nachází aktivace detekce přerušení, které je nastaveno na pin 2 (nultý přerušovací), volání podprogramu detekce a detekování nástupné hrany (rising). V tomto ukázkovém kódu je záměrně nekonečná smyčka loop prázdná, aby bylo zdůrazněno, že zpracování tlačítek z dálkového ovládání nezatěžuje hlavní smyčku. Jako další se v kódu nachází podprogram detekce, který pouze v případě své aktivace vypíše informaci o stisku a čísle stisknutého tlačítka. Toto číslo je získáno pomocí zavolání podprogramu cteniVstupu, který se nachází níže. V podprogramu cteniVstupu se tedy na začátku vytvoří proměnná vystup pro uložení čísla stisknutého tlačítka, přičemž toto číslo se získá za pomoci opakovaného čtení stavu všech připojených tlačítek ve smyčce for níže. V případě, že načítané tlačítko bylo stisknuto a je tedy ve stavu HIGH (logická 1), uloží se jeho číslo do proměnné vystup. Na konci podprogramu se nachází už funkce „return vystup“ která vrátí do výpisu v podprogramu detekce odpovídající číslo stisknutého tlačítka.
// Dálkové ovládání bezdrátové 433MHz // pole připojených pinů const int ovladani[] = {2, 3, 4, 5, 6}; // proměnná pro uložení stavu tlačítka int stisk = 0; void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // inicializace pole připojených pinů for(int x=0; x<5; x++) { // nastavení připojených pinů jako vstupních pinMode(ovladani[x], INPUT); } // nastavení přerušení na pin 2 (int0) // při rostoucí hraně (logO->log1) se vykoná program prerus attachInterrupt(0, detekce, RISING); } void loop(){ // volný prostor pro běh hlavního programu } void detekce() { // pokud je aktivován vstup V1, // vypiš informaci po sériové lince Serial.print("Stisknuto tlacitko: "); // zavolání funkce, která obsahuje čtení vstupů // a vrácení čísla stisknutého tlačítka Serial.println(cteniVstupu()); } int cteniVstupu() { // proměnná pro uložení čísla stisknutého tlačítka int vystup = 0; // for smyčka pro postupné načtení stavu všech // připojených tlačítek // vynecháno nulté, protože to odpovídá pinu V1 for(int x=1; x<5; x++) { //načtení stavu tlačítka do proměnné stisk stisk = digitalRead(ovladani[x]); // pokud je tlačítko stisknuto if (stisk == HIGH) { // nastav momentální pozici jako vystup vystup = x; } } // funkce vrátí číslo stisknutého tlačítka return vystup; }
Po nahrání programu do Arduino desky s připojeným přijímačem a stisknutí tlačítek na vysílači-ovladači dostaneme například tento výpis:
Stisknuto tlacitko: 1 Stisknuto tlacitko: 2 Stisknuto tlacitko: 3 Stisknuto tlacitko: 4
Bezdrátové dálkové ovládání na kmitočtu 433 MHz je často používané v těch zařízeních, kde je žádoucí tyto zařízení řídit na dálku. Jistou nevýhodou je však ta skutečnost, že tento set neobsahuje jednoduchou možnost kódování adres, kterým by bylo možné vytvořit unikátní kombinaci přijímače a vysílače. Pokud se tedy v okolí zařízení vyskytne jiná osoba, která si zakoupila tento set, může jednoduše zasahovat do chodu zařízení svým ovladačem. Je možné spojením určitých adresových pinů na obou zařízeních nastavit jiné adresy než přednastavené, ale tato možnost není doporučena a její aplikování povede ke ztrátě záruky.
Seznam použitých komponent:
http://dratek.cz/arduino/875-arduino-dalkove-ovladani-bezdratove-433mhz-prijimac-1420489344.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html