kategória: Domáca automatizácia, Obvody mikrokontrolérov
Počet zobrazení: 17351
Komentáre k článku: 0

Diaľkové ovládanie mikrokontroléra: IR diaľkové ovládanie, Arduino, ESP8266, 433 MHz

 

Otázka diaľkového alebo diaľkového ovládania elektrických zariadení bola vždy a bude dôležitá, bez ohľadu na to, či v systéme existujú alebo nie sú nástroje na automatizáciu. Pokiaľ ide o organizáciu diaľkového ovládania, nezáleží vôbec na tom, či mikroradič, všetko závisí od potrebných funkcií priradených spravovanému zariadeniu. V tomto článku sa dozviete všeobecné informácie o tom, ako diaľkovo ovládať mikrokontrolér.

Diaľkové ovládanie mikrokontroléra

typy

Existujú dva hlavné typy diaľkovej komunikácie:


káblové, Ak sa ovládanie pohonov umiestnených v jednej miestnosti (alebo nie v miestnosti) vykonáva z ovládacieho panela alebo z gombíkovej tyče umiestnenej na inom mieste. V tomto prípade je zabezpečené elektrické drôtové spojenie riadiacich obvodov a ovládačov (relé, stýkače, ktoré zahŕňajú mechanizmy, ako napríklad motory alebo systémy, napríklad osvetlenie).


bezdrôtový, V tomto uskutočnení nie je potrebné žiadne elektrické pripojenie riadiacich a výkonných obvodov. V bezdrôtových obvodoch existujú dve zariadenia: vysielač alebo diaľkové ovládanie (RC) a prijímač, ktorý je súčasťou riadeného obvodu. Bezdrôtové ovládanie je zase bežné v dvoch verziách:

  • Optickým signálom. Takéto systémy sú v každej domácnosti, takže ovládate fungovanie televízora, klimatizácie a iných domácich spotrebičov.

  • Rádiovým signálom. Existuje už niekoľko možností: Bluetooth, ZigBee, Wi-Fi, 433 MHz vysielacie prijímače a ďalšie variácie na túto tému.

Za zmienku stojí, že pomocou moderných technických prostriedkov môžete mikrokontrolér ovládať z diaľkového ovládania aj cez internet v miestnej sieti alebo s prístupom odkiaľkoľvek na svete.



IR diaľkové ovládanie

Začíname uvažovať s najjednoduchšou a najtradičnejšou verziou. Ovládanie zariadenia prenosom kódu zo sekvencie blikania IR LED do optického prijímača nainštalovaného v zariadení. Stojí za povšimnutie, že infračervené spektrum nie je pre ľudské oko viditeľné, ale väčšina fotografických a videokamier to vidí.

Keďže väčšina kamier vidí infračervené žiarenie, môžete skontrolovať použiteľnosť diaľkových ovládačov, Jednoducho nasmerujte diaľkový ovládač tak, aby sa žiarič pozrel do kamery a stlačte tlačidlá. Na obrazovke sa zvyčajne zobrazuje biela žiara s fialovým odtieňom.

Tento ovládací prvok má zjavnú nevýhodu - diaľkový ovládač musíte nasmerovať na prijímač. A ak dôjde k vybitiu batérií v diaľkovom ovládači, musíte sa tiež zamerať, pretože operácie sú stále menšie.

Výhody sú jednoduchosť, vysoká udržiavateľnosť, vysielač aj prijímač. Podrobnosti nájdete rozobraním rozbitých diaľkových ovládačov a televízorov, aby ste ich mohli použiť vo svojich vlastných projektoch.

Typický senzor je nasledujúci. Pretože sa prijíma optický signál, je potrebné vylúčiť spúšťanie z vonkajších zdrojov svetla, ako je slnko, osvetlenie a iné. Za zmienku tiež stojí, že infračervený signál je prijímaný hlavne pri frekvencii 38 kHz.

IR senzor

Tu sú špecifikácie jedného z infračervených senzorov:

  • nosná frekvencia: 38 kHz;

  • napájacie napätie: 2,7 - 5,5 V;

  • prúdová spotreba: 50 μA.

