luokat: Kodin automaatio, Mikrokontrolleripiirit
Katselukuvien lukumäärä: 17351
Kommentit artikkeliin: 0

Mikrokontrollerin kaukosäädin: IR-kaukosäädin, Arduino, ESP8266, 433 MHz

 

Kysymys sähkölaitteiden kauko- tai kauko-ohjauksesta on aina ollut ja tulee olemaan ajankohtainen riippumatta siitä, onko järjestelmässä automaatiotyökaluja vai ei. Kauko-ohjauksen järjestämisessä ei ole mitään merkitystä mikro, kaikki riippuu hallitulle laitteelle määritetyistä tarpeellisista toiminnoista. Tässä artikkelissa opit yleisiä tietoja mikro-ohjaimen etäohjauksesta.

Mikrokontrollerin kaukosäädin

tyypit

Etäviestintää on kahta päätyyppiä:


kiinteä. Kun yhdessä huoneessa (tai ei huoneessa) sijaitsevien toimilaitteiden ohjaus tapahtuu ohjauspaneelista tai toisessa paikassa sijaitsevasta nappipylväästä. Tässä tapauksessa säätöpiirien ja toimilaitteiden (releet, kontaktorit, jotka sisältävät mekanismeja, kuten moottorit tai järjestelmät, esimerkiksi valaistus) sähköjohdinliitäntä tarjotaan.


langaton. Tässä suoritusmuodossa ohjaus- ja toimeenpanopiirien sähköistä kytkemistä ei tarvita. Langattomissa piireissä on kaksi laitetta: lähetin tai kaukosäädin (RC) ja vastaanotin, joka on osa ohjattua piiriä. Langaton ohjaus puolestaan ​​on yleinen kahdessa versiossa:

  • Optisella signaalilla. Tällaisia ​​järjestelmiä on jokaisessa kodissa, joten hallitset television, ilmastointilaitteen ja muiden kodinkoneiden toimintaa.

  • Radiosignaalilla. Vaihtoehtoja on jo useita: Bluetooth, ZigBee, Wi-Fi, 433 MHz -lähetinvastaanottimet ja muut variaatiot tästä aiheesta.

On syytä huomata, että nykyaikaisilla teknisillä keinoilla voit hallita mikro-ohjainta sekä kaukosäätimestä että Internetin kautta paikallisessa verkossa tai jollakin muualla maailmassa.



IR-kaukosäädin

Aloitamme harkinnan yksinkertaisimmalla ja klassisimmalla versiolla. Laitteen ohjaus lähettämällä koodi IR-LED: n välkkymissekvenssistä laitteeseen asennettuun optiseen vastaanottimeen. On syytä huomata, että infrapunaspektri ei ole näkyvissä ihmisen silmälle, mutta suurin osa valokuva- ja videokameroista näkee sen.

Koska useimmat kamerat näkevät infrapunan, voit tarkistaa kaukosäätimien käytettävyys. Suorita tämä vain osoittamalla kaukosäädin niin, että säteilijä katsoo kameraan ja paina painikkeita. Yleensä valkoinen violetti sävy on näkyvissä näytöllä.

Tällä säätimellä on selvä haitta - sinun on osoitettava kaukosäädin vastaanottimeen. Ja jos kaukosäätimen paristot ovat loppuneet, sinun on myös suunnattava, koska toiminnot ovat yhä vähemmän.

Etuja ovat yksinkertaisuus, korkea huollettavuus, sekä lähetin että vastaanotin. Löydät yksityiskohdat purkamalla rikki kaukosäätimet ja televisiot soveltaaksesi niitä omissa projekteissasi.

Tyypillinen anturi on seuraava. Koska optista signaalia vastaanotetaan, on välttämätöntä sulkea pois laukaisu vieraista valonlähteistä, kuten aurinko, valaistuslamput ja muut. On myös syytä huomata, että infrapunasignaali vastaanotetaan pääasiassa 38 kHz: n taajuudella.

IR-anturi

Tässä on yhden IR-anturin tekniset tiedot:

  • kantoaaltotaajuus: 38 kHz;

  • syöttöjännite: 2,7 - 5,5 V;

  • virrankulutus: 50 μA.

Ja sen kytkentäkaavio:

IR-anturin kytkentäkaavio

