Kategorijas: Mājas automatizācija, Mikrokontrolleru shēmas
Skatījumu skaits: 17351
Komentāri par rakstu: 0
Mikrokontrolera tālvadības pults: IR tālvadības pults, Arduino, ESP8266, 433 MHz
Jautājums par elektrisko iekārtu tālvadību vai tālvadību vienmēr ir bijis un būs aktuāls neatkarīgi no tā, vai sistēmā ir automatizācijas rīki. Tālvadības pults organizēšanai nav nozīmes tam, vai mikrokontrolieris, tas viss ir atkarīgs no nepieciešamajām pārvaldītajai ierīcei piešķirtajām funkcijām. Šajā rakstā jūs uzzināsit vispārīgu informāciju par mikrokontrolleru tālvadības pultīm.
Sugas
Pastāv divi galvenie attālo sakaru veidi:
Vadu. Kad izpildmehānismu kontroli, kas atrodas vienā telpā (vai telpā nav), veic no vadības paneļa vai no pogām, kas atrodas citā vietā. Šajā gadījumā tiek nodrošināts vadības ķēžu un izpildmehānismu (releju, kontaktoru, kas ietver mehānismus, piemēram, motorus vai sistēmas, piemēram, apgaismojumu) elektrības vadu savienojums.
Bezvadu. Šajā iemiesojumā vadības un izpildvadības ķēžu elektriskais savienojums nav nepieciešams. Bezvadu shēmās ir divas ierīces: raidītājs vai tālvadības pults (RC) un uztvērējs, kas ir daļa no kontrolētās ķēdes. Savukārt bezvadu vadība ir izplatīta divās versijās:
-
Pēc optiskā signāla. Šādas sistēmas ir katrā mājā, tāpēc jūs kontrolējat televizora, gaisa kondicioniera un citas sadzīves tehnikas darbību.
-
Pa radio signālu. Jau tagad ir vairākas iespējas: Bluetooth, ZigBee, Wi-Fi, 433 MHz raidītāja uztvērēji un citas variācijas par šo tēmu.
Ir vērts atzīmēt, ka ar moderniem tehniskiem līdzekļiem jūs varat kontrolēt mikrokontrolleri gan no tālvadības pults, gan caur internetu vietējā tīklā vai ar piekļuvi no jebkuras vietas pasaulē.
IR tālvadības pults
Mēs sākam mūsu apsvērumus ar vienkāršāko un klasiskāko versiju. Ierīces vadība, pārsūtot kodu no IR gaismas diodes mirgošanas secības uz ierīcē uzstādīto optisko uztvērēju. Ir vērts atzīmēt, ka infrasarkanais spektrs nav redzams cilvēka acij, bet lielākā daļa foto un video kameru to redz.
Tā kā lielākā daļa kameru redz infrasarkano staru, varat to pārbaudīt tālvadības pults izmantojamība. Lai to izdarītu, vienkārši pavērsiet tālvadības pulti tā, lai emitētājs ieskatītos kamerā un nospiediet pogas. Parasti uz ekrāna ir redzams balts mirdzums ar purpursarkanu nokrāsu.
Šai vadībai ir acīmredzams trūkums - tālvadības pults ir jānovirza pret uztvērēju. Un, ja tālvadības pultī izlādējušās baterijas ir izlādējušās, arī jums ir jāmērķē, jo operāciju kļūst arvien mazāk.
Priekšrocības ir vienkāršība, augsta apkope, gan raidītājs, gan uztvērējs. Sīkāku informāciju varat atrast, demontējot sadalītos tālvadības pultis un televizorus, lai tos lietotu savos projektos.
Tipisks sensors ir šāds. Tā kā tiek saņemts optiskais signāls, ir jāizslēdz ieslēgšanās no ārējiem gaismas avotiem, piemēram, saules, gaismas lampām un citiem. Ir arī vērts atzīmēt, ka infrasarkanais signāls tiek uztverts galvenokārt ar frekvenci 38 kHz.
Šeit ir viena IR sensora specifikācijas:
-
nesējfrekvence: 38 kHz;
-
barošanas spriegums: 2,7 - 5,5 V;
-
strāvas patēriņš: 50 μA.
Un tā savienojuma shēma:
Tālvadības pulti var izmantot ikviens ar līdzīgu darbības principu, tālvadības pulti no:
-
Televizori
-
DVD atskaņotāji
-
radio magnetofoni;
-
izmantojot modernās apgaismes ierīces, piemēram, viedās lustras un LED sloksnes un daudz ko citu.
Šeit ir šāda sensora izmantošanas piemērs ar Arduino:
Lai mikrokontrollers, mūsu gadījumā Arduin, saprastu sensora signālu, jums jāizmanto bibliotēka IRremote.h. Piemēram, kā nolasīt signālu no sensora, tiks dots kods, lai tos atpazītu, nolasot mikrokontrollera seriālo portu no Arduino IDE:
# iekļaujiet "IRremote.h" // pievienojiet bibliotēku darbam ar IR signālu.
IRrecv irrecv (2); // norāda izeju, kurai ir pievienots uztvērējs
decode_results rezultāti;
Nederīga iestatīšana () {
Sērijas.begin (9600); // iestatiet COM porta ātrumu
irrecv.enableIRIn (); // sāciet uzņemšanu
}
tukšs cilpa () {
if (irrecv.decode (& results)) {// ja dati bija
Serial.println (results.value, HEX); // izdrukāt datus
irrecv.resume (); // pieņemt šo komandu
}
}
Tā rezultātā, mirgojot arduino un ar tālvadības pults palīdzību sāk “spīdēt” uztvērējā, seriālā porta monitorā mēs redzēsim šādu attēlu:
Tie ir kodi, kas nosūta pogas heksadecimālā formā. Tādējādi jūs varat uzzināt, kuru tālvadības pults pogu nosūta, tāpēc izmantotajai tālvadībai nav īpašu prasību, jo jūs varat tās atpazīt un saistīt. Starp citu, šī ir ideja apmācīta universālā tālvadības pults projektam, tādi tika pārdoti jau agrāk. Bet tagad, interneta laikmetā, šādā veidā kontrolēto tehnoloģiju daudzums ar katru gadu samazinās.
Izmantojot šo kodu, jūs varat atpazīt signālus un pārvaldīt kravu:
# iekļaut "IRremote.h"
IRrecv irrecv (2); // norāda izeju, kurai ir pievienots uztvērējs
decode_results rezultāti;
Nederīga iestatīšana () {
irrecv.enableIRIn (); // sāciet uzņemšanu
}
tukšs cilpa () {
if (irrecv.decode (& results)) {// ja dati bija
slēdzis (rezultāti.vērtība) {
lieta 0xFFA857:
digitalWrite (13, HIGH);
pārtraukums;
korpuss 0xFFE01F:
digitalWrite (13, LOW);
pārtraukums;
} irrecv.resume (); // pieņemt šo komandu } }
Kodā galvenā lieta ir atpazīšana, izmantojot funkciju Switch, dažreiz tos sauc par “switchcase”. Tas ir zaru analogs, bet uztveršanai ir skaistāka forma. Lieta - šīs ir iespējas "ja šāds kods pienāk, tad ..." Kods kontrolē 13 signālus ar atsevišķiem signāliem. Atgādināšu, ka iebūvētais gaismas diode uz ARDUINO plates ir savienots ar 13. tapu, t.i. koda autors kontrolēja gaismas diodi.
Izmantojot strāvas tranzistoru (ko mēs jau apskatījām divos rakstos iepriekš), jūs varat kontrolēt jebko, izmantojot augstu vai zemu digitālo tapu šeit un šeit) ar līdzstrāvas slodzi vai caur triac un draiveri tam ar līdzstrāvas slodzi var izmantot arī relejus un kontaktorus, kopumā visu iztēles lauku.
Radiosignāla uztveršana un pārraide
Lietošanai ar mikrokontrolleriem ir izplatīti raidītāji ar darbības frekvencēm 433 MHz vai 315 MHz, atkarībā no konkrētās plates var būt arī citas frekvences, taču tās ir visizplatītākās. Sistēma sastāv no diviem mezgliem - uztvērēja un raidītāja, kas ir loģiski.
Attēlā raidītājs ir parādīts augšējā labajā stūrī, bet uztvērējs - kreisajā apakšā. Viņu vārds meklēšanai: 433MHz radio modulis, MX-05V / XD-RF-5V (uztvērējs un raidītājs).
Pinouts, kā tas bieži notiek moduļos, uz tāfeles ir uzkrāsots tāpat kā raidītājs:
Uztvērējs nav tik acīmredzams, jo dati uz iespiedshēmas plates ir uzrakstīti virs diviem tapiem, faktiski viens no tiem netiek izmantots.
Piemēram, mēs dodam diagrammu un kodu LED ieslēgšanai no vienas Arduino plates, kas savienota ar citu līdzīgu plati, bez vadiem. Uztvērējs un raidītājs ir vienādi savienoti ar abām plāksnēm:
Ierīce
Modulis
Arduino tapas
Uztvērējs
Vcc
GND
DATI
+ 5 V
GND
2
Raidītājs
Vcc
GND
DATI
+ 5 V
GND
2
Tālāk jums jāpieslēdz RCswitch.h bibliotēka Arduino IDE
Lai sāktu, mēs rakstām raidītāja programmu:
# iekļaut
RCSwitch mySwitch = RCSwitch(); // izveidojiet objektu darbam ar front-end
Nederīga iestatīšana () {
mySwitch.iespējotTransmitēt(2); // pastāstiet programmai, kurai pieslēgts informācijas kanāls
}
tukšs cilpa () {
mySwitch.send (B0100,4);
kavēšanās (1000);
mySwitch.send (B1000, 4);
kavēšanās (1000);
}
Raidītājs var pārsūtīt bināro kodu, bet tā vērtības var uzrakstīt decimālā formā.
mySwitch.send (B0100,4);
un
mySwitch.send (B1000, 4);
Šīs ir pārsūtīšanas komandas, mySwitch ir raidītāja nosaukums, kuru mēs norādījām koda sākumā, un nosūtīšana ir pārsūtīšanas komanda. Argumenti šai funkcijai ir:
Raidītāja nosaukums.send (vērtība, gaisā nosūtīto impulsu paketes lielums);
B1000 - simbols B - nozīmē bināru, to varētu uzrakstīt kā skaitli 8, t.i. aiz komata. Vēl viena iespēja bija rakstīt “1000” kā virkni (pēdiņās).
Tālāk mēs uzrakstām uztvērēja kodu (tas tiek iesprausts tāfelē, kurai ir pievienots uztvērējs):
# iekļaut
RCSwitch mySwitch = RCSwitch ();
Nederīga iestatīšana () {
pinMode (3, OUTPUT);
mySwitch.enableReict (0);
}
tukšs cilpa () {
if (mySwitch.avable ()) {
int vērtība = mySwitch.getReceptiondValue ();
if (vērtība == B1000)
digitalWrite (3, HIGH);
cits, ja (vērtība == B0100)
digitalWrite (3, LOW);
mySwitch.resetAvailable ();
}
}
Šeit mēs paziņojam, ka pieņemtā vērtība tiek saglabāta vērtības mainīgajā virknē mySwitch.getReceptiondValue (). Un to, ka uztvērējs ir savienots ar otro tapu, šeit apraksta mySwiitch.enableReceive (0).
Pārējais kods ir elementārs, ja tiek saņemts signāls 0100, tad 3. tapa tiek iestatīta uz augstu (log. Vienība) un, ja 1000, tad uz zemu (log. Nulle).
Interesanti:
Rindā mySwitch.enableTransmit (0) mēs programmai sakām, ka uztvērējs ir savienots ar otro tapu un ir ieslēgts uztveršanas režīms. Visnozīmīgākie pamanīja, ka šīs metodes arguments nav PIN kods “2”, bet gan “0”. Fakts ir tāds, ka enableTransmit metode (skaitlis) nepieņem pin numuru, bet gan pārtraukuma numuru, bet atmega328, kas tiek uzlikts Arduino Uno, nano, promini un vairāki citi, otrajā tapā (PortD pin PD2) karājas pārtraukums ar skaitli nulle. To var redzēt Atmega pinout, kas piemērojams Arduino tāfelei, pin skaitļi ir rakstīti rozā rūtiņās.
Šī nosūtīšanas un saņemšanas metode ir ļoti vienkārša un lēta; uztvērēja un raidītāja pāris rakstīšanas laikā maksā apmēram 1,5 USD.
Wi-Fi, Adruino un ESP8266
Sākumā ESP8266 ir mikrokontrollers ar aparatūras atbalstu Wi-Fi, To pārdod kā atsevišķu mikroshēmu un pielodē pie tāfeles tāpat kā arduino. Tam ir 32 bitu kodols, tas ir ieprogrammēts caur seriālo portu (UART).
Plātnēs parasti ir 2 vai vairāk bezmaksas GPIO tapas, un vienmēr ir tapas, kas paredzētas programmaparatūrai. Tas jādara, izmantojot USB līdz seriālo adapteri. Pārvalda AT komandas, pilnu komandu sarakstu var atrast oficiālajā ESP8266 vietnē un github.
Ir interesantāka opcija, NodeMCU dēļi, viņiem ir iespēja mirgot caur USB, jo USB-UART pārveidotājs jau atrodas uz tāfeles, parasti tas tiek izgatavots uz CP2102 mikroshēmas. Mezgla MCU ir programmaparatūra, kaut kas līdzīgs operētājsistēmai, projekts, kura pamatā ir Lua skriptu valoda.
Programmaparatūra var izpildīt Lua skriptus, pieņemot tos seriālajā ostā vai reproducējot Flash atmiņā saglabātos algoritmus.
Starp citu, tam ir sava failu sistēma, lai gan tajā nav direktoriju, t.i. tikai faili bez mapēm. Atmiņā var uzglabāt ne tikai skriptus, bet arī dažādus datus, t.i. tāfele var saglabāt informāciju, kas ierakstīta, piemēram, no sensoriem.
Dēlis darbojas ar saskarnēm:
-
1 vads;
-
I2C;
-
SPI
-
UART.
Tam ir vesela virkne funkciju:
-
šifrēšanas modulis;
-
uzdevumu plānotājs;
-
reālā laika pulkstenis;
-
pulksteņa sinhronizācijas protokols, izmantojot interneta SNTP;
-
taimeri;
-
ADC kanāls (viens);
-
atskaņot audio failus;
-
ģenerēt pie izejām PWM signālu (līdz 6);
-
izmantojiet kontaktligzdas, tur ir atbalsts FatFS, t.i., jūs varat pievienot SD kartes utt.
Šeit ir īss saraksts ar to, kā valde var strādāt:
-
akselerometri ADXL345;
-
HMC5883L magnetometri
-
žiroskopi L3G4200D;
-
temperatūras un mitruma sensori AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;
-
temperatūras, mitruma, atmosfēras spiediena sensori BME280;
-
temperatūras un atmosfēras spiediena sensori BMP085;
-
daudzi displeji darbojas ar I2C, SPI autobusiem. Ar spēju strādāt ar dažādiem fontiem;
-
TFT displeji ir ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;
-
viedās gaismas diodes un LED kontrolieri - WS2812, tm1829, WS2801, WS2812.
Papildus lua valodas lietošanai jūs varat programmēt tāfeli no Arduino IDE.
ESP8266 var izmantot kā atsevišķu ierīci vai kā moduli bezvadu sakariem ar Arduino.
Apsverot visas šīs tāfeles funkcijas un funkcijas, būs nepieciešama virkne rakstu.
Tātad šis dēlis ir lieliska tālvadības iespēja, izmantojot Wi-Fi. Piemērošanas joma ir milzīga, piemēram, lai viedtālruni izmantotu kā kontrolējamu radiovadāmās mašīnas vai kvadrocoptera vadības paneli, apgaismojuma tālvadības pults, līdz tīkla sakārtošanai visai mājai un katras kontaktligzdas, lampas utt. pārvaldīšanai. ja tikai būtu pietiekami daudz tapu.
Vienkāršākais veids, kā strādāt ar mikrokontrolleri, ir izmantot vienu ESP8266 plati. Zemāk ir vienkārša wi-fi kontaktligzdas diagramma.
Lai saliktu šo shēmu, jums ir nepieciešams releja modulis vai parastais relejs, kas savienots ar tapu caur tranzistoru. Vispirms jums ir nepieciešama viedtālruņa RoboRemoFree programma. Tajā jūs konfigurēsit savienojumu ar ESP un izveidosit saskarni izejas vadīšanai. Lai aprakstītu, kā to izmantot, jums jāraksta atsevišķs raksts, tāpēc pagaidām izlaidīsim šo materiālu.
Izmantojot programmu ESPlorer, programmā ESP mēs ielādējam šādu programmaparatūru (programma darbam ar dēli)
- Wi-Fi AP tējkanna
wifi.setmode (wifi.STATIONAP)
cfg = {}
cfg.ssid = "ESPTEST"
cfg.pwd = "1234567890"
wifi.ap.config (cfg)
- Iestatīt pin režīmu
my_pin_nummber = 1
--gpio.mode (my_pin_nummber, gpio.OUTPUT)
gpio.mode (my_pin_nummber, gpio.OPENDRAIN)
- Izveidot serveri
sv = net.createServer (net.TCP)
funkcijas uztvērējs (sck, dati)
ja string.sub (dati, 0, 1) == "1", tad
--gpio.write (my_pin_nummber, gpio.HIGH)
gpio.write (my_pin_nummber, gpio.LOW)
cits ja string.sub (dati, 0, 1) == "0", tad --gpio.write (my_pin_nummber, gpio.LOW) gpio.write (my_pin_nummber, gpio.HIGH) beigas beigas drukāt (dati) beigas ja sv tad sv: klausieties (333, funkcija (savienojums)) conn: ieslēgts ("saņemt", uztvērējs) conn: sūtīt (“Sveiks!”) beigas) beigas - Izveidojiet HTTP serveri http = net.createServer (net.TCP) funkcija get_http (sck, dati) drukāt (dati) vietējais pieprasījums = string.match (dati, "([^ \ r, \ n] *) [\ r, \ n]", 1) ja pieprasījums == 'GET / on HTTP / 1.1', tad --gpio.write (my_pin_nummber, gpio.HIGH) gpio.write (my_pin_nummber, gpio.LOW) beigas ja pieprasījums == 'GET / off HTTP / 1.1', tad --gpio.write (my_pin_nummber, gpio.LOW) gpio.write (my_pin_nummber, gpio.HIGH) beigas sck: ieslēgts ("nosūtīts", funkcija (sck) sck: aizvērt () apkopot atkritumus () beigas) vietējā atbilde = "HTTP / 1.0 200 Labi \ r \ nServeris: NodeMCU uz ESP8266 \ r \ nSatura tips: teksts / html \ r \ n \ r \ n" .. "
"
NodeMCU uz ESP8266
"."
" ..
" "
sck: sūtīt (atbilde)
beigas
ja http, tad
http: klausieties (80, funkcija (savienojums))
conn: on ("saņemt", saņemt_http)
beigas)
beigas
print ("Started")
Tagad jūs varat kontrolēt programmu vai nu no Roboremo programmas, vai izmantojot jebkuru tīmekļa pārlūkprogrammu, lai to paveiktu, Wi-Fi režīmā adreses joslā jāievada paneļa IP adrese, 192.168.4.1.
Kodā ir fragments:
"
"
NodeMCU uz ESP8266
".
"
" ..
" "
Šī ir sava veida reakcija, kas tiek izsniegta pārlūkam, piekļūstot tāfelei. Tas satur HTML kodu, t.i. Vienkāršākā tīmekļa lapa, līdzīga tai, kurā lasāt šo rakstu.
Šī ir šī lapa, kas tika palaista viedtālruņa pārlūkprogrammā, kurā darbojas operētājsistēma Android OS. Iepriekš minētais nav pilnīgs norādījums, jo, ja jūs interesē šī informācija, tas prasītu ļoti daudz - uzrakstiet komentārus, un mēs noteikti veiksim pārskatu un uzrakstīsim rakstu par darbu ar to.
Skatīt arī vietnē e.imadeself.com
: