Kategorijos: Namų automatizavimas, Mikrovaldiklio grandinės
Peržiūrų skaičius: 17351
Straipsnio komentarai: 0

Mikrovaldiklio nuotolinio valdymo pultas: IR nuotolinio valdymo pultas, „Arduino“, ESP8266, 433 MHz

 

Nuotolinio ar nuotolinio elektros įrenginių valdymo klausimas visada buvo ir bus aktualus, nepriklausomai nuo to, ar sistemoje yra automatikos įrankiai, ar ne. Nuotolinio valdymo organizavimui nesvarbu, ar mikrovaldiklis, viskas priklauso nuo būtinų funkcijų, priskirtų valdomam įrenginiui. Šiame straipsnyje jūs sužinosite bendrą informaciją apie mikrovaldiklio nuotolinio valdymo metodus.

Mikrovaldiklio nuotolinio valdymo pultas

Rūšys

Yra du pagrindiniai nuotolinio ryšio tipai:


Laidinis. Kai pavaros, esančios viename kambaryje (arba ne kambaryje), valdomos iš valdymo pulto arba iš mygtuko pakelio, esančio kitoje vietoje. Tokiu atveju numatomas valdymo grandinių ir pavarų (relių, kontaktorių, kuriuose yra mechanizmai, tokie kaip varikliai ar sistemos, pavyzdžiui, apšvietimas), elektros laidų jungtis.


Belaidis. Šiame įgyvendinimo variante nereikalingas elektrinis valdymo ir vykdomosios grandinės prijungimas. Belaidėse grandinėse yra du įrenginiai: siųstuvas arba nuotolinio valdymo pultas (RC) ir imtuvas, kurie yra kontroliuojamos grandinės dalis. Belaidis valdymas, savo ruožtu, yra įprastas dviejose versijose:

  • Optiniu signalu. Tokios sistemos yra kiekvienuose namuose, todėl jūs kontroliuojate televizoriaus, oro kondicionieriaus ir kitų buitinių prietaisų veikimą.

  • Radijo signalu. Jau yra daugybė variantų: „Bluetooth“, „ZigBee“, „Wi-Fi“, 433 MHz siųstuvo imtuvai ir kiti variantai šia tema.

Verta paminėti, kad šiuolaikinėmis techninėmis priemonėmis galite valdyti mikrovaldiklį tiek iš nuotolinio valdymo pulto, tiek per internetą vietiniame tinkle arba turėdami prieigą iš bet kurios pasaulio vietos.



IR nuotolinio valdymo pultas

Mes pradedame svarstyti nuo paprasčiausios ir klasikinės versijos. Įrenginio valdymas perduodant kodą iš IR šviesos diodo mirgėjimo sekos į įrenginyje įdiegtą optinį imtuvą. Verta paminėti, kad infraraudonųjų spindulių spektras nėra matomas žmogaus akiai, tačiau dauguma foto ir vaizdo kamerų jį mato.

Kadangi dauguma fotoaparatų mato infraraudonųjų spindulių ryšį, galite patikrinti nuotolinio valdymo pultų tinkamumas naudoti. Norėdami tai padaryti, tiesiog nukreipkite nuotolinio valdymo pultą taip, kad skleidėjas žiūrėtų į fotoaparatą, ir paspauskite mygtukus. Paprastai ekrane matomas baltas švytėjimas su purpuriniu atspalviu.

Šis valdymas turi akivaizdžių trūkumų - turite nukreipti nuotolinio valdymo pultą link imtuvo. Jei pasibaigs nuotolinio valdymo pulto baterijos, turite taip pat nusitaikyti, nes operacijų vis mažiau.

Privalumai yra paprastumas, didelis prižiūrėjimas - tiek siųstuvas, tiek imtuvas. Išsamią informaciją galite rasti išmontuodami sugadintus nuotolinio valdymo pultus ir televizorius, kad tai pritaikytumėte savo projektuose.

Tipiškas jutiklis yra toks. Kadangi optinis signalas yra gaunamas, būtina neleisti įjungti pašalinių šviesos šaltinių, tokių kaip saulė, apšvietimo lempos ir kiti. Taip pat verta paminėti, kad infraraudonųjų spindulių signalas priimamas daugiausia 38 kHz dažniu.

IR jutiklis

Čia pateikiamos vieno iš IR jutiklių specifikacijos:

  • nešiklio dažnis: 38 kHz;

  • maitinimo įtampa: 2,7 - 5,5 V;

  • dabartinis suvartojimas: 50 μA.

