Vizuális programozás a Sonoff Basichez

Vizuális programozás a Sonoff Basichez
Egy cikk arról, hogyan készítsünk programozható logikai vezérlőt egy olcsó kínai eszközből. Egy ilyen eszköz használható lesz mind az otthoni automatizálásban, mind az iskolai számítástechnika gyakorlati osztályaiban.
Referenciaként a Sonoff Basic program alapértelmezés szerint egy mobilalkalmazással működik egy kínai felhőszolgáltatáson keresztül; a javasolt módosítás után minden további interakció ezzel az eszközzel lehetséges a böngészőben.

I. szakasz. A Sonoff csatlakoztatása az MGT24 szolgáltatáshoz

1. lépés: Hozzon létre egy vezérlőpultot

Regisztráljon az oldalon mgt24 (ha még nem regisztrált), és jelentkezzen be fiókjával.
BelépésVizuális programozás a Sonoff Basichez

Vezérlőpult létrehozásához új eszközhöz kattintson a „+” gombra.
Példa panel létrehozásáraVizuális programozás a Sonoff Basichez

A panel létrehozása után megjelenik a panellistában.

A létrehozott panel „Beállítás” fülén keresse meg az „Eszközazonosító” és „Jogosultsági kulcs” mezőket, a jövőben ezekre az adatokra lesz szükség a Sonoff eszköz beállításakor.
Példa a fülreVizuális programozás a Sonoff Basichez

2. lépés: Indítsa újra az eszközt

A segédprogram használata XTCOM_UTIL töltse le a firmware-t PLC Sonoff Basic a készülékhez, ehhez USB-TTL átalakítóra lesz szükség. Itt oktatás и Videós utasítás.

3. lépés Eszközbeállítás

Kapcsolja be a készüléket, miután a LED kigyullad, nyomja meg a gombot, és tartsa lenyomva, amíg a LED időszakosan egyenletesen villogni nem kezd.
Ebben a pillanatban megjelenik egy új wi-fi hálózat, a „PLC Sonoff Basic”, csatlakoztassa számítógépét ehhez a hálózathoz.
A LED jelzés magyarázata

LED jelzés
Eszköz állapota

időszakos kettős villogás
nincs kapcsolat a routerrel

folyamatosan világít
kapcsolat létrejött a routerrel

időszakos egységes villogás
wi-fi hozzáférési pont mód

kialudt
Nincs tápellátás

Nyisson meg egy internetböngészőt, írja be a „192.168.4.1” szöveget a címsorba, majd lépjen az eszköz hálózati beállításainak oldalára.

Töltse ki a mezőket az alábbiak szerint:

  • „Hálózatnév” és „Jelszó” (az eszköz és az otthoni wi-fi útválasztó összekapcsolásához).
  • „Eszközazonosító” és „Jogosultsági kulcs” (az eszköz engedélyezésére az MGT24 szolgáltatásban).

Példa az eszköz hálózati paramétereinek beállításáraVizuális programozás a Sonoff Basichez

Mentse el a beállításokat, és indítsa újra az eszközt.
Itt Videós utasítás.

4. lépés: Érzékelők csatlakoztatása (opcionális)

A jelenlegi firmware legfeljebb négy ds18b20 hőmérséklet-érzékelőt támogat. Itt Videós utasítás érzékelők felszereléséhez. Úgy tűnik, ez a lépés lesz a legnehezebb, mivel ehhez egyenes karokra és forrasztópáka kell.

II. Vizuális programozás

1. lépés: Hozzon létre szkripteket

Programozási környezetként használják Blokkoltan, a környezet könnyen megtanulható, így nem kell programozónak lenni az egyszerű szkriptek létrehozásához.

Speciális blokkokat adtam hozzá az eszközparaméterek írására és olvasására. Bármely paraméter névvel érhető el. A távoli eszközök paramétereihez összetett neveket használunk: „parameter@device”.
A lehetőségek legördülő listájaVizuális programozás a Sonoff Basichez

Példa a terhelés ciklikus be- és kikapcsolására (1 Hz):
Vizuális programozás a Sonoff Basichez

Példa két különálló eszköz működését szinkronizáló szkriptre. Ugyanis a céleszköz reléje megismétli a távoli eszköz reléjének működését.
Vizuális programozás a Sonoff Basichez

A termosztát forgatókönyve (hiszterézis nélkül):
Vizuális programozás a Sonoff Basichez

Bonyolultabb szkriptek létrehozásához használhat változókat, ciklusokat, függvényeket (argumentumokkal) és egyéb konstrukciókat. Itt nem írom le részletesen, elég sok van már a neten. oktatási anyagok a Blocklyról.

2. lépés: A parancsfájlok sorrendje

