Yon atik sou fason yo kreye yon kontwolè lojik pwogramasyon soti nan yon aparèy bon mache Chinwa. Yon aparèy konsa ap jwenn itilizasyon li tou de nan automatisation lakay ak kòm klas pratik nan syans enfòmatik lekòl la.
Pou referans, pa default pwogram Sonoff Basic travay ak yon aplikasyon mobil atravè yon sèvis nwaj Chinwa apre modifikasyon yo pwopoze a, tout plis entèraksyon ak aparèy sa a pral posib nan navigatè a.
Seksyon I. Konekte Sonoff ak sèvis MGT24 la
Etap 1: Kreye yon panèl kontwòl
Enskri sou sit la
Login nan sistèm lan
Pou kreye yon panèl kontwòl pou yon nouvo aparèy, klike sou bouton "+".
Egzanp pou kreye yon panèl
Yon fwa panèl la kreye, li pral parèt nan lis panno ou yo.
Nan tab la "Enstalasyon" nan panèl la kreye, jwenn "ID Aparèy la" ak "Kle Otorizasyon" nan lavni, enfòmasyon sa a pral obligatwa lè w ap mete aparèy la Sonoff.
Tab egzanp
Etap 2. Reflash aparèy la
Sèvi ak sèvis piblik la
Etap 3: Mete kanpe aparèy ou an
Aplike pouvwa a nan aparèy la, apre ki ap dirije limyè a leve, peze bouton an epi kenbe li bourade jiskaske dirije a kòmanse flache detanzantan respire.
Nan moman sa a, yon nouvo rezo wi-fi ki rele "PLC Sonoff Basic" ap parèt, konekte òdinatè w lan ak rezo sa a.
Eksplikasyon sou endikasyon ki ap dirije
Endikasyon ki ap dirije
Estati aparèy la
peryodik doub flache
pa gen koneksyon ak routeur
klere kontinyèlman
koneksyon etabli ak routeur la
flache inifòm peryodik
mòd pwen aksè wi-fi
etenn
Pa gen ekipman pou pouvwa
Louvri yon navigatè entènèt epi antre tèks "192.168.4.1" nan ba adrès la, ale nan paj paramèt rezo aparèy la.
Ranpli jaden yo jan sa a:
- "Non rezo" ak "Modpas" (pou konekte aparèy la ak routeur Wi-Fi lakay ou).
- "Idantifikasyon aparèy" ak "Kle otorizasyon" (pou otorize aparèy la sou sèvis MGT24 la).
Egzanp pou mete paramèt rezo aparèy la
Sove anviwònman yo epi rdemare aparèy la.
Isit la
Etap 4. Konekte detèktè (si ou vle)
Firmware aktyèl la sipòte jiska kat detèktè tanperati ds18b20. Isit la
Seksyon II. Programmation vizyèl
Etap 1: Kreye Scripts
Itilize kòm yon anviwònman pwogramasyon
Mwen te ajoute blòk espesyalize pou ekri ak li paramèt aparèy. Nenpòt paramèt jwenn aksè pa non. Pou paramèt aparèy aleka yo, yo itilize non konpoze: "parameter@device".
Lis deroule nan opsyon
Egzanp senaryo pou chanje siklik sou ak sou chaj la (1Hz):
Yon egzanp yon script senkronize operasyon an nan de aparèy separe. Savwa, relè a nan aparèy la sib repete operasyon an nan relè a nan aparèy la aleka.
Senaryo pou tèmostat (san isterèz):
Pou kreye scripts pi konplèks, ou ka itilize varyab, bouk, fonksyon (ak agiman) ak lòt konstwi. Mwen pa pral dekri tout bagay sa yo an detay isit la deja gen anpil sou nèt la.
Etap 2: Lòd Scripts
Script la kouri kontinyèlman, epi le pli vit ke li rive nan fen li, li kòmanse ankò. Gen de blòk ki ka pran yon poz tanporèman script la, "reta" ak "poz".
Yo itilize blòk "reta" pou reta milisgond oswa mikrosgond. Blòk sa a estrikteman kenbe entèval tan an, bloke operasyon an nan aparèy la tout antye.
Yo itilize blòk "poz" pou dezyèm (oswa mwens) reta, epi li pa bloke ekzekisyon lòt pwosesis nan aparèy la.
Si script nan tèt li gen yon bouk enfini, kò a pa gen "poz", entèprèt la poukont li kòmanse yon ti poz.
Si pile memwa atribye ba yo fin itilize, entèprèt la ap sispann egzekite yon script ki grangou pouvwa konsa (fè atansyon ak fonksyon rekursif).
Etap 3: Debogaj Scripts
Pou debug yon script ki te deja chaje nan aparèy la, ou ka kouri yon tras pwogram etap pa etap. Sa a ka trè itil lè konpòtman an nan script la te tounen diferan de sa otè a te gen entansyon. Nan ka sa a, trase pèmèt otè a byen vit jwenn sous pwoblèm nan epi korije erè a nan script la.
Senaryo pou kalkile faktè nan mòd debug:
Zouti debug la trè senp epi li konsiste de twa bouton prensipal: "kòmanse", "yon etap pi devan" ak "sispann" (se pou nou pa bliye tou sou "antre" ak "sòti" mòd debug). Anplis de trase etap-pa-etap, ou ka mete yon breakpoint sou nenpòt blòk (pa klike sou blòk la).
Pou montre valè aktyèl yo nan paramèt (detèktè, rle) nan monitè a, sèvi ak "enprime" blòk la.
Isit la
Seksyon pou kirye yo. Ki sa ki anba kapo a?
Nan lòd pou scripts yo travay sou aparèy sib la, yo te devlope yon entèprèt bytecode ak yon asanblaj ki gen 38 enstriksyon yo. Kòd sous Blockly a gen yon dèlko kòd espesyalize ki bati nan li ki konvèti blòk vizyèl nan enstriksyon asanble. Imedyatman, pwogram asanble sa a konvèti nan bytecode epi yo transfere nan aparèy la pou ekzekisyon.
Achitekti machin vityèl sa a se byen senp epi pa gen okenn pwen patikilye nan dekri li sou entènèt la ou pral jwenn anpil atik sou konsepsyon machin yo vityèl ki pi senp.
Mwen anjeneral asiyen 1000 bytes pou pil machin vityèl mwen an, ki ase pou rezèv. Natirèlman, repiyans gwo twou san fon ka fin itilize nenpòt pil, men yo pa gen anpil chans pou yo gen nenpòt itilizasyon pratik.
Bytecode a ki kapab lakòz se byen kontra enfòmèl ant. Kòm yon egzanp, bytecode pou kalkile menm faktori a se sèlman 49 bytes. Sa a se fòm vizyèl li yo:
Epi sa a se pwogram asanblaj li a:
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
Si fòm asanble reprezantasyon an pa gen okenn valè pratik, Lè sa a, tab "javascrit" la, okontrè, bay yon gade ki pi abitye pase blòk vizyèl:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Konsènan pèfòmans. Lè mwen te kouri script flasher ki pi senp la, mwen te resevwa yon onn kare 47 kHz sou ekran osiloskop la (a yon vitès revèy processeur 80 MHz).
Mwen panse ke sa a se yon bon rezilta, omwen vitès sa a se prèske dis fwa pi vit pase
Pati final la
Pou rezime, mwen pral di ke itilizasyon script pèmèt nou pa sèlman pwograme lojik operasyon an nan yon aparèy separe, men tou, li fè li posib konekte plizyè aparèy nan yon sèl mekanis, kote kèk aparèy enfliyanse konpòtman an nan lòt moun.
Mwen sonje tou ke metòd la chwazi pou estoke scripts (dirèkteman nan aparèy yo tèt yo, epi yo pa sou sèvè a) senplifye chanje nan aparèy ki deja travay nan yon lòt sèvè, pou egzanp nan yon Franbwaz lakay, isit la.
Sa a tout, mwen pral kontan tande konsèy ak kritik konstriktif.
Sous: www.habr.com