Ir jo prijungimo schema:

IR jutiklio prijungimo schema

Nuotolinio valdymo pultą gali naudoti visi, turintys panašų veikimo principą, nuotolinio valdymo pultai iš:

  • Televizoriai

  • DVD grotuvai

  • radijo magnetofonai;

  • iš modernių apšvietimo prietaisų, tokių kaip išmaniosios sietynai ir LED juostelės bei kita.

Valdymo pultas

Štai tokio jutiklio naudojimo pavyzdys su Arduino

„Arduino“ IR jutiklio pavyzdys

Norėdami, kad mikrovaldiklis, mūsų atveju Arduin, suprastų jutiklio signalą, turite naudoti IRremote.h biblioteką. Pavyzdys, kaip nuskaityti jutiklio signalą, yra kodas, skirtas juos atpažinti skaitant mikrovaldiklio nuoseklųjį prievadą iš „Arduino IDE“:

# Įtraukite „IRremote.h“ // prijunkite biblioteką darbui su IR signalu.

IRrecv irrecv (2); // nurodykite išėjimą, prie kurio prijungtas imtuvas

decode_results rezultatai;

negaliojanti sąranka () {

„Serial.begin“ (9600); // nustatykite COM prievado greitį

irrecv.enableIRIn (); // pradėkite priėmimą

}

tuščia kilpa () {

if (irrecv.decode (& results)) {// jei duomenys buvo

„Serial.println“ (rezultatų vertė, HEX); // spausdinti duomenis

irrecv.resume (); // sutikite su šia komanda

  }

}

Todėl, mirksėdami arduino ir pradėję „šviečia“ imtuvui su nuotolinio valdymo pultu, nuosekliojo prievado monitoriuje pamatysime šį paveikslėlį:

Serijinio uosto monitorius

Tai yra kodai, kurie siunčia mygtukus šešioliktainiu pavidalu. Taigi, jūs galite sužinoti, kurį nuotolinio valdymo pulto mygtuką, kurį kodą siunčia, todėl nėra jokių specialių reikalavimų naudojamam nuotolinio valdymo pultui, nes galite juos atpažinti ir susieti. Beje, tai yra apmokyto universalaus nuotolinio valdymo pulto projekto idėja, tokie buvo parduoti anksčiau. Tačiau dabar, interneto amžiuje, tokiu būdu kontroliuojamų technologijų kiekis kasmet mažėja.

Naudodami šį kodą galite atpažinti signalus ir valdyti apkrovą:

# įtraukite „IRremote.h“

IRrecv irrecv (2); // nurodykite išėjimą, prie kurio prijungtas imtuvas

decode_results rezultatai;

negaliojanti sąranka () {

irrecv.enableIRIn (); // pradėkite priėmimą

}

tuščia kilpa () {

if (irrecv.decode (& results)) {// jei duomenys buvo

jungiklis (results.value) {

atvejis 0xFFA857:

„digitalWrite“ (13, AUKŠTAS);

pertrauka;

atvejis 0xFFE01F:

„digitalWrite“ (13, LOW);

pertrauka;

    }   

irrecv.resume (); // sutikite su šia komanda

  }

}

Pagrindinis kodo dalykas yra atpažinimas per „Switch“ funkciją, kartais jie vadinami „switchcase“. Tai yra jei šakų analogas, tačiau turi gražesnę suvokimo formą. Atvejis - tai parinktys, „jei toks kodas ateina, tada ...“ Kodas kontroliuoja 13 kaiščių tam tikriems signalams. Leiskite jums priminti, kad įmontuotas šviesos diodas ARDUINO plokštėje yra prijungtas prie 13 kaiščio, t. kodo autorius valdė šviesos diodą.

Naudodami aukštą ar žemą skaitmeninį kaištį, naudodami tranzistorių (kurį anksčiau apžvelgėme dviejuose straipsniuose), bet ką galite valdyti čia ir čia) su nuolatinės srovės apkrova, arba per triacą ir jam skirtą vairuotoją su nuolatinės srovės apkrova, taip pat galite naudoti reles ir kontaktorius, apskritai, visą lauką vaizduotei.


Radijo signalo priėmimas ir perdavimas

Naudojant mikrovaldiklius, dažni siųstuvai, kurių veikimo dažnis yra 433 MHz arba 315 MHz, gali būti ir kitų dažnių, priklausomai nuo konkrečios plokštės, tačiau jie yra labiausiai paplitę. Sistemą sudaro du mazgai - imtuvas ir siųstuvas, o tai logiška.

Radijo signalo priėmimas ir perdavimas

Nuotraukoje siųstuvas rodomas viršuje dešinėje, o imtuvas - apačioje kairėje. Jų vardas paieškai: 433MHz radijo modulis, MX-05V / XD-RF-5V (imtuvas ir siųstuvas).

Tapetai, kaip dažnai būna moduliuose, ant lentos yra dažomi kaip siųstuvas:

Radijo siųstuvas

Imtuvas nėra toks akivaizdus, ​​nes duomenys ant spausdintinės plokštės yra užrašyti per du kaiščius, iš tikrųjų vienas iš jų nenaudojamas.

Radijo imtuvas

Pavyzdžiui, mes pateikiame schemą ir kodą, kaip įjungti šviesos diodą iš vienos Arduino plokštės, prijungtos prie kitos panašios plokštės, be laidų. Imtuvas ir siųstuvas yra sujungti vienodai prie abiejų plokščių:

Imtuvas ir siųstuvas ant plokščių

Įrenginys

Modulis

Arduino kaiščiai

Imtuvas

Vcc

GND

DUOMENYS

+ 5 V

GND

2

Siųstuvas

Vcc

GND

DUOMENYS

+ 5 V

GND

2 

Tada turite prijungti RCswitch.h biblioteką prie „Arduino IDE“

Norėdami pradėti, mes parašome siųstuvo programą:

# įtraukti

RC jungiklis „mySwitch“ = RC jungiklis(); // sukurkite objektą darbui su front-end

negaliojanti sąranka () {

    „mySwitch“.įjungti perduoti(2); // nurodykite programai, prie kurios yra prijungtas informacijos kanalas

}

tuščia kilpa () {

„mySwitch.send“ (B0100,4);

vėlavimas (1000);

„mySwitch.send“ (B1000, 4);

    vėlavimas (1000);

} 

Siųstuvas gali perduoti dvejetainį kodą, tačiau jo reikšmės gali būti užrašomos dešimtosios formos.

„mySwitch.send“ (B0100,4);

ir

„mySwitch.send“ (B1000, 4);

Tai yra perdavimo komandos, „mySwitch“ yra siųstuvo vardas, kurį mes nurodėme kodo pradžioje, o siųsti - perdavimo komanda. Šios funkcijos argumentai yra šie:

Siųstuvo pavadinimas.send (vertė, į orą siunčiamų impulsų paketo dydis);

B1000 - simbolis B - reiškia dvejetainį, jis gali būti parašytas kaip skaičius 8, t. po kablelio. Kita galimybė buvo parašyti „1000“ kaip eilutę (kabutėse).

Toliau rašome imtuvo kodą (jis sudedamas į plokštę, prie kurios prijungtas imtuvas):

# įtraukti

RCSwitch mySwitch = RCSwitch ();

negaliojanti sąranka () {

pinMode (3, OUTPUT);

„mySwitch.enableRecept“ (0);

}

tuščia kilpa () {

if (mySwitch.avable ()) {

int reikšmė = mySwitch.getReceptdValue ();

if (vertė == B1000)

„digitalWrite“ (3, AUKŠTAS);

else if (vertė == B0100)

„digitalWrite“ (3, LOW);

mySwitch.resetAvailable ();

    }

}

Čia mes deklaruojame, kad priimta vertė saugoma reikšmės kintamajame eilutėje „mySwitch.getReceptdValue“ (). O tai, kad imtuvas yra prijungtas prie 2-ojo kaiščio, čia aprašyta „mySwiitch.enableRecept“ (0).

Likęs kodas yra elementarus, jei gaunamas signalas 0100, tada 3 kaištis nustatomas kaip aukštas (log. Vienetas), o jei 1000, tada žemas (log. Nulis).

Įdomu:

Linijoje „mySwitch.enableTransmit“ (0) sakome programai, kad imtuvas yra prijungtas prie 2-ojo kaiščio ir įjungtas priėmimo režimas. Įdomiausi pastebėjo, kad šio metodo argumentas yra ne PIN kodas „2“, bet „0“. Faktas yra tas, kad „enableTransmit“ metodas (numeris) priima ne PIN kodą, o pertraukimo numerį, bet „Atmega328“, kuris yra padėtas Arduino Uno, nano, promini ir keletas kitų, ant antrojo kaiščio („PortD“ PIN2 kodas) pakabinamas pertraukimas, kurio skaičius lygus nuliui. Tai galite pamatyti „Armegaino“ lentoje esančiame „Atmega“ pinout'e, PIN kodai rašomi rožinėmis dėžutėmis.

