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.

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.

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:

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.

Tu je príklad použitia takéhoto senzora s 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:

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é.

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č:

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.

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:

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.

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.

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.

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ď.

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.

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.

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
" .."
" ..
„ “
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
" ..
"
" ..
„ “
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.

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
: