
Članek o tem, kako iz poceni kitajske naprave narediti programabilni logični krmilnik. Takšna naprava bo našla svojo uporabo tako v domači avtomatizaciji kot tudi pri praktičnih vajah na šolskem računalništvu.
Za informacijo, privzeto program Sonoff Basic deluje z mobilno aplikacijo prek kitajske oblačne storitve, po predlagani predelavi pa bo možno vse nadaljnje interakcije s to napravo opraviti v brskalniku.
Oddelek I. Povezovanje Sonoff z MGT24 storitvijo
Korak 1. Ustvarjanje nadzorne plošče
Registrirajte se na spletni strani (če še niste registrirani) in se prijavite s svojim računom.
Prijava
Da ustvarite nadzorno ploščo za novo napravo, kliknite gumb „+“.
Primer ustvarjanja nadzorne plošče
Ko bo nadzorna plošča ustvarjena, se bo pojavila na seznamu vaših nadzornih plošč.
Na zaviheku „Namestitev“ ustvarjene nadzorne plošče poiščite polja „ID naprave“ in „Ključ avtorizacije“, ta informacija bo potrebna pri nastavitvi naprave Sonoff.
Primer zavihka
Korak 2. Predelava naprave
Z orodjem naložite programsko opremo na napravo, za to boste potrebovali USB-TTL pretvornik. Tukaj in .
Korak 3. Nastavitev naprave
Povežite napravo s napajanjem, ko se prižge LED, pritisnite gumb in ga držite pritisnjenega, dokler LED ne začne enakomerno bliskati.
V tem trenutku se bo pojavila nova wi-fi mreža z imenom „PLC Sonoff Basic“, povežite svoj računalnik s to mrežo.
Razlaga LED indikacije
LED indikacija
Stanje naprave
občasno dvojno bliskanje
ni povezave z usmerjevalnikom
stalno sveti
povezava z usmerjevalnikom je vzpostavljena
občasno enakomerno bliskanje
pristopna točka wi-fi
ugasnjena
ni napajanja
Odprite internetni brskalnik in v naslovno vrstico vpišite „192.168.4.1“, preklopite na stran nastavitev omrežnih parametrov naprave.
Izpolnite polja na naslednji način:
- „Ime omrežja“ in „Geslo“ (za povezavo naprave z domačim wi-fi usmerjevalnikom).
- „ID naprave“ in „Ključ avtorizacije“ (za avtorizacijo naprave na MGT24 storitvi).
Primer nastavitve omrežnih parametrov naprave
Shrani nastavitve in znova zaženi napravo.
Tukaj .
Korak 4. Povezivanje senzora (opcijski)
Trenutni firmver podržava do četiri temperaturna senzora ds18b20. Ovdje su informacije o instalaciji senzora. Ovo će očigledno biti najizazovniji korak, jer će zahtijevati vaše vješte ruke i lemilicu.
Poglavlje II. Vizualno programiranje
Korak 1. Kreiranje skripti
Kao okruženje za programiranje koristi se , okruženje je jednostavno za učenje, tako da ne morate biti programer da biste kreirali jednostavne skripte.
Dodao sam specijalizirane blokove za zapisivanje i čitanje parametara uređaja. Pristup bilo kojem parametru se ostvaruje po imenu. Za parametre udaljenih uređaja koriste se sastavljena imena: „parametar@uređaj”.
Spisak parametara
Primjer skripte cikličnog uključivanja i isključivanja opterećenja (1Hz):

Primjer skripte koja sinkronizira rad dva odvojena uređaja. Tačnije, relej ciljnog uređaja ponavlja rad releja udaljenog uređaja.

Skripta za termostat (bez histereze):