„Atmega“ pinout

Šis perdavimo ir priėmimo būdas yra labai paprastas ir pigus; imtuvo ir siųstuvo pora rašymo metu kainuoja apie 1,5 USD.


„Wi-Fi“, „Adruino“ ir ESP8266

Pirmiausia, ESP8266 yra mikrovaldiklis su aparatinės įrangos palaikymu „Wi-Fi“, Jis parduodamas kaip atskira mikroschema ir lituotas prie lentos, kaip arduino. Jis turi 32 bitų branduolį, jis yra užprogramuotas per nuoseklųjį prievadą (UART).

Plokštėse paprastai yra 2 ar daugiau nemokamų GPIO kontaktų ir visada yra programinės įrangos kaiščiai, tai turi būti daroma per USB į nuoseklųjį adapterį. Tvarko AT komandos, visą komandų sąrašą galite rasti oficialioje ESP8266 svetainėje ir github.

ESP8266

Yra įdomesnis variantas, „NodeMCU“ plokštės, jos turi galimybę mirksėti per USB, nes USB-UART keitiklis jau yra plokštėje, paprastai pagamintas CP2102 mikroschemoje. Mazgas MCU yra programinė įranga, panaši į operacinę sistemą, projektas, pagrįstas „Lua“ scenarijų kalba.

„NodeMCU“ valdyba

Programinė įranga gali vykdyti „Lua“ scenarijus, priimdama juos į nuoseklųjį prievadą arba atkurdama „Flash“ atmintyje saugomus algoritmus.

Beje, ji turi savo failų sistemą, nors joje nėra katalogų, t. tik failai be aplankų. Atmintyje gali būti saugomi ne tik scenarijai, bet ir įvairūs duomenys, t. plokštė gali saugoti informaciją, įrašytą, pavyzdžiui, iš jutiklių.

Plokštė veikia su sąsajomis:

  • 1 viela;

  • I2C;

  • SPI

  • UART.

Jis atlieka daugybę funkcijų:

  • šifravimo modulis;

  • užduočių planavimo priemonė;

  • realaus laiko laikrodis;

  • laikrodžio sinchronizacijos protokolas per interneto SNTP;

  • laikmačiai;

  • ADC kanalas (vienas);

  • leisti garso failus;

  • generuoti išėjimuose PWM signalą (iki 6);

  • naudokite lizdus, ​​ten yra „FatFS“ palaikymas, t.y., galite prijungti SD korteles ir pan.

ESP-12E

Čia yra trumpas sąrašas, ką gali naudoti lenta:

  • akselerometrai ADXL345;

  • HMC5883L magnetometrai

  • giroskopai L3G4200D;

  • temperatūros ir drėgmės jutikliai AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • temperatūros, drėgmės, atmosferos slėgio jutikliai BME280;

  • temperatūros ir atmosferos slėgio jutikliai BMP085;

  • daugybė ekranų veikia I2C, SPI autobusuose. Su galimybe dirbti su skirtingais šriftais;

  • TFT ekrane rodomi ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

  • išmanieji šviesos diodai ir LED valdikliai - WS2812, tm1829, WS2801, WS2812.

Be „Lua“ kalbos vartojimo, plokštę galite programuoti iš „Arduino IDE“.

ESP8266 gali būti naudojamas kaip atskiras įrenginys arba kaip modulis belaidžiam ryšiui su „Arduino“.

Belaidžio ryšio su Arduino modulis

Apsvarsčius visas šios plokštės funkcijas ir ypatybes, prireiks daugybės straipsnių.

Taigi ši plokštė yra puikus nuotolinio valdymo per „Wi-Fi“ variantas. Pvz., Galimybė išmanųjį telefoną naudoti kaip radijo bangomis valdomo automato ar keturračio kopijavimo valdymo pultą yra didžiulė, nuotolinis apšvietimo valdymas, iki viso namo tinklų sutvarkymo ir kiekvieno lizdo, lempos ir kt. tvarkymo. jei tik būtų pakankamai smeigtukų.

Paprasčiausias būdas dirbti su mikrovaldikliu yra naudoti vieną ESP8266 plokštę. Žemiau yra paprasto „wi-fi“ lizdo schema.

Paprasčiausio „wifi“ lizdo schema

