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
Belépés
Vezérlőpult létrehozásához új eszközhöz kattintson a „+” gombra.
Példa panel létrehozására
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ülre
2. lépés: Indítsa újra az eszközt
A segédprogram használata
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ára
Mentse el a beállításokat, és indítsa újra az eszközt.
Itt
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
II. Vizuális programozás
1. lépés: Hozzon létre szkripteket
Programozási környezetként használják
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ája
Példa a terhelés ciklikus be- és kikapcsolására (1 Hz):
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.
A termosztát forgatókönyve (hiszterézis nélkül):
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.
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:
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
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:
É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).
Szerintem ez jó eredmény, legalábbis ez a sebesség majdnem tízszer gyorsabb, mint
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
Ennyi, örömmel fogadok tanácsokat és építő kritikát.
Forrás: will.com