Kauko-ohjainta voi käyttää kuka tahansa, jolla on samanlainen toimintaperiaate, kauko-ohjaimet:

  • televisiot;

  • DVD-soittimet

  • radionauhurit;

  • moderneista valaistuslaitteista, kuten älykkääistä kattokruunuista ja LED-nauhoista ja muusta.

Ohjauspaneeli

Tässä on esimerkki tällaisen anturin käytöstä Arduinon kanssa

Arduino IR-anturi-esimerkki

Jotta mikrokontrolleri, tässä tapauksessa Arduin, ymmärtäisi anturin signaalin, sinun on käytettävä IRremote.h-kirjastoa. Esimerkki siitä, kuinka lukea anturin signaali, tässä on koodi niiden tunnistamiseksi lukemalla mikro-ohjaimen sarjaportti Arduino IDE: ltä:

# sisällytä "IRremote.h" // yhdistä kirjasto toimimaan IR-signaalin kanssa.

IRrecv irrecv (2); // osoita lähtö, johon vastaanotin on kytketty

dekoodaustulokset;

tyhjä asennus () {

Serial.begin (9600); // aseta COM-portin nopeus

irrecv.enableIRIn (); // aloita vastaanotto

}

tyhjä silmukka () {

if (irrecv.decode (& results)) {// jos tiedot tulivat

Serial.println (tulokset.arvo, HEX); // tulosta tiedot

irrecv.resume (); // hyväksy seuraava komento

  }

}

Seurauksena on, että kun salamatat arduinon ja ala “loistaa” vastaanottimeen kaukosäätimellä, näemme seuraavan kuvan sarjaporttinäytössä:

Sarjaporttinäyttö

Nämä koodit lähettävät painikkeet heksadesimaalimuodossa. Näin voit selvittää, mikä kaukosäätimen painike mikä koodia lähettää, joten käytetylle kaukosäätimelle ei ole erityisiä vaatimuksia, koska voit tunnistaa ja yhdistää minkä tahansa. Muuten, tämä on idea koulutetun yleiskaukosäätimen projektille, sellainen myytiin aikaisemmin. Mutta nyt Internetin aikakaudella tällä tavalla hallitun tekniikan määrä vähenee joka vuosi.

Ja tällä koodilla voit tunnistaa signaalit ja hallita kuormaa:

#include "IRremote.h"

IRrecv irrecv (2); // osoita lähtö, johon vastaanotin on kytketty

dekoodaustulokset;

tyhjä asennus () {

irrecv.enableIRIn (); // aloita vastaanotto

}

tyhjä silmukka () {

if (irrecv.decode (& results)) {// jos tiedot tulivat

kytkin (tulokset.arvo) {

tapaus 0xFFA857:

digitalWrite (13, HIGH);

break;

tapaus 0xFFE01F:

digitalWrite (13, LOW);

break;

    }   

irrecv.resume (); // hyväksy seuraava komento

  }

}

Koodin tärkein asia on tunnistus kytkimen kautta, joskus niitä kutsutaan “kytkinkoteloksi”. Se on analoginen if-oksille, mutta sillä on kauniimpi muoto havainnointiin. Tapaus - nämä ovat vaihtoehtoja, "jos sellainen koodi saapuu, niin ..." Koodi ohjaa tiettyjen signaalien 13 nastaa. Muistutan, että ARDUINO-kortin sisäänrakennettu LED on kytketty napaan 13, ts. koodin kirjoittaja ohjasi LEDiä.

Voit hallita mitä tahansa korkealla tai matalalla digitaalisella nastalla virtatransistorin (jota käsittelemme kahdessa artikkelissa aikaisemmin) kautta täällä ja täällä) tasavirtakuormalla tai triacin ja sitä varten tarkoitetun ohjaimen kautta tasavirtakuormalla, voit myös käyttää releitä ja kontaktoreita, yleensä koko mielikuvituksen kenttää.


Radiosignaalin vastaanotto ja lähetys

Mikrokontrollerien kanssa käytettävät lähettimet, joiden toimintataajuudet ovat 433 MHz tai 315 MHz, ovat yleisiä, voi olla muita taajuuksia, riippuen tietystä kortista, mutta nämä ovat yleisimmät. Järjestelmä koostuu kahdesta solmusta - vastaanottimesta ja lähettimestä, mikä on loogista.

Radiosignaalin vastaanotto ja lähetys

Kuvassa lähetin on esitetty oikeassa yläkulmassa ja vastaanotin vasemmassa alakulmassa. Heidän nimensä hakuun: 433MHz radiomoduuli, MX-05V / XD-RF-5V (vastaanotin ja lähetin).

Numero, kuten usein moduulien kohdalla, on maalattu taululle lähettimen tavoin:

Radiolähetin

Vastaanotin ei ole niin ilmeinen, koska painetun piirilevyn tiedot on kirjoitettu kahden nastaan, itse asiassa yhtä niistä ei käytetä.

Radiovastaanotin

Annamme esimerkiksi kaavion ja koodin LEDin kytkemiseksi päälle yhdestä samanlaisesta kortista kytketystä Arduino-kortista ilman johtoja. Vastaanotin ja lähetin on kytketty samoin molemmiin kortteihin:

Vastaanotin ja lähetin taulukoilla

laite

moduuli

Arduino nastat

vastaanotin

VCC

GND

DATA

+ 5 V

GND

2

lähetin

VCC

GND

DATA

+ 5 V

GND

2 

Seuraavaksi sinun on kytkettävä RCswitch.h-kirjasto Arduino IDE: hen

Aluksi kirjoitamme lähetinohjelman:

# sisällytä

RCSwitch mySwitch = RCSwitch(); // luo objekti käyttöliittymän kanssa

tyhjä asennus () {

    mySwitch.enableTransmit(2); // kerro ohjelmalle, johon informaatiokanava on kytketty

}

tyhjä silmukka () {

mySwitch.send (B0100,4);

viive (1000);

mySwitch.send (B1000, 4);

    viive (1000);

} 

Lähetin voi lähettää binaarikoodin, mutta sen arvot voidaan kirjoittaa desimaalimuodossa.

mySwitch.send (B0100,4);

ja

mySwitch.send (B1000, 4);

nämä ovat siirtokomennot, mySwitch on lähettimen nimi, jonka ilmoitimme koodin alussa, ja lähetys on siirtokomento. Tämän funktion argumentit ovat:

Lähettimen nimi.send (arvo, ilmaan lähetettyjen pulssien pakettikoko);

B1000 - symboli B - tarkoittaa binääristä, se voitaisiin kirjoittaa numerolla 8, ts. desimaalimuodossa. Toinen vaihtoehto oli kirjoittaa ”1000” merkkijonona (lainausmerkeissä).

Seuraavaksi kirjoitamme vastaanottimen koodin (se leimataan taululle, johon vastaanotin on kytketty):

# sisällytä

RCSwitch mySwitch = RCSwitch ();

tyhjä asennus () {

pinMode (3, OUTPUT);

mySwitch.enableRevasta (0);

}

tyhjä silmukka () {

if (mySwitch.a available ()) {

int arvo = mySwitch.getReceptiondValue ();

if (arvo == B1000)

digitalWrite (3, HIGH);

muuten jos (arvo == B0100)

digitalWrite (3, LOW);

mySwitch.resetAvaila ();

    }

}

Täällä ilmoitamme, että hyväksytty arvo on tallennettu Arvo-muuttujaan merkkijonoon mySwitch.getReemsdValue (). Ja tosiasia, että vastaanotin on kytketty toiseen tappiin, kuvataan täällä mySwiitch.enableReceive (0).

Loppuosa koodista on elementaarista, jos signaali 0100 vastaanotetaan, nasta 3 asetetaan korkealle (log. Yksikkö) ja jos 1000, niin matalaan (log. Nolla).

Ihmettelen:

Rivillä mySwitch.enableTransmit (0) kerromme ohjelmalle, että vastaanotin on kytketty toiseen tappiin ja vastaanottotila on päällä. Huomaavaisimmat huomasivat, että tämän menetelmän argumentti ei ole nasta numero “2”, vaan “0”, tosiasia on, että enableTransmit-menetelmä (luku) ei hyväksy nastan numeroa, vaan keskeytysnumeroa, mutta atmega328: ssa, joka asetetaan Arduino Uno, nano, promini ja monet muut, toisessa nastassa (PortD-pin PD2) roikkuu keskeytys numerolla nolla. Voit nähdä tämän Arduino-levylle sovellettavassa Atmega-pinoutissa, nastat on kirjoitettu vaaleanpunaisiin ruutuihin.

Atmega-pinout

Tämä lähetys- ja vastaanottomenetelmä on hyvin yksinkertainen ja halpa; vastaanottimen ja lähettimen pari maksaa kirjoittamishetkellä noin 1,5 dollaria.


Wi-Fi, Adruino ja ESP8266

Aluksi ESP8266 on mikro-ohjain, jossa on laitteisto-tuki Wi-Fi: lle, Se myydään erillisenä siruna ja juotettuna levyyn, kuten arduino. Siinä on 32-bittinen ydin, se on ohjelmoitu sarjaportin (UART) kautta.

Taulukoissa on yleensä vähintään 2 ilmaista GPIO-nastaa ja laiteohjelmistoa varten on aina nastat, tämä on tehtävä USB-sarjasovittimen kautta. AT-ryhmien hallinnoima täydellinen luettelo komennoista löytyy viralliselta ESP8266-verkkosivulta ja githubista.

ESP8266

On olemassa mielenkiintoisempi vaihtoehto, NodeMCU-levyt, niillä on kyky salata USB: n kautta, koska USB-UART-muunnin on jo levyllä, yleensä valmistettu CP2102-sirulle. Solmu MCU on laiteohjelmisto, jotain käyttöjärjestelmän kaltaista, projekti, joka perustuu Lua-skriptikielelle.

NodeMCU-hallitus

Laiteohjelmisto voi suorittaa Lua-skriptejä joko hyväksymällä ne sarjaporttiin tai toistamalla Flash-muistiin tallennetut algoritmit.

Muuten, sillä on oma tiedostojärjestelmä, vaikka siinä ei ole hakemistoja, ts. vain tiedostot ilman kansioita. Muistiin voidaan tallentaa paitsi komentosarjoja, myös erilaisia ​​tietoja, ts. kortti voi tallentaa esimerkiksi antureista tallennettua tietoa.

Taulu toimii rajapintojen kanssa:

  • 1-Wire;

  • I2C;

  • SPI;

  • UART.

Sillä on koko joukko toimintoja:

  • salausmoduuli;

  • tehtävien aikataulu;

  • reaaliaikainen kello;

  • kellosynkronointiprotokolla Internet SNTP: n kautta;

  • ajastimet;

  • ADC-kanava (yksi);

  • toista äänitiedostot;

  • tuottaa ulostuloissa PWM-signaalin (jopa 6);

  • käytä pistorasioita, FatFS: lle on tukea, ts. voit kytkeä SD-kortteja ja niin edelleen.

ESP-12E

Ja tässä on lyhyt luettelo siitä, mitä hallitus voi työskennellä:

  • kiihtyvyysmittarit ADXL345;

  • HMC5883L magnetometrit

  • gyroskoopit L3G4200D;

  • lämpötila- ja kosteusanturit AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • lämpötila-, kosteus- ja ilmanpaineanturit BME280;

  • lämpötila- ja ilmanpaineanturit BMP085;

  • monet näytöt toimivat I2C, SPI-väylillä. Kyky työskennellä eri kirjasimilla;

  • TFT näyttää ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

  • älykkäät LEDit ja LED-ohjaimet - WS2812, tm1829, WS2801, WS2812.

Lua-kielen käytön lisäksi voit ohjelmoida levyn Arduino IDE -sovelluksesta.

ESP8266: ta voidaan käyttää itsenäisenä laitteena tai moduulina langattomalle viestinnälle Arduinon kanssa.

Moduuli langattomaan tiedonsiirtoon Arduinon kanssa

Tämän hallituksen kaikkien toimintojen ja ominaisuuksien huomioon ottaminen vie kokonaisen sarjan artikkeleita.

Joten tämä kortti on loistava vaihtoehto kauko-ohjaukseen Wi-Fi: n kautta. Soveltamisala on valtava, esimerkiksi älypuhelimen käyttäminen hätäsiirron radio-ohjattavan koneen tai nelikopterin ohjauspaneelina, kaukosäädin, koko talon verkkojen järjestämiseen ja jokaisen pistorasian, lampun jne. hallintaan jos vain olisi tarpeeksi nastaa.

Yksinkertaisin tapa työskennellä mikrokontrollerin kanssa on käyttää yhtä ESP8266-korttia. Alla on kaavio yksinkertaisesta wi-fi-pistorasiasta.

Järjestelmä yksinkertaisimmasta wifi-pistorasiasta

