kategória: Otthoni automatizálás, Mikrovezérlő áramkörök
Megtekintések száma: 17351
Megjegyzések a cikkhez: 0

Mikrovezérlő távirányító: IR távirányító, Arduino, ESP8266, 433 MHz

 

Az elektromos berendezések távirányításának vagy távirányításának kérdése mindig is volt és releváns, függetlenül attól, hogy vannak-e automatizálási eszközök a rendszerben vagy sem. A távirányítás megszervezéséhez nem számít, ha mikrokontroller, minden a kezelt eszközhöz rendelt szükséges funkcióktól függ. Ebben a cikkben általános információkat talál a mikrovezérlő távirányításáról.

Mikrokontroller távirányító

típusok

A távoli kommunikációnak két fő típusa van:


vezetékes. Ha az egyik helyiségben (vagy nem a helyiségben) található szelepmozgatók vezérlése a kezelőpanelről vagy egy másik helyen található gombos oszlopról történik. Ebben az esetben a vezérlőáramkörök és a szelepmozgatók (relék, kontaktorok, amelyek tartalmaznak mechanizmusokat, például motorokat vagy rendszereket, például világítást) elektromos vezetékes csatlakoztatását biztosítják.


drótnélküli. Ebben a kiviteli alakban nincs szükség a vezérlő és végrehajtó áramkörök elektromos csatlakoztatására. A vezeték nélküli áramkörökben két eszköz van: adó vagy távirányító (RC) és egy vevő, amely a szabályozott áramkör részét képezi. A vezeték nélküli vezérlés viszont két változatban általános:

  • Optikai jel segítségével. Az ilyen rendszerek minden házban vannak, így a TV, a légkondicionáló és az egyéb háztartási készülékek működését vezérelheti.

  • Rádiójelekkel. Már számos lehetőség létezik: Bluetooth, ZigBee, Wi-Fi, 433 MHz-es adó-vevő és egyéb variációk ebben a témában.

Érdemes megjegyezni, hogy modern technikai eszközökkel a mikrovezérlőt vezérelheti a távvezérlőről és az interneten keresztül egy helyi hálózaton vagy a világ bármely pontjáról.



IR távirányító

Megfontolásainkat a legegyszerűbb és klasszikusabb verzióval kezdjük. Készülékvezérlés azáltal, hogy kódot továbbít az IR LED villogási sorrendjéről az eszközre telepített optikai vevőkészülékre. Érdemes megjegyezni, hogy az infravörös spektrum nem látható az emberi szem számára, de a legtöbb fotó- és videokamera látja.

Mivel a legtöbb kamera infravörös képet lát, ellenőrizheti a távirányítók szervizelhetősége. Ehhez egyszerűen irányítsa a távirányítót úgy, hogy a kibocsátó a kamerába nézzen, és nyomja meg a gombokat. Általában egy lila árnyalatú fehér fény látható a képernyőn.

Ennek a vezérlésnek nyilvánvaló hátránya van - a távirányítót a vevő felé kell mutatnia. És ha a távirányítón lévő elemek lemerülnek, akkor is céloznia kell, mivel a műveletek egyre kevesebbé válnak.

Előnyei az egyszerűség, a nagy karbantarthatóság, mind az adó, mind a vevő számára. A részleteket a törött távirányító és a televízió szétszerelésével találhatja meg annak érdekében, hogy ezt alkalmazhassa saját projektjeiben.

Egy tipikus érzékelő a következő. Mivel az optikai jelet veszik, ki kell zárni az idegen fényforrások, például a nap, a világító lámpák és mások bekapcsolását. Érdemes megjegyezni, hogy az infravörös jelet elsősorban 38 kHz frekvencián veszik.

IR érzékelő

Itt található az egyik IR érzékelő specifikációja:

  • vivőfrekvencia: 38 kHz;

  • tápfeszültség: 2,7–5,5 V;

  • áramfelvétel: 50 μA.

És csatlakozási diagramja:

Infravörös érzékelő csatlakoztatási diagramja