A szkript folyamatosan fut, és amint eléri a végét, újraindul. Ebben az esetben két blokk van, amelyek ideiglenesen szüneteltethetik a szkriptet, a „késleltetés” és a „szünet”.
A "késleltetés" blokkot ezredmásodperces vagy mikroszekundumos késleltetésekhez használják. Ez a blokk szigorúan fenntartja az időintervallumot, blokkolva a teljes eszköz működését.
A „szünet” blokk második (vagy kevesebb) késleltetésre használatos, és nem blokkolja az eszköz egyéb folyamatainak végrehajtását.
Ha maga a szkript tartalmaz egy végtelen ciklust, amelynek törzsében nincs „szünet”, akkor az értelmező önállóan kezdeményez egy rövid szünetet.
Ha a lefoglalt memóriaverem kimerült, az értelmező leállítja az ilyen energiaéhes szkript végrehajtását (legyen óvatos a rekurzív függvényekkel).

3. lépés: Szkriptek hibakeresése

Az eszközre már betöltött szkript hibakereséséhez lépésről lépésre futtathat egy programkövetést. Ez rendkívül hasznos lehet, ha a forgatókönyv viselkedése eltér a szerző szándékától. Ebben az esetben a nyomkövetés lehetővé teszi a szerző számára, hogy gyorsan megtalálja a probléma forrását, és kijavítsa a hibát a szkriptben.

Forgatókönyv a faktoriális számításhoz hibakeresési módban:
Vizuális programozás a Sonoff Basichez

A hibakereső eszköz nagyon egyszerű, és három fő gombból áll: „start”, „egy lépés előre” és „stop” (ne feledkezzünk meg az „belépés” és „kilépés” hibakeresési módról sem). A lépésről lépésre történő nyomkövetés mellett bármely blokkon beállíthat töréspontot (a blokkra kattintva).
A paraméterek (érzékelők, relék) aktuális értékeinek monitoron történő megjelenítéséhez használja a „nyomtatás” blokkot.
Itt áttekintő videó a hibakereső használatáról.

Szekció a kíváncsiskodóknak. Mi van a motorháztető alatt?

Annak érdekében, hogy a szkriptek működjenek a céleszközön, egy bájtkód értelmezőt és egy 38 utasítást tartalmazó assemblert fejlesztettek ki. A Blockly forráskódjába egy speciális kódgenerátor van beépítve, amely a vizuális blokkokat összeállítási utasításokká alakítja. Ezt követően ezt az összeszerelő programot bájtkóddá alakítják, és végrehajtásra átküldik az eszközre.
Ennek a virtuális gépnek az architektúrája meglehetősen egyszerű, és nincs különösebb értelme leírni, az interneten számos cikket találhat a legegyszerűbb virtuális gépek tervezéséről.
Általában 1000 bájtot osztok ki a virtuális gépem vereméhez, ami elegendő a tartalékhoz. Természetesen a mély rekurziók kimeríthetnek minden veremet, de nem valószínű, hogy lesz gyakorlati hasznuk.

Az így kapott bájtkód meglehetősen kompakt. Példaként, ugyanazon faktoriális kiszámításához használt bájtkód csak 49 bájt. Ez a vizuális formája:
Vizuális programozás a Sonoff Basichez

És ez az ő assembler programja:

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

Ha az ábrázolás összeállítási formájának nincs gyakorlati értéke, akkor a „javascrit” fül éppen ellenkezőleg, ismerősebb megjelenést kölcsönöz, mint a vizuális blokkok:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

A teljesítménnyel kapcsolatban. Amikor a legegyszerűbb villogó szkriptet futtattam, 47 kHz-es négyszöghullámot kaptam az oszcilloszkóp képernyőjén (80 MHz-es processzor órajelen).
Vizuális programozás a Sonoff BasichezVizuális programozás a Sonoff Basichez
Szerintem ez jó eredmény, legalábbis ez a sebesség majdnem tízszer gyorsabb, mint Lua и Espruino.

Az utolsó rész

Összefoglalva elmondom, hogy a szkriptek használata nem csak egy külön eszköz működési logikájának programozását teszi lehetővé, hanem több eszköz egyetlen mechanizmusba történő összekapcsolását is lehetővé teszi, ahol egyes eszközök mások viselkedését befolyásolják.
Azt is megjegyzem, hogy a szkriptek tárolásának választott módja (közvetlenül magukban az eszközökben, és nem a szerveren) leegyszerűsíti a már működő eszközök másik szerverre, például otthoni Raspberry-re való átváltását, itt oktatás.

Ennyi, örömmel fogadok tanácsokat és építő kritikát.

Forrás: will.com

Hozzászólás