Norėdami surinkti šią grandinę, jums reikia relės modulio arba įprastos relės, sujungtos su kaiščiu per tranzistorių. Pirmiausia jums reikia išmaniojo telefono „RoboRemoFree“ programos. Jame sukonfigūruosite ryšį su ESP ir sukursite sąsają, skirtą valdyti lizdą. Norėdami aprašyti, kaip ja naudotis, turite parašyti atskirą straipsnį, todėl dabar praleiskime šią medžiagą.

Į ESP įkeliame šią programinę-aparatinę įrangą per ESPlorer programą (programa darbui su plokštė)

- „Wi-Fi AP“ šaukštas

„wifi.setmode“ („wifi.STATIONAP“)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

„wifi.ap.config“ (cfg)

--Nustatykite „Pin“ režimą

my_pin_nummber = 1

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

„gpio.mode“ („my_pin_nummber“, „gpio.OPENDRAIN“)

- Sukurti serverį

sv = net.createServer (net.TCP)

funkcijos imtuvas (sck, duomenys)

jei string.sub (duomenys, 0, 1) == „1“, tada

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

„gpio.write“ („my_pin_nummber“, „gpio.LOW“)

dar

jei string.sub (duomenys, 0, 1) == "0", tada

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

„gpio.write“ („my_pin_nummber“, „gpio.HIGH“)

pabaiga

pabaiga

spausdinti (duomenys)

pabaiga

jei sv tada

sv: klausytis (333, funkcija (jungtis)

jungtis: įjungta („gauna“, imtuvas)

conn: siųsti („Sveiki!“)

pabaiga)

pabaiga

- Sukurkite HTTP serverį

http = net.createServer (net.TCP)

funkcija gauti_http (sck, duomenys)

spausdinti (duomenys)

vietinė užklausa = string.match (duomenys, „([^ \ r, \ n] *) [\ r, \ n]“, 1)

jei užklausa == „GET / on HTTP / 1.1“, tada

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

„gpio.write“ („my_pin_nummber“, „gpio.LOW“)

pabaiga

jei užklausa == „GET / off HTTP / 1.1“, tada

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

„gpio.write“ („my_pin_nummber“, „gpio.HIGH“)

pabaiga

sck: įjungtas („išsiųstas“, funkcija (sck) sck: uždaryti () rinkti šiukšles () pabaiga)

vietinis atsakymas = "HTTP / 1.0 200 Gerai \ r \ nServeris:„ NodeMCU “„ ESP8266 “\ r \ nSu turinio tipas: tekstas / html \ r \ n \ r \ n" ..

„ NodeMCU on ESP8266 “ “ ..

„ NodeMCU “„ ESP8266 “

“.


“ ..

" Įjungta Išjungta " ..

" "

sck: siųsti (atsakymas)

pabaiga

jei http tada

http: klausytis (80, funkcija (jungtis)

conn: on („gauti“, gauti_http)

pabaiga)

pabaiga

spausdinti („Pradėta“)

Dabar galite valdyti programą iš „Roboremo“ programos arba per bet kurią interneto naršyklę, tam reikia įvesti plokštės IP adresą adreso juostoje „wi-fi“ režimu. 192.168.4.1.

Kode yra fragmentas:

„ NodeMCU on ESP8266 “ “ ..

„ NodeMCU “„ ESP8266 “

“.


“ ..

" Įjungta Išjungta " ..

" "

Tai savotiškas atsakymas, kuris pateikiamas naršyklei pasiekiant lentą. Jame yra HTML kodas, t.y. Paprasčiausias interneto puslapis, panašus į tą, kuriame jūs skaitote šį straipsnį.

Išmaniojo telefono, kuriame veikia „Android OS“, naršyklės puslapis

Čia yra šis puslapis, paleistas išmaniojo telefono, kuriame veikia „Android OS“, naršyklėje. Aukščiau pateikta informacija nėra išsami instrukcija, nes, jei jus domina ši informacija, tai užtruktų labai daug - parašykite komentarus ir mes būtinai atliksime apžvalgą ir parašysime straipsnį apie darbą su ja.

Taip pat žiūrėkite tinklalapyje bgv.electricianexp.com:

  • „Arduino“ prijungimas ir programavimas pradedantiesiems
  • Arduino I / O prievadų skaitymo ir valdymo metodai
  • Kas yra „Nextion“ ekranai ir kaip su jais dirbti?
  • Programuojami mikrovaldikliai „JavaScript“: kurį pasirinkti, charakteristikos ...
  • AVR mikrovaldiklių tipai ir išdėstymas

  •