A távirányítót bárki használhatja, akinek hasonló működési elve van, a távirányítókat:

  • televíziók;

  • DVD-lejátszók

  • rádió magnók;

  • a modern világítóberendezésekből, például az intelligens csillárokból és a LED-es szalagokból és így tovább.

Vezérlőpult

Íme egy példa egy ilyen érzékelő használatára Arduinoval

Arduino IR érzékelő példa

Annak érdekében, hogy a mikrokontroller, esetünkben Arduin, megértse az érzékelő jeleit, az IRremote.h könyvtárat kell használnia. Példa arra, hogy miként lehet leolvasni egy jelet egy érzékelőtől, itt található egy kód, amellyel felismerhetjük őket a mikrokontroller soros portjának az Arduino IDE-ből történő leolvasásával:

#include "IRremote.h" // Csatlakoztassa a könyvtárat az IR-jel működéséhez.

IRrecv irrecv (2); // jelzi azt a kimenetet, amelyhez a vevő csatlakozik

decode_results eredmények;

érvénytelen beállítás () {

Serial.begin (9600); // állítsa be a COM port sebességét

irrecv.enableIRIn (); // indítsa el a recepciót

}

void loop () {

if (irrecv.decode (és eredmények)) {// ha az adatok megérkeztek

Serial.println (eredmények.érték, HEX); // adatok nyomtatása

irrecv.resume (); // fogadja el a következő parancsot

  }

}

Ennek eredményeként, amikor villog az arduino, és a távirányítóval „ragyog” a vevőkészülékbe, a következő képet fogjuk látni a soros port monitorján:

Soros port monitor

Ezek olyan kódok, amelyek hexadecimális formában küldik el a gombokat. Így megtudhatja, hogy a távirányító melyik gombját küldi el, tehát nincs külön követelmény a használt távirányítóra, mert bármilyen felismerhető és társítható. Mellesleg, ez egy ötlet egy képzett univerzális távirányító projektjére, amelyet korábban adtak el. De az internet korában az így irányított technológia mennyisége évente csökken.

És ezzel a kóddal felismerheti a jeleket és kezelheti a terhelést:

#include "IRremote.h"

IRrecv irrecv (2); // jelzi azt a kimenetet, amelyhez a vevő csatlakozik

decode_results eredmények;

érvénytelen beállítás () {

irrecv.enableIRIn (); // indítsa el a recepciót

}

void loop () {

if (irrecv.decode (és eredmények)) {// ha az adatok megérkeztek

kapcsoló (eredmények.érték) {

0xFFA857 eset:

digitalWrite (13, HIGH);

break;

0xFFE01F eset:

digitalWrite (13, LOW);

break;

    }   

irrecv.resume (); // fogadja el a következő parancsot

  }

}

A kódban a legfontosabb a felismerés a kapcsoló funkción keresztül, ezeket néha „kapcsolódoboznak” hívják. Ez az if ágak analógja, de az észlelésnek szebb formája van. Eset - ezek a lehetőségek, "ha egy ilyen kód megérkezik, akkor ..." A kód bizonyos jelek 13 érintkezőjét vezérli. Hadd emlékeztessem önöket, hogy az ARDUINO táblán a beépített LED a 13. érintkezőhöz van csatlakoztatva, azaz a kód szerzője irányította a LED-et.

Bármilyen magas vagy alacsony digitális tű segítségével irányíthat egy teljesítménytranzisztoron keresztül (amelyet korábban két cikkben tárgyaltunk) itt és itt) egyenáramú terheléssel, vagy egy triac és egy meghajtó révén egyenáramú terheléssel, relék és kontaktorok is használhatók, általában egy teljes mezőt a képzelethez.


Rádiójelek vétele és továbbítása

A mikrovezérlőkkel történő alkalmazáshoz a 433 MHz vagy a 315 MHz működési frekvenciájú adókészülékek gyakoriak, lehetnek más frekvenciák is, az adott kártyától függően, de ezek a leggyakoribbak. A rendszer két csomópontból áll - egy vevőből és egy adóból, ami logikus.

Rádiójelek vétele és továbbítása