A jeho schéma zapojenia:

Schéma pripojenia infračerveného senzora

Diaľkové ovládanie môže používať ktokoľvek s podobným princípom činnosti, diaľkové ovládanie z:

  • televízory;

  • DVD prehrávače

  • rádiomagnetofóny;

  • od moderných osvetľovacích zariadení, ako sú inteligentné lustre a LED pásky a ďalšie.

Ovládací panel

Tu je príklad použitia takéhoto senzora s Arduino

Príklad infračerveného snímača Arduino

Aby mikrokontrolér, v našom prípade Arduin, porozumel signálu zo senzora, musíte použiť knižnicu IRremote.h. Ako príklad na čítanie signálu zo senzora je tu uvedený kód na ich rozpoznanie čítaním sériového portu mikrokontroléra z Arduino IDE:

#include "IRremote.h" // pripojte knižnicu, aby pracovala so signálom IR.

IRrecv irrecv (2); // označujú výstup, ku ktorému je prijímač pripojený

výsledky dekódovania_výsledkov;

neplatné nastavenie () {

Serial.egegin (9600); // nastaviť rýchlosť portu COM

irrecv.enableIRIn (); // začatie príjmu

}

void loop () {

if (irrecv.decode (& results)) {// ak údaje prišli

Serial.println (výsledky.hodnota, HEX); // tlačiť údaje

irrecv.resume (); // akceptuje nasledujúci príkaz

  }

}

Výsledkom je, že keď bliká arduino a začnete „svietiť“ do prijímača pomocou diaľkového ovládača, na monitore sériového portu sa zobrazí nasledujúci obrázok:

Monitor sériového portu

Sú to kódy, ktoré odosielajú tlačidlá v hexadecimálnej podobe. Takto môžete zistiť, ktoré tlačidlo na diaľkovom ovládači odosiela kód, takže nie sú potrebné žiadne konkrétne požiadavky na použité diaľkové ovládanie, pretože ich môžete ľubovoľne rozpoznať a priradiť. Mimochodom, toto je nápad na projekt vyškoleného univerzálneho diaľkového ovládača, ktorý sa predával skôr. Ale teraz, vo veku internetu, množstvo technológie kontrolovanej týmto spôsobom každý rok klesá.

A pomocou tohto kódu môžete rozoznať signály a riadiť zaťaženie:

#include „IRremote.h“

IRrecv irrecv (2); // označujú výstup, ku ktorému je prijímač pripojený

výsledky dekódovania_výsledkov;

neplatné nastavenie () {

irrecv.enableIRIn (); // začatie príjmu

}

void loop () {

if (irrecv.decode (& results)) {// ak údaje prišli

switch (results.value) {

prípad 0xFFA857:

digitalWrite (13, HIGH);

break;

prípad 0xFFE01F:

digitalWrite (13, LOW);

break;

    }   

irrecv.resume (); // akceptuje nasledujúci príkaz

  }

}

Hlavnou vecou v kóde je rozpoznávanie pomocou funkcie Switch, niekedy sa nazývajú „switchcase“. Je to analóg, aj keď vetiev, ale má krajší tvar na vnímanie. Prípad - to sú možnosti, „ak taký kód príde, potom ...“ V kóde je pre určité signály ovládaných 13 pinov. Dovoľte mi pripomenúť, že vstavaná dióda LED na doske ARDUINO je pripojená na kolík 13, t. autor kódu ovládal LED.

Môžete ovládať čokoľvek pomocou digitálneho kolíka s vysokým alebo nízkym výkonom cez výkonový tranzistor (o ktorom sme sa predtým zmienili v dvoch článkoch) tu a tu) pri záťaži jednosmerného prúdu alebo prostredníctvom triaka a ovládača pre záťaž jednosmerným prúdom, na predstavivosť môžete tiež použiť relé a stýkače, spravidla celé pole.


Príjem a prenos rádiového signálu

Pre použitie s mikrokontrolérmi, sú bežné vysielače s pracovnými frekvenciami 433 MHz alebo 315 MHz, v závislosti od konkrétnej dosky môžu existovať aj iné frekvencie, ale tie sú najbežnejšie. Systém pozostáva z dvoch uzlov - prijímača a vysielača, čo je logické.

