Visuaalne programmeerimine Sonoff Basicule

Visuaalne programmeerimine Sonoff Basicule
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 mgt24 (kui pole veel registreerunud) ja logige oma kontoga sisse.
Sisselogimine süsteemiVisuaalne programmeerimine Sonoff Basicule

Uue seadme juhtpaneeli loomiseks klõpsake nuppu "+".
Näide paneeli loomisestVisuaalne programmeerimine Sonoff Basicule

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äideVisuaalne programmeerimine Sonoff Basicule

Samm 2. Värskendage seadet

Utiliidi kasutamine XTCOM_UTIL laadige alla püsivara PLC Sonoff Basic seadmesse, selleks vajate USB-TTL-muundurit. Siin juhendamine и Video juhendamine.

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 seadistamisestVisuaalne programmeerimine Sonoff Basicule

Salvestage seaded ja taaskäivitage seade.
see on Video juhendamine.

4. samm. Andurite ühendamine (valikuline)

Praegune püsivara toetab kuni nelja ds18b20 temperatuuriandurit. Siin Video juhendamine andurite paigaldamiseks. Ilmselt on see samm kõige raskem, kuna selleks on vaja sirgeid käsi ja jootekolbi.

II jaotis. Visuaalne programmeerimine

1. samm: looge skriptid

Kasutatakse programmeerimiskeskkonnana Blokeerivalt, keskkonda on lihtne õppida, nii et lihtsate skriptide loomiseks ei pea te olema programmeerija.

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üüVisuaalne programmeerimine Sonoff Basicule

Näidisstsenaarium koormuse tsükliliseks sisse- ja väljalülitamiseks (1 Hz):
Visuaalne programmeerimine Sonoff Basicule

Näide skriptist, mis sünkroonib kahe eraldi seadme tööd. Nimelt kordab sihtseadme relee kaugseadme relee tööd.
Visuaalne programmeerimine Sonoff Basicule

Termostaadi stsenaarium (ilma hüstereesita):
Visuaalne programmeerimine Sonoff Basicule

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. õppematerjal Blockly kohta.

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:
Visuaalne programmeerimine Sonoff Basicule

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 ülevaatevideo siluri kasutamise kohta.

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:
Visuaalne programmeerimine Sonoff Basicule

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).
Visuaalne programmeerimine Sonoff BasiculeVisuaalne programmeerimine Sonoff Basicule
Ma arvan, et see on hea tulemus, vähemalt see kiirus on peaaegu kümme korda suurem kui Kuu и Espruino.

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 juhendamine.

See on kõik, ma kuulen hea meelega nõuandeid ja konstruktiivset kriitikat.

Allikas: www.habr.com

Lisa kommentaar