Artikkeli ohjelmoitavan logiikkaohjaimen luomisesta halvasta kiinalaisesta laitteesta. Tällaista laitetta käytetään sekä kotiautomaatiossa että käytännön tunneilla koulun tietojenkäsittelyssä.
Viitteeksi, oletusarvoisesti Sonoff Basic -ohjelma toimii mobiilisovelluksen kanssa kiinalaisen pilvipalvelun kautta; ehdotetun muutoksen jälkeen kaikki muu vuorovaikutus tämän laitteen kanssa on mahdollista selaimessa.
Osa I. Sonoffin yhdistäminen MGT24-palveluun
Vaihe 1: Luo ohjauspaneeli
Rekisteröidy sivustolla
jäsenkirjautuminen
Luo ohjauspaneeli uudelle laitteelle napsauttamalla +-painiketta.
Esimerkki paneelin luomisesta
Kun paneeli on luotu, se näkyy paneeliluettelossasi.
Etsi luodun paneelin "Setup"-välilehdeltä "Device ID"- ja "Authorization Key" -kentät, joita tarvitaan jatkossa Sonoff-laitetta määritettäessä.
Esimerkki välilehdestä
Vaihe 2. Päivitä laite
Apuohjelman käyttäminen
Vaihe 3. Laitteen asetukset
Kytke laitteeseen virta, kun LED-valo syttyy, paina painiketta ja pidä sitä painettuna, kunnes LED alkaa vilkkua ajoittain tasaisesti.
Tällä hetkellä ilmestyy uusi wi-fi-verkko nimeltä “PLC Sonoff Basic”, yhdistä tietokoneesi tähän verkkoon.
LED-ilmaisimen selitys
LED-ilmaisin
Laitteen tila
ajoittain kaksinkertainen vilkkuminen
ei yhteyttä reitittimeen
loistaa jatkuvasti
yhteys reitittimeen
säännöllinen tasainen vilkkuminen
wi-fi-tukiasematila
sammunut
Ei virtalähdettä
Avaa Internet-selain ja kirjoita osoiteriville teksti "192.168.4.1", siirry laitteen verkkoasetussivulle.
Täytä kentät seuraavasti:
- "Verkon nimi" ja "Salasana" (laitteen yhdistämiseksi kodin Wi-Fi-reitittimeen).
- “Device ID” ja “Authorization key” (valtuuttamaan laite MGT24-palvelussa).
Esimerkki laitteen verkkoparametrien asettamisesta
Tallenna asetukset ja käynnistä laite uudelleen.
Täällä
Vaihe 4. Antureiden liittäminen (valinnainen)
Nykyinen laiteohjelmisto tukee jopa neljää ds18b20-lämpötila-anturia. Tässä
Osa II. Visuaalinen ohjelmointi
Vaihe 1: Luo komentosarjat
Käytetään ohjelmointiympäristönä
Lisäsin erikoislohkoja laiteparametrien kirjoittamiseen ja lukemiseen. Kaikkiin parametreihin päästään nimellä. Etälaitteiden parametreille käytetään yhdistettyjä nimiä: "parameter@device".
Vaihtoehtojen pudotusvalikko
Esimerkki skenaario kuorman syklisestä kytkemisestä päälle ja pois (1 Hz):
Esimerkki komentosarjasta, joka synkronoi kahden erillisen laitteen toiminnan. Nimittäin kohdelaitteen rele toistaa etälaitteen releen toiminnan.
Termostaatin skenaario (ilman hystereesiä):
Monimutkaisempien komentosarjojen luomiseksi voit käyttää muuttujia, silmukoita, funktioita (argumenteilla) ja muita rakenteita. En kuvaile tätä kaikkea tässä yksityiskohtaisesti, verkossa on jo melko paljon.
Vaihe 2: Skriptien järjestys
Skripti toimii jatkuvasti, ja heti kun se saavuttaa loppunsa, se alkaa uudelleen. Tässä tapauksessa on kaksi lohkoa, jotka voivat keskeyttää komentosarjan väliaikaisesti, "viive" ja "tauko".
"Viive"-lohkoa käytetään millisekunnin tai mikrosekunnin viiveille. Tämä lohko ylläpitää tiukasti aikaväliä ja estää koko laitteen toiminnan.
"Tauko"-lohkoa käytetään toiselle (tai pienemmälle) viiveelle, eikä se estä muiden prosessien suorittamista laitteessa.
Jos skripti itsessään sisältää äärettömän silmukan, jonka rungossa ei ole "taukoa", tulkki käynnistää itsenäisesti lyhyen tauon.
Jos varattu muistipino on käytetty loppuun, tulkki lopettaa tällaisen tehonnälkäisen skriptin suorittamisen (ole varovainen rekursiivisten funktioiden kanssa).
Vaihe 3: Skriptien virheenkorjaus
Jos haluat korjata laitteeseen jo ladatun skriptin vian, voit suorittaa ohjelman jäljityksen vaihe vaiheelta. Tämä voi olla erittäin hyödyllistä, kun käsikirjoituksen käyttäytyminen osoittautui erilaiseksi kuin kirjoittaja tarkoitti. Tässä tapauksessa jäljityksen avulla kirjoittaja voi nopeasti löytää ongelman lähteen ja korjata skriptin virheen.
Skenaario factorial-laskennassa virheenkorjaustilassa:
Debug-työkalu on hyvin yksinkertainen ja koostuu kolmesta pääpainikkeesta: "aloita", "yksi askel eteenpäin" ja "pysäytys" (älkäämme myöskään unohtako "enter" ja "exit" -virheenkorjaustilaa). Vaiheittaisen jäljityksen lisäksi voit asettaa keskeytyskohdan mille tahansa lohkolle (napsauttamalla lohkoa).
Voit näyttää parametrien (anturit, releet) nykyiset arvot näytössä käyttämällä "print" -lohkoa.
Täällä
Osio uteliaille. Mitä konepellin alla on?
Jotta komentosarjat toimisivat kohdelaitteella, kehitettiin tavukooditulkki ja 38 käskyn kokoaja. Blocklyn lähdekoodiin on sisäänrakennettu erikoistunut koodigeneraattori, joka muuntaa visuaaliset lohkot kokoonpanoohjeiksi. Myöhemmin tämä kokoonpanoohjelma muunnetaan tavukoodiksi ja siirretään laitteeseen suoritettavaa varten.
Tämän virtuaalikoneen arkkitehtuuri on melko yksinkertainen, eikä sen kuvailemisessa ole erityistä järkeä; Internetistä löydät monia artikkeleita yksinkertaisimpien virtuaalikoneiden suunnittelusta.
Varaan yleensä 1000 tavua virtuaalikoneeni pinolle, mikä riittää ylimääräiseksi. Tietysti syvät rekursiot voivat tyhjentää minkä tahansa pinon, mutta niistä ei todennäköisesti ole käytännön hyötyä.
Tuloksena oleva tavukoodi on melko kompakti. Esimerkkinä, tavukoodi saman faktoriaalin laskemiseksi on vain 49 tavua. Tämä on sen visuaalinen muoto:
Ja tämä on hänen kokoonpanoohjelmansa:
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
Jos esitysmuodolla ei ole käytännön arvoa, "javascrit" -välilehti päinvastoin antaa tutumman ilmeen kuin visuaaliset lohkot:
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
Suoritukseen liittyen. Kun suoritin yksinkertaisinta flasher-skriptiä, sain oskilloskoopin näytölle 47 kHz:n neliöaallon (prosessorin kellotaajuudella 80 MHz).
Mielestäni tämä on hyvä tulos, ainakin tämä nopeus on melkein kymmenen kertaa nopeampi kuin
Viimeinen osa
Yhteenvetona sanon, että komentosarjojen käyttö antaa meille mahdollisuuden paitsi ohjelmoida erillisen laitteen toiminnan logiikkaa, myös mahdollistaa useiden laitteiden yhdistämisen yhdeksi mekanismiksi, jossa jotkut laitteet vaikuttavat muiden käyttäytymiseen.
Huomaa myös, että valittu skriptien tallennustapa (suoraan itse laitteisiin, ei palvelimelle) yksinkertaistaa jo toimivien laitteiden vaihtamista toiseen palvelimeen, esimerkiksi kotivadelmaan, täällä
Siinä kaikki, kuulen mielelläni neuvoja ja rakentavaa kritiikkiä.
Lähde: will.com