
Një artikull mbi se si të krijoni një kontrollues logjik të programueshëm nga një pajisje kineze të lirë. Kjo pajisje do të gjejë përdorim si në automatizimin e shtëpisë ashtu edhe si një aktivitet praktik në informatikën shkollore.
Si për informacion, programi Sonoff Basic parazgjedhje funksionon me aplikacionin mobil përmes shërbimit të ndotjes në re kineze, pas modifikimit të propozuar, të gjitha ndërveprimet e mëtejshme me këtë pajisje do të bëhen të mundura në shfletues.
Kapitulli I. Lidhja e Sonoff me shërbimin MGT24
Hapi 1. Krijimi i panelit të kontrollit
Regjistrohuni në sitin (nëse nuk jeni regjistruar ende) dhe hyni në sistem me llogarinë tuaj.
Hyrja në sistem
PĂ«r tĂ« krijuar njĂ« panel kontrolli pĂ«r pajisjen e re, klikoni nĂ« butonin â+â.
Shembull i krijimit të panelit
Pasi të krijohet paneli, ai do të shfaqet në listën e panellave tuaj.
NĂ« skedĂ«n âInstalimiâ tĂ« panelit tĂ« krijuar, gjeni fushat âID e pajisjesâ dhe âĂelĂ«si i autorizimitâ, gjithashtu, kjo informacion do tĂ« nevojitet pĂ«r konfigurimin e pajisjes Sonoff.
Shembull i skedës
Hapi 2. Riprogramimi i pajisjes
Me ndihmën e utilitarit ngarkoni programimin për pajisjen, do t'ju nevojitet një konvertues USB-TTL. Këtu dhe .
Hapi 3. Konfigurimi i pajisjes
Sigurohuni që pajisja të ketë energji, pasi të ndizet drita LED, shtypni butonin dhe mbajeni të mbajtur derisa drita LED të fillojë të ndriçojë rregullisht dhe me ritëm.
Në këtë moment do të shfaqet një rrjet të ri wi-fi me emrin 'PLC Sonoff Basic', lidheni kompjuterin tuaj me këtë rrjet.
Shpjegimi i treguesve LED
Treguesi LED
Gjendja e pajisjes
dritë e çiftëzuar periodike
nuk ka lidhje me routerin
ndriçon vazhdimisht
ka lidhje me routerin
ndriçim periodik dhe i rregullt
modi i pikës së qasjes wi-fi
është fikur
nuk ka energji
Hapni shfletuesin e internetit dhe shkruani në shiritin e adresës tekstin '192.168.4.1', kaloni në faqen e konfigurimit të parametrave të rrjetit të pajisjes.
Plotësoni fushat si më poshtë:
- âEmri i rrjetitâ dhe âFjalĂ«kalimiâ (pĂ«r lidhjen e pajisjes me routerin tuaj tĂ« shtĂ«pisĂ« wi-fi).
- âID e pajisjesâ dhe âĂelĂ«si i Autorizimitâ (pĂ«r autorizimin e pajisjes nĂ« shĂ«rbimin MGT24).
Shembulli i konfigurimit të parametrave të rrjetit të pajisjes
Ruani konfigurimet dhe rinisni pajisjen.
Këtu .
Hapi 4. Lidhja e sensorëve (opsionale)
Versioni aktual mbështet deri në katër sensorë temperature ds18b20. Këtu për instalimin e sensorëve. Më duket se ky hap do të jetë më i vështirë, pasi do të kërkojë nga ju duar të sigurta dhe një llamarinë.
Kapita II. Programimi vizual
Hapi 1. Krijimi i skenarëve
Si mjedis programimi po përdoret , mjedisi është i lehtë për t'u mësuar, kështu që për të krijuar skenarë të thjeshtë nuk është e nevojshme të jeni programues.
Kam shtuar blloqe të specializuara për regjistrimin dhe leximin e parametrave të paisjeve. Qasja në çdo parameter bëhet nëpërmjet emrit. Për parametrat e pajisjeve të largëta përdoren emra të përbërë: «parametri@pajisja».
Lista e rënies së parametrave
Shembulli i skenarit të ndezjes dhe fikjes ciklike të ngarkesës (1Hz):

Shembulli i skenarit që sinkronizon punën e dy pajisjeve të veçanta. Kështu, releja e pajisjes së synuar përsërit punën e relees së pajisjes së largët.

Skenari për termostat (pa histerezis):