Príjem a prenos rádiového signálu

Na obrázku je vysielač zobrazený v pravom hornom rohu a prijímač v ľavom dolnom rohu. Názov ich vyhľadávania: Rádiový modul 433 MHz, MX-05V / XD-RF-5V (prijímač a vysielač).

Pinout, ako je tomu často v moduloch, je na doske namaľovaný ako vysielač:

Rádiový vysielač

Na prijímači to nie je také zrejmé, pretože údaje na doske plošných spojov sú napísané cez dva kolíky, v skutočnosti sa jeden z nich nepoužíva.

Rádiový prijímač

Napríklad dáme diagram a kód na zapnutie LED z jednej dosky Arduino pripojenej k inej podobnej doske, bez káblov. Prijímač a vysielač sú rovnakým spôsobom spojené s oboma doskami:

Prijímač a vysielač na doskách

zariadenie

modul

Kolíky Arduino

prijímač

VCC

GND

DATA

+ 5V

GND

2

vysielač

VCC

GND

DATA

+ 5V

GND

2 

Ďalej musíte pripojiť knižnicu RCswitch.h k Arduino IDE

Na začiatok napíšeme program vysielača:

#include

RCSwitch mySwitch = RCSwitch(); // vytvorte objekt, ktorý bude pracovať s klientskym rozhraním

neplatné nastavenie () {

    mySwitch.enableTransmit(2); // povedzte programu, ku ktorému je informačný kanál pripojený

}

void loop () {

mySwitch.send (B0100,4);

oneskorenie (1000);

mySwitch.send (B1000, 4);

    oneskorenie (1000);

} 

Vysielač môže prenášať binárny kód, ale jeho hodnoty sa môžu zapisovať v desiatkovej forme.

mySwitch.send (B0100,4);

a

mySwitch.send (B1000, 4);

jedná sa o príkazy na prenos, mySwitch je názov vysielača, ktorý sme uviedli na začiatku kódu, a príkaz send je príkaz na prenos. Argumenty pre túto funkciu sú:

Názov vysielača.send (hodnota, veľkosť paketu impulzov vysielaných do vzduchu);

B1000 - symbol B - znamená binárny, mohol by sa písať ako číslo 8, t.j. v desatinnom zápise. Ďalšou možnosťou bolo napísať „1 000“ ako reťazec (do úvodzoviek).

Ďalej napíšeme kód pre prijímač (bliká na doske, ku ktorej je prijímač pripojený):

#include

RCSwitch mySwitch = RCSwitch ();

neplatné nastavenie () {

pinMode (3, VÝSTUP);

mySwitch.enableReceive (0);

}

void loop () {

if (mySwitch.available ()) {

int value = mySwitch.getReceivedValue ();

if (value == B1000)

digitalWrite (3, HIGH);

inak ak (hodnota == B0100)

digitalWrite (3, LOW);

mySwitch.resetAvailable ();

    }

}

Prehlasujeme, že akceptovaná hodnota je uložená v premennej Value v reťazci mySwitch.getReceivedValue (). Skutočnosť, že prijímač je pripojený k 2. pinu, je tu opísaná v mySwiitch.enableReceive (0).

Inak je kód elementárny, ak je prijatý signál 0100, potom je číslo PIN 3 nastavené na vysokú (log. Unit), a ak je 1000, potom na low (log. Zero).

Aj zázrak:

V riadku mySwitch.enableTransmit (0) povieme programu, že prijímač je pripojený k 2. pinu a prijímací režim je zapnutý. Najpozornejšie si všimli, že argumentom tejto metódy nie je číslo PIN „2“, ale „0“, skutočnosť je, že metóda enableTransmit (číslo) neakceptuje číslo PIN, ale číslo prerušenia, ale v atmega328, ktoré sa kladie na Arduino Uno, nano, promini a niekoľko ďalších, na druhom kolíku (PortD pin PD2) zablokuje prerušenie s číslom nula. Môžete to vidieť na vývode Atmega platnom pre dosku Arduino, čísla pinov sú napísané v ružových rámčekoch.

