Txinako gailu merke batetik kontrolagailu logiko programagarri bat nola sortzeari buruzko artikulu bat. Horrelako gailu batek bere erabilera aurkituko du bai domotikan bai eskola-informatikako klase praktiko gisa.
Erreferentzia gisa, lehenespenez Sonoff Basic programak aplikazio mugikor batekin funtzionatzen du txinatar hodeiko zerbitzu baten bidez; Proposatutako aldaketaren ondoren, gailu honekin beste interakzio guztiak posible izango dira arakatzailean.
I. atala. Sonoff MGT24 zerbitzura konektatzea
1. urratsa: Sortu kontrol panel bat
Eman izena gunean
Saioa hasi
Gailu berri baterako kontrol panel bat sortzeko, egin klik "+" botoian.
Panel bat sortzeko adibidea
Panela sortu ondoren, zure panelen zerrendan agertuko da.
Sortutako paneleko "Konfigurazioa" fitxan, bilatu "Gailuaren IDa" eta "Baimen-gakoa" eremuak; etorkizunean, informazio hori beharrezkoa izango da Sonoff gailua konfiguratzerakoan.
Fitxa adibidea
2. urratsa. Berriz gailua
Utilitatea erabiliz
3. urratsa. Gailuaren konfigurazioa
Aplikatu gailuari, LEDa piztu ondoren, sakatu botoia eta eutsi sakatuta LEDa aldian-aldian distiratzen hasten den arte.
Momentu honetan, "PLC Sonoff Basic" izeneko wi-fi sare berri bat agertuko da, konektatu zure ordenagailua sare honetara.
LED adierazlearen azalpena
LED-adierazpena
Gailuaren egoera
aldizkako keinu bikoitza
bideratzailearekin konexiorik ez
etengabe distira egiten du
bideratzailearekin ezarrita dagoen konexioa
aldizkako keinu uniformea
Wi-Fi sarbide puntu modua
itzali
Ez dago elikadura hornidurarik
Ireki Interneteko arakatzailea eta idatzi "192.168.4.1" testua helbide-barran, joan gailuaren sareko ezarpenen orrira.
Bete eremuak honela:
- "Sarearen izena" eta "Pasahitza" (gailua zure etxeko wi-fi bideratzailearekin lotzeko).
- βGailuaren IDaβ eta βBaimen-gakoaβ (MGT24 zerbitzuan gailua baimentzeko).
Gailuaren sare-parametroak ezartzeko adibidea
Gorde ezarpenak eta berrabiarazi gailua.
Hemen
4. urratsa. Sentsoreak konektatzea (aukerakoa)
Egungo firmwareak lau ds18b20 tenperatura sentsore onartzen ditu. Hemen
II. atala. Programazio bisuala
1. urratsa: gidoiak sortu
Programazio ingurune gisa erabiltzen da
Gailuaren parametroak idazteko eta irakurtzeko bloke espezializatuak gehitu ditut. Edozein parametro izenaren bidez sartzen da. Urruneko gailuen parametroetarako, izen konposatuak erabiltzen dira: βparametro@gailuaβ.
Aukeren goitibeherako zerrenda
Karga pizteko eta itzaltzeko ziklikorako eszenatoki adibidea (1Hz):
Bi gailu ezberdinen funtzionamendua sinkronizatzen duen script baten adibidea. Hots, xede gailuaren erreleak urruneko gailuaren errelearen funtzionamendua errepikatzen du.
Termostatoaren agertokia (histeresirik gabe):
Script konplexuagoak sortzeko, aldagaiak, begiztak, funtzioak (argumentuekin) eta beste eraikuntza batzuk erabil ditzakezu. Ez dut hemen hau guztia zehatz-mehatz deskribatuko; sarean dagoeneko asko dago.
2. urratsa: gidoien ordena
Gidoia etengabe exekutatzen da, eta amaierara iritsi bezain laster, berriro hasten da. Kasu honetan, gidoia aldi baterako pausatu dezaketen bi bloke daude, "atzerapena" eta "pausatu".
"Atzerapena" blokea milisegundo edo mikrosegundoko atzerapenetarako erabiltzen da. Bloke honek denbora tartea zorrotz mantentzen du, gailu osoaren funtzionamendua blokeatzen du.
"Pausa" blokea bigarren (edo gutxiago) atzerapenetarako erabiltzen da, eta ez du blokeatzen gailuan beste prozesu batzuen exekuzioa.
Scriptak berak begizta infinitu bat badu, zeinaren gorputzak "pausea" ez badu, interpreteak modu independentean eten labur bat hasten du.
Esleitutako memoria pila agortzen bada, interpreteak botere-gose handiko script bat exekutatzeari utziko dio (kontuz funtzio errekurtsiboekin).
3. urratsa: Scriptak araztea
Dagoeneko gailuan kargatu den script bat arazketa egiteko, pausoz pauso programaren traza exekutatu dezakezu. Hau oso erabilgarria izan daiteke gidoiaren jokabidea egileak nahi zuenaren ezberdina izan ohi denean. Kasu honetan, trazatzeak egileari arazoaren iturria azkar aurkitzeko eta script-eko akatsa zuzentzeko aukera ematen dio.
Arazte moduan faktoriala kalkulatzeko eszenatokia:
Arazketa tresna oso sinplea da eta hiru botoi nagusi ditu: "hasi", "pauso bat aurrera" eta "gelditu" (ez ditzagun "sartu" eta "irten" arazketa moduaz ere ahaztu). Urratsez urratseko trazatzeaz gain, edozein bloketan eten puntu bat ezar dezakezu (blokean klik eginez).
Parametroen egungo balioak (sentsoreak, erreleak) monitorean bistaratzeko, erabili "inprimatu" blokea.
Hemen
Jakin-minentzako atala. Zer dago kaputxa azpian?
Scriptek xede gailuan funtzionatzeko, bytecode interprete bat eta 38 instrukzio dituen mihiztagailu bat garatu ziren. Blockly-ren iturburu-kodeak kode-sorgailu espezializatu bat du barnean, bloke bisualak muntatzeko argibide bihurtzen dituena. Ondoren, muntatzaile-programa hau bytecode bihurtzen da eta gailura transferitzen da exekutatzeko.
Makina birtual honen arkitektura nahiko sinplea da eta ez du ezertarako balio berau deskribatzeak; Interneten makina birtual errazenak diseinatzeko artikulu ugari aurkituko dituzu.
Normalean 1000 byte esleitzen ditut nire makina birtualaren pilarako, eta hori nahikoa da. Jakina, errekurtsio sakonek edozein pila agor dezakete, baina nekez izango dute erabilera praktikorik.
Lortutako bytecode nahiko trinkoa da. Adibide gisa, faktorial bera kalkulatzeko byte-kodea 49 byte baino ez da. Hau da bere forma bisuala:
Eta hau da bere muntatzaile programa:
shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret
Irudikapen-formak ez badu balio praktikorik, "javascrit" fitxak, aitzitik, ikusizko blokeek baino itxura ezagunagoa ematen du:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Errendimenduari dagokionez. Flasher script sinpleena exekutatu nuenean, 47 kHz-ko uhin karratu bat lortu nuen osziloskopioaren pantailan (80 MHz-ko prozesadorearen erlojuaren abiaduran).
Emaitza ona dela uste dut, abiadura hori baino ia hamar aldiz azkarragoa da behintzat
Azken zatia
Laburbilduz, esango dut scripten erabilerak aparteko gailu baten funtzionamenduaren logika programatzeaz gain, hainbat gailu mekanismo bakarrean konektatzea ahalbidetzen duela, non gailu batzuek besteen portaeran eragiten dutela.
Gainera, ohartzen naiz scriptak gordetzeko aukeratutako metodoak (zuzenean gailuetan bertan, eta ez zerbitzarian) dagoeneko lanean ari diren gailuak beste zerbitzari batera aldatzea errazten duela, adibidez etxeko Raspberry batera, hemen.
Hori da guztia, poztuko naiz aholkuak eta kritika eraikitzaileak entzutea.
Iturria: www.habr.com