Artikkel sellest, kuidas odavast Hiina seadmest programmeeritavat loogikakontrollerit luua. Selline seade leiab kasutust nii koduautomaatikas kui ka kooli informaatika praktiliste tundidena.
Võrdluseks, vaikimisi töötab Sonoff Basic programm mobiilirakendusega Hiina pilveteenuse kaudu; pärast kavandatud muudatust on kogu edasine suhtlus selle seadmega brauseris võimalik.
Jaotis I. Sonoffi ühendamine teenusega MGT24
1. samm: looge juhtpaneel
Registreeruge saidil
Sisselogimine süsteemi
Uue seadme juhtpaneeli loomiseks klõpsake nuppu "+".
Näide paneeli loomisest
Kui paneel on loodud, kuvatakse see teie paneelide loendis.
Loodud paneeli vahekaardilt “Seadistamine” leidke väljad “Seadme ID” ja “Authorization Key”, edaspidi on seda teavet vaja Sonoffi seadme seadistamisel.
Vahekaardi näide
Samm 2. Värskendage seadet
Utiliidi kasutamine
Samm 3. Seadme seadistamine
Lülitage seade sisse, pärast LED-i süttimist vajutage nuppu ja hoidke seda all, kuni LED hakkab perioodiliselt ühtlaselt vilkuma.
Sel hetkel ilmub uus wi-fi võrk nimega "PLC Sonoff Basic", ühendage oma arvuti selle võrguga.
LED indikatsiooni selgitus
LED indikaator
Seadme olek
perioodiline kahekordne vilkumine
puudub ühendus ruuteriga
särab pidevalt
ühendus ruuteriga loodud
perioodiline ühtlane vilkumine
Wi-Fi pääsupunkti režiim
kustunud
Toiteallikas puudub
Avage Interneti-brauser ja sisestage aadressiribale tekst "192.168.4.1", minge seadme võrgusätete lehele.
Täitke väljad järgmiselt:
- "Võrgu nimi" ja "Parool" (seadme linkimiseks koduse WiFi-ruuteriga).
- "Seadme ID" ja "Autoriseerimisvõti" (seadme autoriseerimiseks teenuses MGT24).
Näide seadme võrguparameetrite seadistamisest
Salvestage seaded ja taaskäivitage seade.
see on
4. samm. Andurite ühendamine (valikuline)
Praegune püsivara toetab kuni nelja ds18b20 temperatuuriandurit. Siin
II jaotis. Visuaalne programmeerimine
1. samm: looge skriptid
Kasutatakse programmeerimiskeskkonnana
Lisasin spetsiaalsed plokid seadme parameetrite kirjutamiseks ja lugemiseks. Igale parameetrile pääseb juurde nime järgi. Kaugseadmete parameetrite jaoks kasutatakse liitnimesid: "parameter@device".
Valikute rippmenüü
Näidisstsenaarium koormuse tsükliliseks sisse- ja väljalülitamiseks (1 Hz):
Näide skriptist, mis sünkroonib kahe eraldi seadme tööd. Nimelt kordab sihtseadme relee kaugseadme relee tööd.
Termostaadi stsenaarium (ilma hüstereesita):
Keerulisemate skriptide loomiseks saab kasutada muutujaid, silmuseid, funktsioone (argumentidega) ja muid konstruktsioone. Ma ei kirjelda seda kõike siin üksikasjalikult; võrgus on juba palju.
2. samm: skriptide järjekord
Skript töötab pidevalt ja niipea, kui see jõuab lõpuni, algab see uuesti. Sel juhul on kaks plokki, mis võivad skripti ajutiselt peatada, "viivitus" ja "paus".
"Delay" plokki kasutatakse millisekundite või mikrosekundite viivituste jaoks. See plokk säilitab rangelt ajaintervalli, blokeerides kogu seadme töö.
"Paus" plokki kasutatakse teise (või vähema) viivituse jaoks ja see ei blokeeri muude protsesside täitmist seadmes.
Kui skript ise sisaldab lõpmatut tsüklit, mille sisu ei sisalda "pausi", algatab tõlk iseseisvalt lühikese pausi.
Kui eraldatud mälupinn on ammendatud, lõpetab tõlk sellise energianäljase skripti täitmise (olge rekursiivsete funktsioonidega ettevaatlik).
3. samm: skriptide silumine
Seadmesse juba laaditud skripti silumiseks saate samm-sammult käivitada programmi jälgimise. See võib olla väga kasulik, kui skripti käitumine erineb sellest, mida autor kavatses. Sel juhul võimaldab jälgimine autoril kiiresti leida probleemi allika ja parandada skripti viga.
Silumisrežiimis faktoriaali arvutamise stsenaarium:
Silumistööriist on väga lihtne ja koosneb kolmest peamisest nupust: "start", "üks samm edasi" ja "stopp" (ärge unustagem ka silumisrežiimi sisenemist ja väljumist). Lisaks samm-sammult jälgimisele saate määrata igale plokile katkestuspunkti (klõpsates plokil).
Parameetrite (andurid, releed) praeguste väärtuste kuvamiseks monitoris kasutage plokki "print".
see on
Jaotis uudishimulikele. Mis on kapoti all?
Selleks, et skriptid sihtseadmes töötaksid, töötati välja baitkoodi interpretaator ja 38 juhisega assembler. Blockly lähtekoodil on sisse ehitatud spetsiaalne koodigeneraator, mis teisendab visuaalsed plokid montaažijuhisteks. Seejärel teisendatakse see komplekteerimisprogramm baitkoodiks ja edastatakse täitmiseks seadmesse.
Selle virtuaalmasina arhitektuur on üsna lihtne ja selle kirjeldamisel pole erilist mõtet, Internetist leiate palju artikleid kõige lihtsamate virtuaalmasinate kujundamise kohta.
Tavaliselt eraldan oma virtuaalmasina virna jaoks 1000 baiti, millest piisab varuks. Muidugi võivad sügavad rekursioonid ammendada mis tahes virna, kuid tõenäoliselt pole neil praktilist kasu.
Saadud baitkood on üsna kompaktne. Näiteks on sama faktoriaali arvutamise baitkood ainult 49 baiti. See on selle visuaalne vorm:
Ja see on tema komplekteerija programm:
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
Kui esituse koostevormil pole praktilist väärtust, siis vahekaart „javascrit”, vastupidi, annab tuttavama välimuse kui visuaalsed plokid:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Seoses jõudlusega. Kui ma käivitasin kõige lihtsama vilkuri skripti, sain ostsilloskoobi ekraanil 47 kHz ruutlaine (protsessori taktsagedusel 80 MHz).
Ma arvan, et see on hea tulemus, vähemalt see kiirus on peaaegu kümme korda suurem kui
Viimane osa
Kokkuvõtteks ütlen, et skriptide kasutamine võimaldab meil mitte ainult programmeerida eraldi seadme tööloogikat, vaid võimaldab ühendada mitu seadet üheks mehhanismiks, kus mõned seadmed mõjutavad teiste käitumist.
Samuti märgin, et valitud skriptide salvestamise meetod (otse seadmetes endas, mitte serveris) lihtsustab juba töötavate seadmete ümberlülitamist teisele serverile, näiteks kodusele Raspberryle, siin
See on kõik, ma kuulen hea meelega nõuandeid ja konstruktiivset kriitikat.
Allikas: www.habr.com