Për të krijuar skenarë më të ndërlikuar, mund të përdoren variabla, cikle, funksione (me argumente) dhe konstrukte të tjera. Nuk do ta përshkruaj këtu gjithçka në detaje, në rrjet ekziston mjaft materiale .
Hapi 2. Rendi i ekzekutimit të skenarëve
Skenari punon në një modë të vazhdueshme, dhe sapo të arrijë përfundimin e tij, ai fillon përsëri. Në këtë rast, ekzistojnë dy blloqe që mund të ndalojnë përkohësisht punën e skenarit, "delay" dhe "pause".
Blloku "delay" përdoret për vonesa në milisekonda ose mikrosekonda. Ky bllok e ruan rigorozisht intervalin e kohës, duke bllokuar punën e të gjithë pajisjes.
Blloku "pause" përdoret për vonesa në sekonda (edhe më pak) dhe nuk bllokon ekzekutimin e proceseve të tjera në pajisje.
Nëse skenari përmban një cikël të pafund, brenda të cilit nuk është vendosur "pause", interpretuesi do të iniciatojë një pauzë të vogël vetë.
Në rast se përfundon staku i memorjes të dedikuar, interpretuesi do të ndalojë ekzekutimin e një skenari të tillë të kërkuar (Kini kujdes me funksionet rekursive).
Hapi 3. Debugging i skenarëve
Për të debug-uar një skenar të ngarkuar tashmë në dispozitiv, mund të filloni një ndërprerje të programit hap pas hapi. Kjo është shumë e dobishme kur sjellja e skenarit nuk përputhet me atë që kishte menduar autori. Në këtë rast, ndërprerja i lejon autorit të gjejë shpejt burimin e problemit dhe të korrigjojë gabimin në skenar.
Skenari i llogaritjes së faktorialit në modalitetin e debug-imit:

Mjetej i debugging është shumë i thjeshtë dhe përbëhet nga tre butona kryesorë: "fillo", "hap një herë përpara" dhe "ndalo" (gjithashtu mos harrojmë për "hyrjen" dhe "daljen" nga modaliteti i debugging). Përveç ndërprerjes hap pas hapi, mund të vendosni një pikë ndalimi në çdo bllok (duke klikuar me miun mbi bllokun).
Për të shfaqur në monitor vlerat aktuale të parameterëve (sensorë, rele) përdorni bllokun "print".
Këtu rreth përdorimit të debugger-it.
NjĂ« seksion pĂ«r kuriozĂ«t. ĂfarĂ« ndodh nĂ«n kapak?
Për që skenarët të funksionojnë në pajisjen e synuar, u zhvillua një interpretuese e kodit bajt dhe një asamble për 38 instruksione. Në kodin burimor blockly u inkuadrua një gjenerator kode i specializuar, i cili konverton blloqet vizuale në instruksione asamble. Më pas, kjo program asamble transformohet në kod bajt dhe dërgohet në pajisje për ekzekutim.
Arkitektura e kësaj majesh virtuale është mjaft e thjeshtë dhe nuk ka shumë kuptim ta përshkruajmë, në internet do të gjeni shumë artikuj për projektimin e makine virtualesh më të thjeshta.
Për stakun e majesh virtuale zakonisht dedikoj 1000 bajtë, që është më se e mjaftueshme. Natyrisht, rekurzionet e thella mund të shpenzojnë çdo stok, por është e vështirë të gjejmë një përdorim praktik për to.
Kodi bajt i përfunduar është mjaft kompakt. Si shembull, kodi bajt për llogaritjen e faktorielës është vetëm 49 bajt. Kjo është forma e tij vizuale e paraqitjes:

Dhe kjo është programi i tij asamble:
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
Nëse forma e paraqitjes me asmblere nuk ka ndonjë vlerë praktike, ndryshe, skeda "javascrit" japin një pamje më të njohur sesa blloqet vizive:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Sa i përket performancës. Kur ekzekutova skenarin më të thjeshtë të ndriçimit, në ekranin e oscilografit mora një meandër 47kHz (me frekuencën e orës së procesorit 80MHz).


Mendoj se është një rezultat i mirë, të paktën, kjo shpejtësi është pothuajse dhjetë herë më e shpejtë se sa dhe .
Pjesa përfundimtare
Për të përmbledhur, do të them se përdorimi i skripteve na lejon jo vetëm që të programojmë logjikën e funksionimit të një pajisjeje të veçantë, por gjithashtu na jep mundësinë të lidhemi disa pajisje në një mekanizëm të vetëm, ku disa pajisje ndikojnë në sjelljen e të tjerave.
Gjithashtu do të veçoja se mënyra e zgjedhur e ruajtjes së skripteve (drejt në pajisjet vetë, jo në server) e bën më të thjeshtë kalimin e pajisjeve që tashmë funksionojnë në një server tjetër, për shembull në një Raspberry në shtëpi, këtu .
Kjo është gjithçka, do të isha i lumtur të dëgjoja këshilla dhe kritika konstruktive.
Burimi: habr.com
