kategorije: Kućna automatizacija, Sklopovi mikrokontrolera
Broj pregledavanja: 17351
Komentari na članak: 0

Daljinski upravljač mikrokontrolera: IR daljinski, Arduino, ESP8266, 433 MHz

 

Pitanje daljinskog ili daljinskog upravljanja električnom opremom uvijek je bilo i bit će važno, bez obzira na to postoje li alati za automatizaciju u sustavu ili ne. Za organizaciju daljinskog upravljanja uopće nije važno hoće li mikrokontrolera, sve ovisi o potrebnim funkcijama koje su dodijeljene upravljanom uređaju. U ovom ćete članku naučiti opće informacije o daljinskom upravljanju mikrokontrolerom.

Daljinski upravljač mikrokontrolera

vrste

Postoje dvije glavne vrste daljinske komunikacije:


žičani, Kada se kontrola pokretača smještenih u jednoj prostoriji (ili ne u sobi) vrši s upravljačke ploče ili s gumba na drugom mjestu. U ovom je slučaju predviđena električna žica za povezivanje upravljačkih krugova i pokretača (releji, kontaktori, koji uključuju mehanizme, kao što su motori ili sustavi, na primjer, rasvjeta).


bežični, U ovoj izvedbi nije potrebno električno povezivanje upravljačkog i izvršnog kruga. U bežičnim krugovima postoje dva uređaja: odašiljač ili daljinski upravljač (RC) i prijemnik, koji je dio kontroliranog kruga. Bežično upravljanje je zauzvrat uobičajeno u dvije verzije:

  • Optičkim signalom. Takvi sustavi postoje u svakom domu, pa kontrolirate rad televizora, klima uređaja i ostalih kućanskih aparata.

  • Radio signalom. Postoji već niz mogućnosti: Bluetooth, ZigBee, Wi-Fi, 433 MHz odašiljači i druge varijacije na ovu temu.

Vrijedno je napomenuti da suvremenim tehničkim sredstvima možete upravljati mikrokontrolerom, i s daljinskog upravljača i putem Interneta na lokalnoj mreži ili s bilo kojeg mjesta na svijetu.



IR daljinski

Razmatranje započinjemo najjednostavnijom i klasičnijom verzijom. Upravljanje uređajem prijenosom koda iz treperave sekvence IR LED-a na optički prijemnik instaliran na uređaju. Vrijedi napomenuti da infracrveni spektar nije vidljiv ljudskom oku, ali većina foto i video kamera to vidi.

Budući da većina kamera vidi infracrvenu vezu, možete provjeriti ispravnost daljinskih upravljača, Da biste to učinili, jednostavno usmjerite daljinski upravljač tako da odašiljač gleda u kameru i pritisnite gumbe. Obično se na ekranu vidi bijeli sjaj s ljubičastom nijansom.

Ova kontrola ima očit nedostatak - daljinski upravljač morate usmjeriti prema prijemniku. A ako su baterije na daljinskom upravljaču ponestane, onda također morate ciljati, jer su operacije sve manje i manje.

Prednosti su jednostavnost, velika održavanje, kako odašiljač, tako i prijemnik. Pojedinosti možete pronaći demontažom pokvarenih daljinskih upravljača i televizora kako biste to primijenili u vlastitim projektima.

Tipični senzor je kako slijedi. Budući da se optički signal prima, potrebno je isključiti aktiviranje iz vanjskih izvora svjetlosti, poput sunca, rasvjetnih svjetiljki i drugih. Također je vrijedno napomenuti da se infracrveni signal prima uglavnom na frekvenciji od 38 kHz.

IR senzor

Ovdje su specifikacije jednog od infracrvenih senzora:

  • nosačka frekvencija: 38 kHz;

  • napon napajanja: 2,7 - 5,5 V;

  • trenutna potrošnja: 50 μA.

I njegov dijagram veze:

Dijagram veze IR senzora

Daljinski upravljač može koristiti bilo tko sa sličnim principom rada, a daljinske upravljače iz:

  • televizori;

  • DVD playeri

  • radio kasetofoni;

  • od modernih rasvjetnih uređaja, kao što su pametni lusteri i LED trake i još mnogo toga.

Upravljačka ploča

Evo primjera upotrebe takvog senzora s Arduinom

Primjer Arduino IR osjetnika

Kako bi mikrokontroler, u našem slučaju Arduin, razumio signal senzora, potrebno je koristiti knjižnicu IRremote.h. Primjer kako čitati signal sa senzora, evo koda za prepoznavanje istih očitavanjem serijskog ulaza mikrokontrolera iz Arduino IDE:

#include "IRremote.h" // povežite biblioteku za rad s IR signalom.

IRrecv neodcv (2); // naznačiti izlaz na koji je prijemnik spojen

decode_resultati rezultata;

poništavanje postave () {

Serijski počet (9600); // podesite brzinu COM porta

ircv.enableIRIn (); // pokrenuti prijem

}

void petlja () {

if (nere.vode kod (i rezultati)) {// ako su podaci došli

Serijski.println (rezultati.vrijednost, HEX); // ispis podataka

ircv.resume (); // prihvatiti sljedeću naredbu

  }

}

Kao rezultat toga, kada bljesnete arduino i počnete „sjajati“ u prijemniku pomoću daljinskog upravljača, vidjet ćemo sljedeću sliku na monitoru serijskog porta:

Monitor serijskog ulaza

Ovo su kodovi koji šalju gumbe u šestnaestom obliku. Tako možete saznati koji gumb na daljinskom upravljaču koji kôd šalje, tako da nema posebnih zahtjeva za korišteni daljinski upravljač, jer ga možete prepoznati i pridružiti bilo kojem. Usput, ovo je ideja za projekt obučenog univerzalnog daljinskog upravljača, takvi su prodani i ranije. Ali sada u doba interneta, količina tehnologije koja se kontrolira na ovaj način smanjuje se svake godine.

I pomoću ovog koda možete prepoznati signale i upravljati opterećenjem:

#include "IRremote.h"

IRrecv neodcv (2); // naznačiti izlaz na koji je prijemnik spojen

decode_resultati rezultata;

poništavanje postave () {

ircv.enableIRIn (); // pokrenuti prijem

}

void petlja () {

if (nere.vode kod (i rezultati)) {// ako su podaci došli

prebaciti (rezultati. vrijednost) {

kućište 0xFFA857:

digitalWrite (13, VISOKO);

razbiti;

slučaj 0xFFE01F:

digitalWrite (13, NISKO);

razbiti;

    }   

ircv.resume (); // prihvatiti sljedeću naredbu

  }

}

Glavna stvar u kodu je prepoznavanje pomoću funkcije Switch, ponekad ih nazivaju "prekidač". To je analogna granama if, ali ima ljepši oblik za percepciju. Slučaj - ovo su opcije, "ako stigne takav kod, onda ..." Kod kontrolira 13 pinova za određene signale. Podsjetim da je ugrađeni LED na ploči ARDUINO spojen na pin 13, tj. autor koda upravljao LED.

Pomoću tranzistora napajanja (što smo prethodno objavili u dva članka) možete kontrolirati bilo šta koristeći visoki ili niski digitalni pin ovdje i ovdje) s opterećenjem istosmjerne struje ili preko trijaca i pogonskog sklopa za tok s istosmjernom strujom možete koristiti i releje i kontaktore, općenito, čitavo polje za maštu.


Prijem i prijenos radio signala

Za upotrebu s mikrokontrolerima uobičajeni su odašiljači s radnim frekvencijama od 433 MHz ili 315 MHz, mogu postojati i druge frekvencije, ovisno o pojedinoj ploči, ali one su najčešće. Sustav se sastoji od dva čvora - prijemnika i odašiljača, što je i logično.

Prijem i prijenos radio signala

Na slici je odašiljač prikazan gore desno, a prijemnik u donjem lijevom kutu. Njihovo ime za pretraživanje: 433MHz radio modul, MX-05V / XD-RF-5V (prijemnik i predajnik).

Izljev, kao što je obično kod modula, je oslikan na ploči, poput odašiljača:

Radio odašiljač

Prijemnik i nije tako očigledan jer podaci na tiskanoj ploči pišu se preko dva pina, u stvari jedan od njih se ne koristi.

Radio prijemnik

Na primjer, dajemo dijagram i kôd za uključivanje LED-a s jedne Arduino ploče spojene na drugu sličnu ploču, bez žica. Prijemnik i odašiljač na isti su način povezani na obje ploče:

Prijemnik i odašiljač na ploči

uređaj

modul

Arduino igle

prijamnik

VCC

GND

PODACI

+ 5V

GND

2

odašiljač

VCC

GND

PODACI

+ 5V

GND

2 

Zatim trebate povezati biblioteku RCswitch.h u Arduino IDE

Za početak pišemo program odašiljača:

#include

RCSwitch mySwitch = RCSwitch(); // stvoriti objekt za rad s prednjim dijelom

poništavanje postave () {

    mySwitch.enableTransmit(2); // reći programu na koji je priključen kanal s informacijama

}

void petlja () {

mySwitch.send (B0100,4);

kašnjenje (1000);

mySwitch.send (B1000, 4);

    kašnjenje (1000);

} 

Odašiljač može prenijeti binarni kod, ali njegove vrijednosti mogu se zapisati u decimalnom obliku.

mySwitch.send (B0100,4);

i

mySwitch.send (B1000, 4);

ovo su naredbe za prijenos, mySwitch je ime odašiljača koje smo naznačili na početku koda, a send je naredba za prijenos. Argumenti za ovu funkciju su:

Naziv odašiljača.send (vrijednost, veličina paketa impulsa koji se šalju u zrak);

B1000 - simbol B - znači binarni, mogao bi se zapisati kao broj 8, tj. u decimalnom zapisu. Druga je mogućnost bila napisati "1000" kao niz (u navodnicima).

Zatim upisujemo šifru za prijemnik (upaljen je u ploču na koju je prijemnik spojen):

#include

RCSwitch mySwitch = RCSwitch ();

poništavanje postave () {

pinMode (3, IZLAZ);

mySwitch.enableReceive (0);

}

void petlja () {

ako (mySwitch.available ()) {

int vrijednost = mySwitch.getReceivedValue ();

ako je (vrijednost == B1000)

digitalWrite (3, HIGH);

drugo ako (vrijednost == B0100)

digitalWrite (3, NISKO);

mySwitch.resetAvailable ();

    }

}

Ovdje izjavljujemo da je prihvaćena vrijednost pohranjena u varijabli Vrijednosti u nizu mySwitch.getReceivedValue (). A činjenicu da je prijemnik spojen na 2. pin opisana je ovdje mySwiitch.enableReceive (0).

Ostatak koda je osnovni, ako je primljen signal 0100, tada je pin broj 3 postavljen na visoko (log. Jedinica), a ako je 1000, onda na nizak (log. Nula).

Pitam se:

U retku mySwitch.enableTransmit (0) kažemo programu da je prijemnik spojen na 2. pin i da je uključen način prijema. Oni koji su pažljiviji primijetili su da argument ove metode nije pin broj „2“, već „0“, činjenica je da metoda enableTransmit (broj) ne prihvaća pin broj, već broj prekida, već u atmega328, koji je stavljen na Arduino Uno, nano, promini i nekolicina drugih, na drugom pinu (PortD pin PD2) visi prekid s brojem nula. To možete vidjeti u Atmega pinoutu primjenjivom na Arduino ploču, a brojevi igle su ispisani u ružičastim okvirima.

Atmega pinout

Ova metoda odašiljanja i primanja vrlo je jednostavna i jeftina; par prijamnika i odašiljača košta oko 1,5 dolara u trenutku pisanja.


Wi-Fi, Adruino i ESP8266

Za početak, ESP8266 je mikrokontroler s hardverskom podrškom za Wi-Fi, Prodaje se kao zasebni čip, a lemljen je na ploču, kao arduino. Ima 32-bitni kernel, programira se preko serijskog ulaza (UART).

Ploče obično imaju 2 ili više besplatnih GPIO pinova i uvijek postoje igle za firmver, to se mora učiniti preko USB do serijskog adaptera. Putem popisa naredbi koje upravlja AT timovi mogu se naći na službenom web mjestu ESP8266 i na githubu.

ESP8266

Postoji zanimljivija opcija, NodeMCU ploče, imaju mogućnost bljeska preko USB-a, jer USB-UART pretvarač je već na ploči, obično je izrađen na CP2102 čipu. Node MCU je firmver, nešto poput operativnog sustava, projekt temeljen na skriptu jeziku Lua.

NodeMCU ploča

Ažuriranje softvera može izvoditi Lua skripte bilo prihvaćanjem na serijski ulaz ili reprodukcijom algoritama pohranjenih u Flash memoriji.

Usput, ima vlastiti datotečni sustav, iako u njemu nema direktorija, tj. samo datoteke bez mapa. U memoriji se mogu pohraniti ne samo skripte, već i različiti podaci, tj. ploča može pohraniti, na primjer, podatke snimljene od senzora.

Ploča radi s sučeljima:

  • 1-Wire;

  • I2C;

  • SPI;

  • UART.

Ima čitav niz funkcija:

  • modul za šifriranje;

  • planer zadataka;

  • sat u stvarnom vremenu;

  • protokol sinkronizacije sata putem internetskog SNTP-a;

  • brojila;

  • ADC kanal (jedan);

  • reproduciranje audio datoteka;

  • generiraju na izlazima PWM signal (do 6);

  • koristite utičnice, postoji podrška za FatFS, tj. možete povezati SD kartice i tako dalje.

ESP-12E

Evo kratkog popisa s čime odbor može raditi:

  • akcelerometri ADXL345;

  • HMC5883L magnetometri

  • žiroskopi L3G4200D;

  • senzori temperature i vlage AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • senzori temperature, vlage, atmosferskog tlaka BME280;

  • senzori temperature i atmosferskog tlaka BMP085;

  • mnogi zasloni koji rade na I2C, SPI autobusima. Sa sposobnošću za rad s različitim fontovima;

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

  • pametne LED i LED kontroleri - WS2812, tm1829, WS2801, WS2812.

Osim upotrebe jezika Lua, ploču možete programirati ispod Arduino IDE-a.

ESP8266 može se koristiti kao samostalni uređaj ili kao modul za bežičnu komunikaciju s Arduinom.

Modul za bežičnu komunikaciju s Arduinom

Razmatranje svih funkcija i značajki ove ploče uzet će čitav niz članaka.

Dakle, ova je ploča odlična opcija za daljinsko upravljanje putem Wi-Fi-ja. Opseg je ogroman, na primjer, za korištenje pametnog telefona kao upravljačke ploče za improvizirani radio kontrolirani stroj ili quadrocopter, daljinsko upravljanje osvjetljenjem, do uređenja mreža za cijelu kuću i upravljanja svakom utičnicom, svjetiljkom itd. kad bi samo bilo dovoljno igle.

Najjednostavniji način rada s mikrokontrolerom je uporaba jedne ploče ESP8266. Ispod je dijagram jednostavne utičnice za wi-fi.

Shema najjednostavnijeg wifi utičnice

Da biste sastavili ovaj krug, potreban vam je relejni modul, ili konvencionalni rele, koji je spojen na pin preko tranzistora. Prvo vam treba program za pametni telefon RoboRemoFree,. U njemu ćete konfigurirati vezu s ESP-om i napraviti sučelje za kontrolu utičnice. Da biste opisali kako ga koristiti, trebate napisati zaseban članak, pa sada zanemarimo ovaj materijal.

U ESP učitavamo sljedeći firmver, kroz ESPlorer program (program za rad s pločom)

--Wifi AP Postavljanje

wifi.setmode (wifi.STATIONAP)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

wifi.ap.config (cfg)

--Set Pin mod

my_pin_nummber = 1

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

gpio.mode (my_pin_nummber, gpio.OPENDRAIN)

--Izraditi poslužitelj

sv = net.createServer (net.TCP)

prijemnik funkcija (sck, podaci)

ako je string.sub (podaci, 0, 1) == "1" tada

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

gpio.write (my_pin_nummber, gpio.LOW)

drugo

ako je string.sub (podaci, 0, 1) == "0" tada

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

gpio.write (my_pin_nummber, gpio.HIGH)

kraj

kraj

ispis (podaci)

kraj

ako je sv

sv: slušanje (333, funkcija (conn)

conn: on ("primi", prijemnik)

conn: send ("Pozdrav!")

kraj)

kraj

--Izraditi HTTP poslužitelj

http = net.createServer (net.TCP)

funkcija prima_http (sck, podaci)

ispis (podaci)

lokalni zahtjev = string.match (podaci, "([^ \ r, \ n] *) [\ r, \ n]", 1)

ako je zahtjev == 'GET / na HTTP / 1.1' tada

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

gpio.write (my_pin_nummber, gpio.LOW)

kraj

ako je zahtjev == 'GET / off HTTP / 1.1' tada

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

gpio.write (my_pin_nummber, gpio.HIGH)

kraj

sck: on („poslan“, function (sck) sck: close () skupljati smeće () kraj)

lokalni odgovor = "HTTP / 1.0 200 OK \ r \ nServer: NodeMCU na ESP8266 \ r \ nContent Type: text / html \ r \ n \ r \ n" ..

" NodeMCU na ESP8266 " ..

"

NodeMCU na ESP8266

" ..

"


" ..

" Uključeno Isključeno " ..

" "

sck: poslati (odgovor)

kraj

ako http onda

http: slušaj (80, funkcija (conn)

conn: on ("primi", primi_http)

kraj)

kraj

ispis ("Započeto.")

Sada možete kontrolirati program bilo iz programa Roboremo, bilo preko bilo kojeg web preglednika, za to trebate upisati IP adresu ploče u adresnu traku u Wi-Fi modu, 192.168.4.1.

U kodu je isječak:

" NodeMCU na ESP8266 " ..

"

NodeMCU na ESP8266

" ..

"


" ..

" Uključeno Isključeno " ..

" "

Ovo je vrsta odgovora koji se postavlja pregledniku prilikom pristupa ploči. Sadrži HTML kod, tj. Najjednostavnija web stranica, slična onoj na kojoj čitate ovaj članak.

Stranica u pregledniku pametnog telefona s Android OS-om

Evo ove stranice, pokrenute u pregledniku pametnog telefona s Android OS-om. Gore navedeno nije potpuna upute, jer bi bila potrebna ogromna količina, ako vas zanimaju ove informacije - pišite komentare i definitivno ćemo obaviti pregled i napisati članak o radu s njim.

Pogledajte također na elektrohomepro.com:

  • Povezivanje i programiranje Arduino-a za početnike
  • Metode za čitanje i upravljanje Arduino I / O portovima
  • Što su Nextion zasloni i kako raditi s njima?
  • Programirajući mikrokontroleri u JavaScript: koji odabrati, karakteristike ...
  • Vrste i raspored AVR mikrokontrolera

  •