
Članak o tome kako od jeftinog kineskog uređaja napraviti programabilni logički kontroler. Ovakav uređaj može se koristiti kako u kućnoj automatizaciji, tako i kao praktične aktivnosti na školskom informatici.
Za informaciju, prema zadanim postavkama program Sonoff Basic radi s mobilnom aplikacijom putem kineske cloud usluge, nakon predložene prepravke, sve buduće interakcije s tim uređajem bit će moguće u pregledniku.
Odjeljak I. Povezivanje Sonoff s uslugom MGT24
Korak 1. Izrada upravljačke ploče
Registrirajte se na stranici (ako još niste registrirani) i prijavite se na svoj račun.
Prijava
Da biste izradili upravljačku ploču za uređaj, kliknite na gumb «+».
Primjer izrade ploče
Nakon što ploča bude izrađena, pojavit će se na popisu vaših ploča.
U odjeljku «Instalacija» odabrane ploče, pronađite polja «ID uređaja» i «Ključ autorizacije», ova informacija će biti potrebna tijekom podešavanja Sonoff uređaja.
Primjer kartice
Korak 2. Preflah uređaja
Pomoću alata preuzmite firmver na uređaj, za to će vam trebati USB-TTL pretvarač. Ovdje i .
Korak 3. Podešavanje uređaja
Povežite uređaj na napajanje, nakon što zasvijetli LED, pritisnite gumb i držite ga pritisnutim dok LED ne počne povremeno treptati.
U tom trenutku pojavit će se nova Wi-Fi mreža pod nazivom «PLC Sonoff Basic», povežite svoj računar s ovom mrežom.
Dekodiranje LED indikacije
LED indikacija
Stanje uređaja
povremeno dvostruko treptanje
nema veze s usmjerivačem
neprekidno svijetli
uspostavljena veza s usmjerivačem
povremeno ravnomjerno treptanje
mod Wi-Fi pristupne točke
ugašen
nema napajanja
Otvorite internetski preglednik i u adresnu traku upišite «192.168.4.1», pređite na stranicu postavki mrežnih parametara uređaja.
Ispunite polja na sljedeći način:
- «Ime mreže» i «Lozinka» (za povezivanje uređaja s kućnim wi-fi usmjerivačem).
- «ID uređaja» i «Ključ autorizacije» (za autorizaciju uređaja na usluzi MGT24).
Primjer postavki mrežnih parametara uređaja
Spremite postavke i ponovo pokrenite uređaj.
Ovdje .
Korak 4. Spojite senzore (opcionalno)
Trenutni firmware podržava do četiri senzora temperature ds18b20. Ovdje na montaži senzora. Očigledno, ovaj korak će biti najteži jer će zahtijevati od vas vješte ruke i lemilicu.
Poglavlje II. Vizualno programiranje
Korak 1. Kreiranje scena
Kao okruženje za programiranje koristi se , okruženje je jednostavno za učenje, tako da za stvaranje jednostavnih scena nije potrebno biti programer.
Dodao sam posebne blokove za zapisivanje i čitanje parametara uređaja. Pristup svakom parametru se vrši po imenu. Za parametre udaljenih uređaja koriste se složena imena: „parametar@uređaj“.
Padajući izbornik parametara
Primjer scene cikličnog uključivanja i isključivanja opterećenja (1Hz):

Primjer scene koja sinkronizira rad dva odvojena uređaja. Naime, relej ciljanog uređaja ponavlja rad releja udaljenog uređaja.

Scenarij za termostat (bez histereze):

