
Një artikull mbi mënyrën si të krijoni një kontrollues logjik programues nga një pajisje të lirë kineze. Një pajisje e tillë do të gjejë aplikim si në automatizimin e shtëpisë, ashtu edhe si materiale praktike për mësimin e informacionit në shkollë.
Për informacion, në mënyrë të paracaktuar, programi Sonoff Basic punon me aplikacionin mobil përmes një shërbimi Cloud kinez, pas modifikimit të propozuar, të gjithë ndërveprimi i mëtejshëm me këtë pajisje do të jetë i mundur nëpërmjet shfletuesit.
Kapitulli I. Lidheni Sonoff me shërbimin MGT24
Hapi 1. Krijimi i panelit të kontrollit
Regjistrohuni në faqen e internetit (nëse nuk jeni regjistruar ende) dhe hyni në sistem me llogarinë tuaj.
Hyni në sistem
Për të krijuar një panel kontrolli për pajisjen e re, klikoni butonin «+».
Shembuj krijimi të panelit
Pasi paneli të krijohet, ai do të shfaqet në listën e paneleve tuaja.
NĂ« skedĂ«n «Instalimi», tĂ« panelit tĂ« krijuar, gjeni fushat «ID pajisjes» dhe «ĂelĂ«si i autorizimit», tĂ« cilat do tĂ« nevojiten mĂ« vonĂ« gjatĂ« konfigurimit tĂ« pajisjes Sonoff.
Shembuj skede
Hapi 2. Rindizja e pajisjes
Me ndihmën e utilitarit ngarkoni firmuerin në pajisje, për këtë do t'ju nevojitet një konvertues USB-TTL. Këtu dhe .
Hapi 3. Konfigurimi i pajisjes
Siguroni energji për pajisjen, pasi drita LED të ndizet, klikoni butonin dhe mbajeni të shtypur derisa drita LED të fillojë të pulsosh rregullisht.
Në këtë moment do të shfaqet një rrjet wi-fi i quajtur «PLC Sonoff Basic», lidheni kompjuterin tuaj me këtë rrjet.
Shpjegimi i indikatorëve LED
Indikatorët LED
Statusi i pajisjes
përdorimi i shndërrimit të dyfishtë
nuk ka lidhje me routerin
ndriçon vazhdimisht
lidhja është vendosur me routerin
përdorimi i pulsimit të rregullt
modaliteti wi-fi i pikës së aksesit
e fikur
nuk ka energji
Hapni një shfletues interneti 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 të lidhur pajisjen me routerin tuaj wi-fi në shtëpi).
- «ID pajisjes» dhe «ĂelĂ«si i autorizimit» (pĂ«r autorizimin e pajisjes nĂ« shĂ«rbimin MGT24).
Shembuj të konfigurimit të parametrave të rrjetit të pajisjes
Ruani parametrat dhe riaktivizoni pajisjen.
Këtu .
Hapi 4. Lidhja e sensorëve (opcional)
Firmware aktual mbështet deri në katër sensorë temperature ds18b20. Këtu për montimin e sensorëve. Duket se ky hap do të jetë më i vështirë, pasi do t'ju kërkojë duar të drejta dhe një saldator.
Kapitulli II. Programimi vizual
Hapi 1. Krijimi i skenarëve
Si ambient programimi pĂ«rdoret , njĂ« mjedis i thjeshtĂ« pĂ«r tâu zotĂ«ruar, 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ë pajisjes. Qasja në çdo parametër 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
Shembuj skenari për ndezjen dhe fikjen ciklike të ngarkesës (1Hz):

Shembuj skenari që sinkronizon punën e dy pajisjeve të veçanta. Kështu, releu i pajisjes së synuar përsërit punën e releut të pajisjes së largët.

Skenari për termostatin (pa histerezis):