Za kreiranje složenijih skripti možete koristiti varijable, petlje, funkcije (sa argumentima) i druge konstrukcije. Neću ovdje detaljno objašnjavati, već postoji prilično mnogo .
Korak 2. Redoslijed izvršavanja skripti
Skripta radi u neprestanom režimu, a čim dođe do svog kraja, ponovno se pokreće. Pri tome postoje dva bloka koja mogu privremeno obustaviti rad skripte, „delay” i „pause”.
Blok „delay” se koristi za milisekundne ili mikrosekundne odgode. Ovaj blok strogo drži vremenski interval, blokirajući rad cijelog uređaja.
Blok „pause” se koristi za odgode u sekundama (može i manje), i ne blokira izvršavanje drugih procesa u uređaju.
Ako skripta unutar sebe sadrži beskonačnu petlju, u kojoj se ne nalazi „pause”, interpretator samoinicijativno pokreće malu pauzu.
U slučaju preopterećenja dodijeljene memorije, interpretator će zaustaviti izvršavanje takve 'proždrljive' skripte (budite oprezni s rekurzivnim funkcijama).
Korak 3. Debagiranje skripti
Za odpravo težav z že naloženim scenarijem na napravi lahko zaženete sledenje programa po korakih. To je izjemno koristno, kadar se je obnašanje scenarija izkazalo za drugačno od tistega, ki ga je avtor zamišljal. V tem primeru sledenje omogoča avtorju hitro najti vir težave in popraviti napako v scenariju.
Scenarij za izračun faktoriela v načinu odpravljanja napak:

Orodje za odpravljanje napak je zelo preprosto in sestavlja ga tri glavne gumbe: »začetek«, »korak naprej« in »ustavi« (prav tako ne pozabite na »vstop« in »izstop« iz načina odpravljanja napak). Poleg korak po koraku sledenja lahko postavite tudi točko prekinitev na katerikoli blok (s klikom z miško nad blokom).
Za izpis trenutnih vrednosti parametrov (senzorji, releji) uporabite blok »print«.
Tukaj o uporabi razhroščevalnika.
Oddelek za radovedne. Kaj se dogaja pod pokrovom?
Za delovanje scenarijev na ciljni napravi je bil razvit interpretator bajtnega kode in assembler na 38 ukazov. V izvorno kodo blockly je bil vgrajen specializiran generator kode, ki pretvarja vizualne bloke v assemblerne ukaze. V nadaljevanju se ta assemblerni program pretvori v bajtno kodo in prenese v napravo za izvajanje.
Arhitektura te virtualne naprave je precej preprosta in nima posebnega smisla, da jo opisujemo; na spletu lahko najdete številne članke o oblikovanju najpreprostejših virtualnih naprav.
Za sklad svoje virtualne naprave običajno dodelim 1000 bajtov, kar je dovolj. Seveda lahko globoke rekurzije porabijo katerikoli sklad, a malo verjetno je, da bi jim našli praktično uporabo.
Končna bajtna koda je precej kompaktna. Kot primer, bajtna koda za izračun istega faktoriela obsega le 49 bajtov. To je njena vizualna oblika:

In to je njen assemblerni program:
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
Če forma assemblerne predstavitve nima praktične vrednosti, pa zavihek »javascrit« nasprotno ponuja bolj znan videz kot vizualni bloki:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Kar zadeva zmogljivost. Ko sem zagnal najpreprostejšo migajočo skripto, sem na osciloskopskem zaslonu prejel meander 47 kHz (pri taktu 80 MHz procesorja).


Menim, da je to odličen rezultat, vsaj ta hitrost je skoraj desetkrat hitrejša kot pri in .
Zaključni del
Prav tako bi rekel, da nam uporaba skript omogoča ne le programiranje logike delovanja posameznega naprave, ampak tudi povezovanje več naprav v enoten mehanizem, kjer ene naprave vplivajo na vedenje drugih.
Prav tako bi poudaril, da izbrani način shranjevanja skript (takoj v napravah, ne na strežniku) poenostavi preklop že delujočih naprav na drug strežnik, na primer na domači Raspberry, tukaj. .
To je vse, vesel bom, da slišim nasvete in konstruktivno kritiko.
Izvor: habr.com