Atmega pinout

Tento spôsob vysielania a prijímania je veľmi jednoduchý a lacný, pár prijímača a vysielača stojí v čase zápisu asi 1,5 dolárov.


Wi-Fi, Adruino a ESP8266

Ak chcete začať, ESP8266 je mikrokontrolér s hardvérovou podporou Wi-Fi, Predáva sa ako samostatný čip a spájkuje sa na dosku ako arduino. Má 32-bitové jadro, je naprogramované cez sériový port (UART).

Dosky majú obvykle 2 alebo viac voľných pinov GPIO a vždy existuje pin pre firmvér, musí sa to urobiť cez adaptér USB na sériový port. Úplný zoznam príkazov, ktoré spravujú tímy AT, nájdete na oficiálnej webovej stránke ESP8266 a na serveri github.

ESP8266

Existuje ešte zaujímavejšia možnosť, dosky NodeMCU, ktoré majú schopnosť blikať cez USB, pretože Konvertor USB-UART je už na doske, zvyčajne vyrobený na čipe CP2102. Uzol MCU je firmvér, niečo ako operačný systém, projekt založený na skriptovacom jazyku Lua.

Rada NodeMCU

Firmvér dokáže spúšťať skripty Lua, buď ich prijímaním na sériovom porte, alebo reprodukciou algoritmov uložených v pamäti Flash.

Mimochodom, má svoj vlastný systém súborov, hoci v ňom nie sú žiadne adresáre, t. iba súbory bez priečinkov. Do pamäte je možné ukladať nielen skripty, ale aj rôzne dáta, t. doska môže ukladať informácie zaznamenané napríklad zo senzorov.

Doska pracuje s rozhraniami:

  • 1-Wire;

  • I2C;

  • SPI;

  • UART.

Má celý rad funkcií:

  • šifrovací modul;

  • plánovač úloh;

  • hodiny v reálnom čase;

  • protokol synchronizácie hodín prostredníctvom internetového SNTP;

  • časovača;

  • ADC kanál (jeden);

  • prehrávať zvukové súbory;

  • generovať na výstupoch signál PWM (až 6);

  • pomocou soketov, existuje podpora pre FatFS, t. j. môžete pripojiť karty SD atď.

ESP-12E

A tu je krátky zoznam toho, s čím môže správna rada pracovať:

  • akcelerometre ADXL345;

  • HMC5883L magnetometre

  • gyroskopy L3G4200D;

  • snímače teploty a vlhkosti AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • senzory teploty, vlhkosti, atmosférického tlaku BME280;

  • snímače teploty a atmosférického tlaku BMP085;

  • veľa displejov pracujúcich na zberniciach I2C, SPI. So schopnosťou pracovať s rôznymi typmi písma;

  • TFT zobrazuje ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

  • inteligentné LED a kontroléry LED - WS2812, tm1829, WS2801, WS2812.

Okrem používania jazyka Lua môžete dosku naprogramovať aj pod Arduino IDE.

ESP8266 sa dá použiť ako samostatné zariadenie alebo ako modul pre bezdrôtovú komunikáciu s Arduino.

Modul pre bezdrôtovú komunikáciu s Arduino

Zváženie všetkých funkcií a vlastností tejto rady bude trvať celý rad článkov.

Táto doska je teda vynikajúcou voľbou pre diaľkové ovládanie cez Wi-Fi. Rozsah je napríklad obrovský, ak sa má smartphone používať ako ovládací panel pre dočasne rádiom riadený stroj alebo kvadrokoptéra, diaľkové ovládanie osvetlenia, až po zabezpečenie sietí pre celý dom a spravovanie každej zásuvky, lampy atď. keby len bolo dosť kolíkov.

Najjednoduchší spôsob práce s mikrokontrolérom je použitie jednej dosky ESP8266. Nižšie je schéma jednoduchého výstupu wi-fi.

Schéma najjednoduchšieho WiFi výstupu