Për të krijuar skenarë më të komplikuar, mund të përdoren variablat, ciklet, funksionet (me argumente) dhe konstrukte të tjera. Nuk do ta zhvilloj në detaje këtu, në internet tashmë ka shumë .
Hapi 2. Rendi i ekzekutimit të skenarëve
Skenari punon në një regjime të vazhdueshëm, dhe sa herë që arrin në fundin e tij, rifillon përsëri. Këtu ka dy blloqe që mund të pezullojnë përkohësisht punën e skenarit, "delay" dhe "pause".
Blloku "delay" përdoret për vonesa në milisekonda ose mikrosekonda. Ky bllok respekton saktësisht intervalin e kohës, duke bllokuar punën e gjithë pajisjes.
Blloku "pause" përdoret për vonesa sekondash (mund të jetë edhe më e vogël), dhe ai nuk bllokon ekzekutimin e proceseve të tjera në pajisje.
Nëse skenari brenda vetes ka një cikël të pafund, në trupin e të cilit nuk ndodhet "pause", interpretuese do të iniciative një pushim të vogël.
Në rast të shterimit të stacks të memorie të dedikuar, interpretuese do të ndalojë ekzekutimin e një skenari aq të vorfër (kujdes me funksionet rekursive).
Hapi 3. Debugging i skenarëve
Për të shkuar përmes një skenari që është ngarkuar tashmë në pajisje, mund të filloni një ndjekje hap pas hapi. Kjo është jashtëzakonisht e dobishme kur sjellja e skenarit rezulton të jetë ndryshe nga ajo që kishte parashikuar autori. Në këtë rast, ndjekja lejon autorin të identifikojë shpejt burimin e problemit dhe të korrigjojë gabimin në skenar.
Skenari për llogaritjen e faktorialit në modalitetin e debugging:

Instrumenti i debugging është shumë i thjeshtë dhe përbëhet nga tre butona kryesorë: 'fillo', 'një hap përpara' dhe 'ndalo' (po ashtu mos harrojmë mbi 'hyrje' dhe 'dalje' nga modaliteti i debugging). Përveç ndjekjes hap pas hapi, mund të vendosni një pikë ndalimi në çdo bllok (me një klik të mausit mbi bllokun).
Për të shfaqur në monitor vlerat aktuale të parametrave (sensorët, releet), përdorni bllokun 'print'.
Këtu për përdorimin e debugger-it.
NjĂ« seksion pĂ«r kuriozĂ«t. ĂfarĂ« ka nĂ«n kapak?
PĂ«r tĂ« siguruar qĂ« skenarĂ«t tĂ« punojnĂ« nĂ« pajisjen e synuar, Ă«shtĂ« zhvilluar njĂ« interpretues pĂ«r kodin баĐčŃ dhe assembler-in me 38 instruksione. NĂ« kodin burimor tĂ« blockly, Ă«shtĂ« integruar njĂ« gjenerues i specializuar i kodit qĂ« konverton blloqet vizuale nĂ« instruksione assembler. Kjo program assembler mĂ« pas konvertohet nĂ« kod баĐčŃ dhe dĂ«rgohet nĂ« pajisje pĂ«r ekzekutim.
Arkitektura e kësaj makine virtuale është mjaft e thjeshtë dhe nuk ka shumë kuptim ta përshkruajmë, në internet do të gjeni shumë artikuj mbi projektimin e makinave virtuale më të thjeshta.
Për stack-un e makinës sime virtuale, zakonisht rezervoj 1000 byte, kjo është e mjaftueshme. Sigurisht, rekursionet e thella mund të shfrytëzojnë çdo stack, por është e dyshimtë se do të gjejnë ndonjë përdorim praktik.
Kodi pĂ«rfundimtar баĐčŃ Ă«shtĂ« mjaft kompakt. Si njĂ« shembull, kodi баĐčŃ pĂ«r llogaritjen e tĂ« njĂ«jtit faktorial pĂ«rbĂ«n vetĂ«m 49 byte. Kjo Ă«shtĂ« forma e tij vizuale e paraqitjes:

Dhe kjo është programi i tij assembler:
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 assembler e paraqitjes nuk ka ndonjë vlerë praktike, tab-i 'javascrit', nga ana tjetër, ofron një pamje më të njohur sesa blloqet vizuale:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Sa i përket performancës. Gjatë ekzekutimit të skenarit më të thjeshtë të ndriçimit, në ekranin e osciloskopit mora një meandër 47kHz (në frekuencën e clock-ut të procesorit 80MHz).


E konsideroj këtë rezultat të kënaqshëm, të paktën, kjo shpejtësi është pothuajse dhjetë herë më e shpejtë se dhe .
Pjesa përfundimtare
Duke përmbledhur, do të them se përdorimi i skenarëve na lejon jo vetëm të programojmë logjikën e funksionimit të një pajisjeje të veçantë, por gjithashtu na ofron mundësinë për të lidhur disa pajisje në një mekanizëm të vetëm, ku disa pajisje ndikojnë në sjelljen e të tjerave.
Po ashtu, do të theksoj se mënyra e zgjedhur e ruajtjes së skenarëve (vetëm në pajisjet e veta, dhe jo në server), thjeshton kalimin e pajisjeve që funksionojnë tashmë në një server tjetër, për shembull në Raspberry-n tuaj shtëpiak. .
Kaq për këtë, do të isha i lumtur të dëgjoj këshilla dhe kritika konstruktive.
Burimi: habr.com