Za stvaranje složenijih scena mogu se koristiti varijable, petlje, funkcije (s argumentima) i druge konstrukcije. Neću ovdje detaljno objašnjavati, na mreži već ima dosta .
Korak 2. Redoslijed izvršavanja scena
Scena radi u neprekidnom režimu, i čim dođe do svog kraja, ponovno se pokreće. Pri tome postoje dva bloka koja mogu privremeno obustaviti rad scene, „delay“ i „pause“.
Blok „delay“ koristi se za milisekundne ili mikrosekundne odgode. Ovaj blok strogo poštuje vremenski interval, blokirajući rad cijelog uređaja.
Blok „pause“ koristi se za sekunde (može i manje) odgode, a ne blokira izvršavanje drugih procesa u uređaju.
Ako scena sadrži beskonačnu petlju, u kojoj nije postavljen „pause“, interpreter će samoinicijativno pokrenuti kratku pauzu.
U slučaju iscrpljivanja dodijeljene memorijske stog, interpreter će zaustaviti izvršavanje takve „proždrljive“ scene (budite oprezni s rekurzivnim funkcijama).
Korak 3. Debugiranje scena
Za ispravku već učitanog scenarija na uređaju, možete pokrenuti korak po korak praćenje programa. To može biti izuzetno korisno kada ponašanje scenarija nije onakvo kakvo je autor zamislio. U tom slučaju, praćenje omogućuje autoru brzu identifikaciju izvora problema i ispravku greške u scenariju.
Scenarij za izračunavanje faktorijala u režimu ispravljanja:

Alat za ispravljanje je vrlo jednostavan i sastoji se od tri osnovna gumba: 'pokreni', 'jedan korak naprijed' i 'zaustavi' (također ne zaboravite na 'ulaz' i 'izlaz' iz režima ispravljanja). Osim korak po korak praćenja, možete postaviti točku prekida na bilo kojem bloku (klikom miša na blok).
Kako biste prikazali trenutno stanje parametara (senzori, releji) na monitoru, koristite blok 'print'.
Ovdje o korištenju ispravljivača.
Odjeljak za znatiželjne. A što je to ispod haube?
Kako bi scenariji radili na ciljnom uređaju, razvijen je interpreter bajt koda i asembler s 38 instrukcija. U izvorni kod blockly ugrađen je specijalizirani generator koda koji konvertira vizualne blokove u asemberske instrukcije. U daljnjem postupku, ovaj asemberski program se pretvara u bajt kod i šalje na uređaj na izvršenje.
Arhitektura ove virtuelne mašine je prilično jednostavna i nema posebnog smisla opisivati je, na mreži ćete pronaći mnogo članaka o projektovanju najjednostavnijih virtuelnih mašina.
Za stog svoje virtuelne mašine obično rezerviram 1000 bajtova, što je dovoljno. Naravno, duboke rekurzije mogu iscrpiti bilo koji stog, ali je malo verovatno da će imati praktičnu primenu.
Konačni bajt kod dobija se prilično kompaktno. Na primer, bajt kod za izračunavanje istog faktorijala iznosi samo 49 bajtova. Ovo je njegova vizualna forma prikaza:

A ovo je njegova asemberska 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
Ako asemberska forma prikaza nema neku praktičnu vrednost, tab 'javascrit', naprotiv, daje poznatiji izgled nego vizualni blokovi:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Što se tiče performansi. Kada sam pokrenuo najjednostavniji scenarij treptanja, na ekranu osciloskopa dobio sam meandar od 47 kHz (pri taktu procesora od 80 MHz).


Smem to smatrati pristojnim rezultatom, barem ta brzina je skoro deset puta brža nego kod i .
Završni deo
Zaključno ću reći da primena scenarija ne samo da nam omogućava programiranje logike rada pojedinačnog uređaja, već i pruža mogućnost povezivanja više uređaja u jedinstveni mehanizam, gde jedni uređaji utiču na ponašanje drugih.
Takođe ću napomenuti da odabrani način čuvanja scenarija (direktno u samim uređajima, a ne na serveru) olakšava prebacivanje već aktivnih uređaja na drugi server, na primer na domaći Raspberry, ovde .
Na tome je sve, bio bih srećan da čujem savete i konstruktivnu kritiku.
Izvor: habr.com