A képen az adó jobb felső sarkában, a vevő bal alsó részén látható. A keresésük neve: 433MHz rádiómodul, MX-05V / XD-RF-5V (vevő és adó).

Az ábrát, amint ez a modulokban gyakran fordul elő, a táblára festették, mint az adó:

Rádió adó

A vevő nem annyira nyilvánvaló, mert az adatok a nyomtatott áramköri kártyán két érintkezőre vannak írva, valójában egyikük nincs felhasználva.

Rádióvevő

Például adunk diagramot és kódot a LED bekapcsolásához az egyik Arduino tábláról egy másik hasonló táblához csatlakoztatva, vezetékek nélkül. A vevő és az adó azonos módon csatlakozik mindkét táblához:

A vevő és az adó a táblákon

eszköz

modul

Arduino csapok

vevő

VCC

GND

DATA

+ 5 V

GND

2

adó

VCC

GND

DATA

+ 5 V

GND

2 

Ezután csatlakoznia kell az RCswitch.h könyvtárat az Arduino IDE-hez

A kezdéshez az adó programot írjuk:

# beletartozik az

RCSwitch mySwitch = RCSwitch(); // hozzon létre egy objektumot, amely működik a kezelőfelülettel

érvénytelen beállítás () {

    mySwitch.enableTransmit(2); // mondja el azt a programot, amelyhez az információs csatorna csatlakozik

}

void loop () {

mySwitch.send (B0100,4);

késleltetés (1000);

mySwitch.send (B1000, 4);

    késleltetés (1000);

} 

Az adó képes bináris kódot továbbítani, de értékei tizedes formában írhatók.

mySwitch.send (B0100,4);

és

mySwitch.send (B1000, 4);

ezek az átviteli parancsok, a mySwitch az adó neve, amelyet a kód elején jeleztünk, a send pedig az átviteli parancs. Ennek a függvénynek az érvei a következők:

Adó neve.send (érték, a levegőbe küldött impulzusok csomagmérete);

A B1000 - a B szimbólum - bináris, 8-ig írható, azaz tizedes jelöléssel. Egy másik lehetőség az volt, hogy az „1000” karakterlánccal (idézőjelben) írok.

Ezután megírjuk a vevő kódját (azt behelyezzük a táblába, amelyhez a vevő csatlakozik):

# beletartozik az

RCSwitch mySwitch = RCSwitch ();

érvénytelen beállítás () {

pinMode (3, OUTPUT);

mySwitch.enableReict (0);

}

void loop () {

if (mySwitch.available ()) {

int érték = mySwitch.getReceptiondValue ();

if (érték == B1000)

digitalWrite (3, HIGH);

egyébként ha (érték == B0100)

digitalWrite (3, LOW);

mySwitch.resetAvailable ();

    }

}

Itt kijelentjük, hogy az elfogadott értéket az Érték változó tárolja a mySwitch.getReceptiondValue () karakterláncban. És azt a tényt, hogy a vevő csatlakozik a 2. tűhöz, a mySwiitch.enableRecept (0) írja le.

A kód többi része elemi, ha a 0100 jel érkezik, akkor a 3. PIN-kódot magasra (log. Egység), és ha 1000-et, akkor alacsonyra (log. Nulla) állítják.

Vajon:

A mySwitch.enableTransmit (0) sorban azt mondjuk a programnak, hogy a vevő csatlakozik a 2. tűhöz és a vételi mód be van kapcsolva. A legfigyelmesebbek észrevették, hogy ennek a módszernek az érve nem a „2”, hanem a „0” PIN-kód, az a tény, hogy az enableTransmit módszer (szám) nem a PIN-kódot, hanem a megszakító számot, hanem az Atmega328-ban fogadja el, amelyet Arduino Uno, nano, promini és még sokan mások, a második tűn (PortD PIN2-es PIN-kód) egy megszakítást lóg nulla számmal. Ezt láthatja az Arduino táblára alkalmazható Atmega pinout-ban, a PIN-kódok rózsaszínű négyzetbe vannak írva.

Atmega pinout

Ez az átviteli és vételi módszer nagyon egyszerű és olcsó; egy vevő és adó pár körülbelül 1,5 dollárba kerül az írás idején.


Wi-Fi, Adruino és ESP8266

Először: Az ESP8266 egy mikrokontroller, amely hardver támogatással rendelkezik a Wi-Fi számára, Külön forgácsként adják el, és forrasztják a táblára, mint egy arduino. 32 bites kernelrel rendelkezik, soros porton (UART) keresztül programozva.

A táblák általában 2 vagy több ingyenes GPIO érintkezőt tartalmaznak, és mindig vannak tűk a firmware-hez, ezt USB-soros adapterrel kell megtenni. Az AT csapatok kezelik, a parancsok teljes listája megtalálható az ESP8266 hivatalos weboldalon és a githubon.

ESP8266

Van még egy érdekes lehetőség, a NodeMCU táblák, képesek USB-n keresztül villanni, mert Az USB-UART konverter már van a táblán, általában egy CP2102 chipen készülnek. A csomópont MCU egy firmware, valami olyan, mint egy operációs rendszer, a Lua szkriptnyelvén alapuló projekt.

NodeMCU Board

A firmware a Lua szkripteket végrehajthatja, akár soros porton történő elfogadással, akár a Flash memóriában tárolt algoritmusok reprodukálásával.

Mellesleg, saját fájlrendszerrel rendelkezik, bár nincsenek benne könyvtárak, azaz csak mappák nélküli fájlok. A memóriában nem csak a szkriptek tárolhatók, hanem a különféle adatok is, azaz a tábla tárolhatja például érzékelőkkel rögzített információkat.

A tábla interfészekkel működik:

  • 1-Wire;

  • I2C;

  • SPI;

  • UART.

Számos funkcióval rendelkezik:

  • titkosító modul;

  • feladatütemező;

  • valós idejű óra;

  • óra szinkronizálási protokoll az Internet SNTP-n keresztül;

  • időzítő;

  • ADC csatorna (egy);

  • audio fájlok lejátszása;

  • generál a kimeneteken PWM jelet (legfeljebb 6);

  • használjon foglalatot, támogatást élvez a FatFS, azaz csatlakoztathat SD kártyákat és így tovább.

ESP-12E

És itt van egy rövid lista, amellyel a fórum működhet:

  • gyorsulásmérők ADXL345;

  • HMC5883L magnetométerek

  • giroszkópok L3G4200D;

  • hőmérsékleti és páratartalom érzékelők AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • hőmérséklet, páratartalom, légköri nyomás érzékelők; BME280;

  • hőmérséklet- és légköri nyomásérzékelők BMP085;

  • sok kijelző működik az I2C, SPI buszokon. Különböző betűtípusokkal való munka képessége;

  • A TFT az ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

  • intelligens LED-ek és LED-vezérlők - WS2812, tm1829, WS2801, WS2812.

A Lua nyelv használatán kívül az Arduino IDE alatt programozhatja a táblát.

Az ESP8266 önálló eszközként vagy modulként használható az Arduino-val való vezeték nélküli kommunikációhoz.

Modul az Arduino vezeték nélküli kommunikációhoz

A fórum összes funkciójának és tulajdonságainak figyelembe vétele cikkek egész sorozatát fogja igényelni.

Tehát ez a kártya kiváló lehetőség a Wi-Fi-vel történő távvezérléshez. Hatalmas a lehetősége, ha például okostelefonot használunk rádióvezérelt rádióvezérelt gép vagy négykerekű robot vezérlőpultjaként, távirányító világítás, egész házak hálózatának megszervezéséig, valamint az összes aljzat, lámpa stb. kezeléséig. ha csak lenne elég csap.

A mikrokontrollerrel való munka egyszerűbb módja az egyetlen ESP8266 kártya használata. Az alábbiakban egy egyszerű wi-fi csatlakozó ábrája látható.

A legegyszerűbb wifi aljzat vázlata