Tämän piirin kokoamiseksi tarvitset relemoduulin tai tavanomaisen releen, joka on kytketty tappiin transistorin kautta. Ensin tarvitset ohjelman älypuhelimelle RoboRemoFree ,. Siinä voit määrittää yhteyden ESP: hen ja luoda käyttöliittymän pistorasian ohjaamiseksi. Jotta voisit kuvata sen käytön, sinun on kirjoitettava erillinen artikkeli, joten jätetään tämä materiaali toistaiseksi pois.

ESP: ssä lataamme seuraavan laiteohjelmiston ESPlorer -ohjelman kautta (ohjelman työskentelyyn hallituksen kanssa)

- WiFi AP -sieni

wifi.setmode (wifi.STATIONAP)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

wifi.ap.config (cfg)

- Aseta pin-tila

my_pin_nummber = 1

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

gpio.mode (my_pin_nummber, gpio.OPENDRAIN)

--Luo palvelin

sv = net.createServer (net.TCP)

toimintovastaanotin (sck, data)

jos string.sub (data, 0, 1) == "1", niin

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

gpio.write (my_pin_nummber, gpio.LOW)

muu

jos string.sub (data, 0, 1) == "0", niin

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

gpio.write (my_pin_nummber, gpio.HIGH)

pää

pää

tulosta (tiedot)

pää

jos sv sitten

sv: kuuntele (333, toiminto (jatkoa)

conn: päällä ("vastaanottaa", vastaanotin)

conn: lähetä ("Hei!")

end)

pää

--Luo HTTP-palvelin

http = net.createServer (net.TCP)

toiminto get_http (sck, data)

tulosta (tiedot)

paikallinen pyyntö = string.match (data, "([^ \ r, \ n] *) [\ r, \ n]", 1)

jos pyyntö == 'GET / on HTTP / 1.1', niin

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

gpio.write (my_pin_nummber, gpio.LOW)

pää

jos pyyntö == 'GET / off HTTP / 1.1', niin

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

gpio.write (my_pin_nummber, gpio.HIGH)

pää

sck: päällä ("lähetetty", toiminto (sck) sck: sulje () kerä roskaa () loppu)

paikallinen vastaus = "HTTP / 1.0 200 OK \ r \ nPalvelin: NodeMCU ESP8266: lla \ r \ nSisällön tyyppi: teksti / html \ r \ n \ r \ n" ..

" NodeMCU ESP8266: lla " ..

"

NodeMCU ESP8266: lla

" ..

"


" ..

" Päällä Ei käytössä " ..

" "

sck: lähetä (vastaus)

pää

jos http sitten

http: kuuntele (80, toiminto (jatkoa)

conn: päällä ("vastaanottaa", get_http)

end)

pää

tulosta ("Aloitettu.")

Nyt voit hallita ohjelmaa joko Roboremo-ohjelmasta tai minkä tahansa selaimen kautta. Tätä varten sinun on kirjoitettava levyn IP-osoite osoiteriville wi-fi-tilassa, se 192.168.4.1.

Koodissa on katkelma:

" NodeMCU ESP8266: lla " ..

"

NodeMCU ESP8266: lla

" ..

"


" ..

" Päällä Ei käytössä " ..

" "

Tämä on eräänlainen vastaus, joka annetaan selaimelle pääsyä taululle. Se sisältää HTML-koodin, ts. Yksinkertaisin verkkosivu, samanlainen kuin se, jolla luet tätä artikkelia.

Android-käyttöjärjestelmää käyttävän älypuhelimen selaimen sivu

Tämä on tämä sivu, joka avattiin Android-käyttöjärjestelmää käyttävän älypuhelimen selaimeen. Yllä oleva ei ole täydellinen ohje, koska se vie huomattavan määrän, jos olet kiinnostunut näistä tiedoista - kirjoita kommentteja ja me ehdottomasti suoritamme tarkistuksen ja kirjoitamme artikkelin työskentelystä sen kanssa.

Katso myös osoitteesta i.electricianexp.com:

  • Arduinon kytkeminen ja ohjelmointi aloittelijoille
  • Menetelmät Arduino I / O -porttien lukemiseen ja hallintaan
  • Mitä Nextion-näytöt ovat ja kuinka niiden kanssa työskennellä?
  • Ohjelmoitavat mikrokontrollerit JavaScript: kumpi valita, ominaisuudet ...
  • AVR-mikrokontrollerien tyypit ja järjestely

  •