Na zostavenie tohto obvodu potrebujete reléový modul alebo konvenčné relé pripojené k pinu cez tranzistor. Najprv potrebujete program pre smartphone RoboRemoFree. V ňom nakonfigurujete pripojenie k ESP a vytvoríte rozhranie na ovládanie zásuvky. Ak chcete opísať, ako ho používať, musíte napísať samostatný článok, takže tento materiál zatiaľ nevynechajte.

V ESP načítame nasledujúci firmvér prostredníctvom programu ESPlorer (program pre prácu s doskou)

- Nastavenie Wi-Fi

wifi.setmode (wifi.STATIONAP)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

wifi.ap.config (cfg)

- Nastaviť režim Pin

my_pin_nummber = 1

--gpio.mode (my_pin_nummber, gpio.OUTPUT)

gpio.mode (my_pin_nummber, gpio.OPENDRAIN)

- Vytvorte server

sv = net.createServer (net.TCP)

funkčný prijímač (sck, dáta)

ak string.sub (dáta, 0, 1) == "1", potom

--gpio.write (my_pin_nummber, gpio.HIGH)

gpio.write (my_pin_nummber, gpio.LOW)

inak

ak string.sub (dáta, 0, 1) == "0", potom

--gpio.write (my_pin_nummber, gpio.LOW)

gpio.write (my_pin_nummber, gpio.HIGH)

koniec

koniec

tlač (dáta)

koniec

ak sv

sv: počúvať (333, funkcia (conn)

conn: on ("príjem", prijímač)

conn: send („Ahoj!“)

end)

koniec

--Vytvorte si HTTP server

http = net.createServer (net.TCP)

funkcia recipient_http (sck, dáta)

tlač (dáta)

lokálna požiadavka = string.match (data, "([^ \ r, \ n] *) [\ r, \ n]", 1)

ak request == 'GET / on HTTP / 1.1' then

--gpio.write (my_pin_nummber, gpio.HIGH)

gpio.write (my_pin_nummber, gpio.LOW)

koniec

ak request == 'GET / off HTTP / 1.1' then

--gpio.write (my_pin_nummber, gpio.LOW)

gpio.write (my_pin_nummber, gpio.HIGH)

koniec

sck: on ("sent", function (sck) sck: close () collectgarbage () end)

local response = "HTTP / 1.0 200 OK \ r \ nServer: NodeMCU on ESP8266 \ r \ nContent Type: text / html \ r \ n \ r \ n" ..

" NodeMCU na ESP8266 " ..

"

NodeMCU na ESP8266

" ..

"


" ..

" Zapnuté Vypnuté " ..

sck: send (response)

koniec

ak teda http

http: počúvajte (80, funkcia (conn)

conn: on ("obdržať", prijať_http)

end)

koniec

print ("Started.")

Teraz môžete program ovládať buď z programu Roboremo, alebo z ľubovoľného webového prehľadávača. Na tento účel musíte do panela s adresou v režime wi-fi napísať IP adresu dosky, 192.168.4.1.

V kóde je útržok:

" NodeMCU na ESP8266 " ..

"

NodeMCU na ESP8266

" ..

"


" ..

" Zapnuté Vypnuté " ..

Toto je druh odpovede, ktorá sa vydá prehliadaču pri prístupe na tabuľu. Obsahuje kód HTML, t. Najjednoduchšia webová stránka, podobná tej na ktorej čítate tento článok.

Stránka v prehliadači smartfónu so systémom Android

Táto stránka je spustená v prehliadači smartfónu so systémom Android. Vyššie uvedené nie je úplná inštrukcia, pretože by vás to mohlo zaujímať, ak by vás tieto informácie zaujímali, napíšte komentáre a určite preskúmame a napíšeme článok o práci s nimi.

Pozri tiež na electro-sk.tomathouse.com:

  • Pripojenie a programovanie Arduino pre začiatočníkov
  • Metódy čítania a správy vstupov / výstupov Arduino
  • Čo sú displeje Nextion a ako s nimi pracovať?
  • Programovateľné mikrokontroléry v JavaScripte: ktorý zvoliť, vlastnosti ...
  • Druhy a usporiadanie mikrokontrolérov AVR

  •