Ennek az áramkörnek a összeszereléséhez relékodulra vagy egy hagyományos relére van szükség, amely egy csaphoz tranzisztoron keresztül csatlakozik. Először szükség van egy programra egy RoboRemoFree okostelefonhoz. Ebben konfigurálja a kapcsolatot az ESP-vel, és felületet készít a kimenet vezérléséhez. Használatának leírása érdekében külön cikket kell írnia, ezért hagyjuk el ezt az anyagot.

Az ESP-ben az alábbi firmware-t töltjük be, az ESPlorer programon keresztül (a fórumon történő munka programja)

--Wifi AP Settup

wifi.setmode (wifi.STATIONAP)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

wifi.ap.config (cfg)

- Beállítása Pin módban

my_pin_nummber = 1

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

gpio.mode (my_pin_nummber, gpio.OPENDRAIN)

--Kiszolgáló létrehozása

sv = net.createServer (net.TCP)

funkció vevő (sck, adat)

ha string.sub (adatok, 0, 1) == "1", akkor

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

gpio.write (my_pin_nummber, gpio.LOW)

más

ha string.sub (adatok, 0, 1) == "0", akkor

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

gpio.write (my_pin_nummber, gpio.HIGH)

vég

vég

nyomtatás (adatok)

vég

ha sv, akkor

sv: figyelj (333, funkció (csatlakozás))

conn: be ("fogad", vevő)

conn: küldés ("Hello!")

vége)

vég

- Hozzon létre HTTP szervert

http = net.createServer (net.TCP)

függvény fogadás_http (sck, adatok)

nyomtatás (adatok)

helyi kérés = string.match (adatok, "([^ \ r, \ n] *) [\ r, \ n]", 1)

ha kérés == 'GET / on HTTP / 1.1', akkor

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

gpio.write (my_pin_nummber, gpio.LOW)

vég

ha kérés == 'GET / off HTTP / 1.1', akkor

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

gpio.write (my_pin_nummber, gpio.HIGH)

vég

sck: be ("elküldve", function (sck) sck: bezárás () collectiongarbage () end)

helyi válasz = "HTTP / 1.0 200 OK \ r \ nSzerver: NodeMCU az ESP8266-on \ r \ nTartalom típusa: text / html \ r \ n \ r \ n" ..

" NodeMCU az ESP8266-on " ..

"

NodeMCU az ESP8266-on

"

"


" ..

" Be Ki " ..

" "

sck: küldés (válasz)

vég

ha http, akkor

http: figyelj (80, funkció (csatlakozás))

conn: on ("fogad", fogadás_http)

vége)

vég

print ("Started".)

Mostantól a Roboremo programból vagy bármilyen webböngészőből vezérelheti a programot, ehhez be kell írnia a tábla IP-címét a címsorba wi-fi módban, 192.168.4.1.

Van egy kódrészlet a kódban:

" NodeMCU az ESP8266-on " ..

"

NodeMCU az ESP8266-on

"

"


" ..

" Be Ki " ..

" "

Ez egyfajta válasz, amelyet a böngésző kap, amikor belép a fórumba. HTML kódot tartalmaz, azaz A legegyszerűbb weboldal, hasonló ahhoz, amelyen ezt a cikket olvassa.

Az Android operációs rendszert futtató okostelefon böngészőjének oldala

Itt van ez az oldal, amelyet az Android operációs rendszert futtató okostelefon böngészőjében indítottak el. A fentiek nem teljes utasítás, mivel ha ezen információk iránt érdeklődik, akkor hatalmas összegbe kerülne, írjon megjegyzéseket, és feltétlenül áttekintetjük egy cikket, és írunk egy cikket az ezzel való együttműködésről.

Lásd még az i.electricianexp.com oldalon:

  • Az Arduino csatlakoztatása és programozása kezdőknek
  • Az Arduino I / O portok olvasásának és kezelésének módszerei
  • Mik a Nextion kijelzők és hogyan kell velük együtt dolgozni?
  • Programozható mikrovezérlők JavaScript-ben: melyiket választani, jellemzők ...
  • Az AVR mikrovezérlők típusai és elrendezése

  •