ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

Főbb pontok, vagy amiről ez a cikk szól

ТMivel az emberek érdeklődési köre eltérő, és az embereknek kevés az idejük, akkor röviden a cikk tartalmáról.

СEz a cikk a vezérlőprojekt áttekintése a minimális áron és képességgel vizuális programozás WEB böngészőn keresztül.

ПMivel ez egy áttekintő cikk, amelynek célja, hogy megmutassa, „mit lehet kisajtolni egy filléres vezérlőből”, nem érdemes mély igazságokat és részletes algoritmusokat keresni benne.

РA WiFI chipre épülő vezérlő felépítésének motivációja, ötletei és eredményei mérlegelnek ESP8266.

Vigyázat

Nem akartam megírni ezt a cikket. Egyáltalán nem rajongok a cikkírásért. Ezen kell gondolkodni, és sokat. Gondold át, hogyan írj úgy, hogy a minimumra csökkenjen azoknak a száma, akik félreértenek téged. Gondold át, hogyan ne ess túlzásokba. És még sok mindenen kell gondolkodni.
De a barátaim azt mondták, hogy mivel az IoT és más kis automatizálás terén tett erőfeszítéseim érdekesek számukra, így mások és a nagyközönség számára is érdekesek lehetnek. Nos, hol gyűlik össze az ez iránt érdeklődő közönség? Természetesen a hub-on. És itt vagyok. Régi olvasó és új író.

Nem vállalok felelősséget az olvasónak esetleg nem tetsző hibákért, pontatlanságokért, elírásokért, elavult előadásmódokért stb. Saját felelősségre olvassa el.

Azonnal figyelmeztetlek is, hogy nem fogom elmagyarázni, mi az az MQTT, WiFi és UDP multicast és egyéb, ami nem kapcsolódik közvetlenül a témához. A cikk végén található néhány link.

Egy ötlet születése vagy néhány dalszöveg

ЖAz élet nem könnyű dolog, és Őfelsége az esély fontos szerepet játszik benne. Szeretném tehát megosztani, hogy a véletlenszerű események a természetes lustasággal párosulva hogyan eredményezték az ESP8266-on alapuló vezérlő meglehetősen érdekes fejlesztését.

НAz egész meglehetősen rutinszerűen kezdődött: szerettem volna kiépíteni egy rendszert az országban lévő kerti ágyások és bokrok vízellátásának, öntözésének szabályozására.

Нó, mivel a csöveken, tartályokon és csapokon csak a vakáción tudok teljes mértékben dolgozni, ami még több mint hat hónap múlva volt - minden a kollégákkal, barátokkal és elvtársakkal kötetlen környezetben folytatott munkahelyi megbeszélésekre korlátozódott.

ТA „kis automatizálás” témája, vagy ahogy szokták mondani „ezek a kisiskolás-hackerek-hipszterek” – az IoT témája – a dolgok internete – már régóta foglalkoztat. Jóval azelőtt, hogy magát az internetet széles körben használták volna.

ЕMár gyerekként azt akartam, hogy a dolgok „önmaguktól” csináljanak valamit. És kívánatos lenne, ha valahogy távolról irányíthatnám őket. De akkoriban (a 80-as években, a múlt évezred 90-es éveinek eleje) ez meglehetősen nehéz volt. Az internet sehol a világon nem volt széles körben elérhető, ahogy mobiltelefonok, táblagépek, sőt LCD-kijelzők vagy USB flash meghajtók sem voltak sehol. Tehát a „tapsolt villanykapcsolókra” és az egyszerű rádiós távirányítókra kellett korlátoznunk. De abban az időben és abban a korban nem volt rossz és érdekes.

НÓ, ezek a múlt dolgai. Most a 15. század van. És mindenkinek van egy okostelefon a zsebében, az internet szinte mindenhol elérhető, ahol kell és nem kell, és az elérhető elektronikai alkatrészek bázisa mára olyan, hogy alig XNUMX évvel ezelőtt a Föld bolygó átlaglakója álmában sem gondolta volna. .

ПEzért, miután úgy döntöttem, hogy vízügyi vezérlőt építek a dachában, figyelmemet az ESP8266 chipre fordítottam.
Először is, ez a chip olcsó. És ha egy vezérlő nem elég, telepíthet kettőt, hármat vagy ötöt. Másodszor, a fedélzetén van WiFi. Vagyis az interneten keresztül nézheti, mi történik, és akár bármilyen okostelefonról irányíthatja a folyamatot. Természetesen szükség van egy hozzáférési pontra internet-hozzáféréssel, de ez nem probléma. Egyébként szinte mindenhol ott van vagy hamarosan lesz, beleértve a dachámban is.

ПMiután belemerültem az ESP8266 projektjeinek csodálatos világába, meglepve tapasztaltam, hogy ennek a chipnek a nagyszerű képességei ellenére a rajta lévő projektek ritka kivételektől eltekintve két típusra oszthatók: ezek vagy rendkívül primitív programok, mint például a „click” a kapcsolókat az okostelefonjáról, és nézze meg az érzékelő hőmérsékletének állapotát az interneten keresztül"; vagy jó és szilárd JavaScript vagy Lua tolmácsok, de sajnos szinte az összes memóriát felemésztik, és nem engednek semmi komolyat csinálni.

ПAz első ötletem olyan egyszerű volt, mint a palacsinta – írjak egy egyszerű programot a szivattyúk vezérlésére az érzékelők állapota alapján, és ennyi. De, mint egy tapasztalt henger a különböző rendszerek megvalósításának gereblyéjének ugrásában, megértettem, hogy biztosan nem fogom előre látni az algoritmus minden olyan kanyarját, amelyet ki akarok vagy kell kiegyenesítenem a rendszer felépítése során. vízellátó és öntözőrendszer.

ДNem túl kényelmes a programot feldolgozni a dachában, egy sötét pajtában. De neked kell.
Mi a kiút? Természetesen az első dolog, ami eszembe jutott, az volt, hogy testreszabhatóvá tegyem az algoritmust. Egyik kollégám sok tanácsot adott – mit és hogyan állítsunk be. Ezzel már az első ötletemet is megölte. Köszönet neki. Ha nem fedte volna fel a szemem előtt, hogy hány paramétert kell konfigurálnom, valószínűleg nem utasítottam volna el ezt a lehetőséget: az algoritmusbeállítások oldalának elkészítését.

НKijózanított a rémisztő kép a beállítási paraméterek számáról, sőt az egymást befolyásoló paraméterekről is. Ismét rájöttem, hogy nem lehet mindent előre látni...

СEgyszer lefoglalom: lusta vagyok. Nagyon lusta! Őszintén szólva lusta vagyok ahhoz, hogy minden alkalommal újraírjam a programot. Ezért felmerült a feladat - hogyan lehet gyorsan és egyszerűen beállítani egy algoritmust, lehetőleg programozás nélkül? Ráadásul ez az algoritmus meglehetősen bonyolult lesz; sok paramétere lesz; az én esetemre vonatkozik, és mások számára alkalmatlan. És nagyon szeretném többé-kevésbé univerzálissá tenni a készüléket...

ПMivel még körülbelül hat hónap volt hátra a nyaralásig és mindenféle csőszivattyúzásig, úgy döntöttem, hogy időt szakítok és átgondolom, hogyan tegyem kényelmessé és széppé? Hogyan kell programozni programozás nélkül? Hogyan lehet nélkülözni egy billió paramétert, ami a konfigurálás során módosítható?

КSzokás szerint már mindent kitaláltak előttünk: rájöttem, hogy akciónégyzetek formájában akarok algoritmust rajzolni, és összekötni azokat kommunikációs vonalakkal, amelyek megmutatják, hogy honnan és hová repülnek az adatok. Nos, a négyzetre mutatva szeretném beállítani annak egyes paramétereit.

ИAz az ötlet, hogy egy algoritmust négyzetekbe rajzolva határozzunk meg, nem új. Ilyen rendszerek már a 80-as években is léteztek; Most már van egy szupernépszerű NodeRed rendszer, amelyet jól ismernek azok, akik már csatlakoztak a kisméretű automatizálás/IoT világához.

НÓ, itt van a probléma: az ilyen rendszereket „nagy PC-kre” tervezték. A legrosszabb esetben a Raspberry PI-n. De nem az ESP8266-on, amely csak néhány tíz kilobájt RAM-mal rendelkezik, és nincs operációs rendszer!

Кmit kell tenni? És csak két kiút van: írjon és rajzoljon egy programot egy „nagy PC-n” vagy laptopon, majd valamilyen formában átvigye az ESP8266-ra, vagy megpróbálja „betolni a lehetetlent” magába az ESP8266 vezérlőbe.

ПEzért a maximális programom a következő volt: a vezérlő programozásához nem kell más, mint egy WEB-böngészős laptop! Vagyis egy laptop WEB-böngészővel és a vezérlőmmel - ennek elegendőnek kell lennie a vezérlőprogramok teljes konfigurálásához, írásához és rajzolásához.

И, mint kiderült, ezt teljesen meg lehetett valósítani!
Nem untatlak a projektfejlesztés minden részletével. Csak annyit mondok, hogy a fejlesztési folyamat során eszembe jutott és a nyelvembe jutott szavak alapján egy külön „Az elektronikai iparban dolgozók által használt obszcén nyelvek szótára" De mindennek vége. Pontosabban nem mindent, hanem az első, legnehezebb szakaszt, amikor nem világos, hogy ott lesz-e az életképed, vagy ez csak egy szürke herélt delírium egy holdfényes éjszakán.

ПMegosztom az eredményt, ami kijött és megkaptam a nevet "ShIoTiny vezérlő".

Szóval mi történt?

A hardver rész A ShIoTiny vezérlő szabványos és egyszerű: három bemenet „száraz érintkezős” típusú érzékelőkhöz (gombok, reed kapcsolók, ezek egyben vízszint érzékelők is a tartályban), egy ADC bemenet, egy bemenet a hőmérséklet és páratartalom érzékelő csatlakoztatásához. DHT22 típusú vagy hasonló. És végül három kimenet kapcsolórelék formájában 220 Volt, 1 Amperhez. A relé 10A-t ír, de én realista vagyok, és nem engedek át 10A-t az alaplapon. A szivattyúindítók vezérléséhez pedig 1 Amper elég. Mindezt 5-9 voltos feszültségű áramforrásról táplálják.

ЧHogy őszinte legyek, a hőmérséklet-érzékelőt is csak így tettem hozzá, de az ADC-n reménykedtem, hogy megmérem a táphálózat feszültségét. Ki tudja?

РTermészetesen a DHT22 csatlakoztatására szolgáló bemenet kivételével minden bemenetet ellenállások és diódák védenek: az ESP8266-ot nem volt kedvem égetni, a diódák és ellenállások pedig csak néhány kopejkába kerülnek.

fénykép A kész termék a cikk elején látható. Több ilyen táblát rendeltem – mi van, ha elégetem őket, vagy le kell vágnom a sín lábait?
De szerencsére nem kellett.

ФEz a termék természetesen szépség és nagyszerűség. De a kényelem kedvéért az alábbiakban egy rajzvázlat látható az érzékelők és működtetők szimulátorainak a táblához való csatlakoztatásáról.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

Вszintérzékelők helyett Input1..3 gombok, önindítók helyett a Relay1..3 relére csatlakoztatott LED-ek. Nos, egy változó ellenállás az ADC-n a bemeneti feszültség szimulálására.
КA relé kikapcsolásakor a piros LED világít. És ha be van kapcsolva, zöld. Szóval hibakeresést végeztem az asztalon.

КMindezek mellett a tábla bal oldalán egy tápcsatlakozó, a jobb oldalon két szervizgomb található: Reset és AP. Nos, van egy DIP kapcsoló, ami programozási módba kapcsolja a készüléket. Az ESP8266 programozó csatlakozó USB-UART adapteren keresztül is elérhető.

Néhány magyarázat a gombokról. Milyen vissza - és így egyértelmű. És itt a gomb AP kell fordítani ShioTiny hozzáférési pont mód megnyitásához (konfigurációs mód vagy konfigurációs mód). Miért van erre szükség? Nos, például elrontotta a hálózati beállításait, és meg akarja változtatni azokat. Nyomja meg az AP gombot néhány másodpercig (amíg a gyönyörű kék ​​LED fel nem gyullad). Ezután vegye elő okostelefonját vagy laptopját, kapcsolja be a WiFi-t, és lásson ott egy nyitott hozzáférési pontot esp_8266_xxxx néven, és csatlakozzon hozzá. Ezután nyissa meg okostelefonja vagy laptopja böngészőjét, és írja be a címsorba: 192.168.4.1. Ha minden rendben van, akkor a ShioTiny vezérlő oldalára kerül, és újra beállíthatja.

КMint látjuk, a hardver nem bonyolult. Ezért o szoftver rész.

ВLeírom a megvalósítás összes furcsaságát, de később. Majd egyszer. És ma a szoftvert csak „kívülről” fogom vizsgálni, vagyis a felhasználó szemszögéből - magam vagy valaki más, aki vállalta a mesterségem használatának kockázatát (vannak ilyen mutatványosok is).

С A felhasználó szempontjából az eszköz egy HTTP-szerver, amely WiFi-n keresztül érhető el. Minden beállítás, programozás és így tovább egy WEB böngésző segítségével történik.

ИTehát átmentünk a vezérlő oldalára. Mit látunk? És látjuk a „Vezérlés és állapot” fület, amely a használt eszközök aktuális állapotát mutatja: bemenetek, kimenetek, ADC, DHT22. Ezenkívül megjelennek a hozzáférési ponthoz való csatlakozási paraméterek (ha WiFi állomás módban dolgozunk); hozzáférési pont paraméterei (ha WiFi hozzáférési pont módban dolgozunk) vagy mindkettő. Ezen kívül az MQTT brókerrel való kapcsolódási paraméterek megjelennek, ha az MQTT protokollt használják.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

КAmint látjuk, semmi különös vagy érdekes. Nincs is mire kattintani! Bár... Van még két lap! Hálózati beállítások konfigurálása hálózatépítés és program áramkör szerkesztő ElDraw.

Кszóval kitaláltad, hálózatépítés - ez a hálózat beállítása, de nem csak. Van még egy-két érdekes paramétere. Kattintsunk a fülre hálózatépítés és ott körülbelül az ábrán láthatót fogjuk látni.
НA hozzáférési pont nevének és jelszavának beállítása minden üzemmódhoz - WiFi állomás és WiFi hozzáférési pont. Úgy tűnik, minden világos. Valamint a gomb célja "WiFi szkennelés" elég átlátszó.
А itt a legördülő lista "ShIoTiny mód" pontosítást igényel. Az tény, hogy nem tudtam eldönteni, hogy melyik üzemmódban lenne kényelmesebb dolgozni. Ezért az eszköz 5 működési módját biztosította.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

ПSoroljuk fel röviden ezeket az üzemmódokat.

Konfigurációs mód — konfigurációs mód. Ez egy nyitott hozzáférési pont mód 192.168.4.1 fix címmel és esp_8266_xxxx névvel.

Állomás mód — a hozzáférési ponthoz csatlakoztatott WiFi állomás módja.

AP mód — zárt hozzáférési pont mód. A nevet és a jelszót maga állítja be.

AP+állomás mód - ez az AP mód + állomás mód egyidejű aktiválása.

Egymódusú — egyáltalán nem működik hálózati kapcsolat nélkül. Egy magányos irányító, aki viseli súlyos részét...

В bármelyik mód, kivéve "Konfig. mód", a jelölőnégyzet bejelölésével blokkolhat egy WEB-oldalt "Web zárolása Állomás módban". Ez bizonyos biztonsági okokból van így.

НAz MQTT beállításai nyilvánvalóak: szerver, port, jelszó, nyitott kapcsolat vagy által SSL. Itt nem részletezem.

КA ShioTiny vezérlő többek között speciális formátumú csomagokat tud küldeni és fogadni multicast útján. A beállításai is nyilvánvalóak: csoportcím és port.
Természetesen, ha leírod a beállítások minden árnyalatát, akkor külön cikket kapsz, de ez nem része a terveimnek.

Иigen, füllel hálózatépítés többé-kevésbé minden világos. Térjünk át a vezérlő fő funkciójára - a program áramkör-szerkesztőjére ElDraw.

Тa lap megérintésével ElDraw, a következőhöz hasonlót fogunk látni. Természetesen, ha az eszköznek nincs terhelt áramköre, akkor az áramkör mező üres lesz.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

Сbalra - elemek vagy csomópontok (csomópontok) palettája.
Сjogok - séma mező vagy egyszerűen „séma”.
СFelül találhatók a lemezre és a készülékre való be- és kirakodás gombjai, valamint a szerkesztő gombok.

ДAzok számára, akik szerkesztőkkel dolgoztak, a menedzsment általában nyilvánvaló. Hozzá kell adnia egy elemet a diagramhoz - vigye az egérrel, és húzza a palettáról a diagramra. Ha el kell távolítania egy elemet vagy kapcsolatot a diagramból, kattintson rá vagy az egérrel, és nyomja meg a billentyűt AZ. Össze kell kötnünk az elemeket - vesszük az egyik elem bemenetét, és összekapcsoljuk egy másik kimenetével.

ЕVan méretezés is (SHIFT+egérgörgő). Sajnos elemek és elemcsoportok másolása nem lehetséges. De ez engem nem nagyon zavar.

КEzenkívül logikai okokból egy csomópont bemenete csak egy másik csomópont egyik kimenetéhez köthető. De egy csomópont kimenete más csomópontok több bemenetével történik. A bejáratok mindig a csomópontok bal oldalán vannak. A kijáratok mindig a jobb oldalon vannak.

КMilyen képességekkel rendelkezünk az algoritmusok megvalósításához?
ВA lehetőségek meglehetősen szélesek. A paletta az összes vezérlő hardvert reprezentáló csomópontokat tartalmaz ShioTiny: bemenetek, relék, ADC, DHT11/22.

ДAz adatfeldolgozáshoz logikai és aritmetikai csomópontok vannak.

ЧAnnak érdekében, hogy az eszközzel az interneten keresztül dolgozhassunk, vannak csomópontok az előfizetéshez és a paraméterek közzétételéhez az MQTT brókeren.

ЕHa azt szeretnénk, hogy több ShioTiny vezérlő információt cseréljen egymással, akkor csomópontokat használhatunk a paraméterek küldésére és fogadására az UDP multicast protokoll használatával.

КEzen kívül vannak időzítő csomópontok; eseményfeldolgozási vezérlő csomópontok.

ПMondok néhány példát. Például szeretné, hogy a hőmérsékleti és páratartalmi adatok 30 percenként megjelenjenek egy MQTT szerveren? Mi sem lehetne egyszerűbb. Rajzoljunk így.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

Жmém gomb „Feltöltés”. Minden!
ЕHa helyesen konfigurálta a kapcsolatot az MQTT brókerrel a Hálózat lapon, akkor ez minden!
Кfélóránként a brókeren a hőmérséklet /T, a páratartalom pedig a /H témakör alatt jelenik meg. Vagy ha saját témaneveket állít be, akkor azok alatt.
ЗA nyilvánvaló kérdés: miért 18000 30 perc? Mert minden időt tizedmásodpercben mérnek.

ТMost hozzá szeretné adni ehhez a sémához a Relay1 relé bekapcsolásának lehetőségét az interneten keresztül, és még egy bizonyos ideig? Nincs mit. Egészítsük ki a rajzot így.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

ОÖt kattintás a „Feltöltés” ​​gombra. Minden! Most amellett, hogy félóránként megjelenik a hőmérséklet és a páratartalom az MQTT brókeren, lehetőség nyílik a Relay1 relé bekapcsolására is. Igen, ne csak kapcsolja be, hanem pontosan 10 percre. A közvetítést az /r1cmd témakör 1-es értékre állításával engedélyezheti. A relé valós állapota pedig az /r1status témakörben jelenik meg.

ВNemcsak bekapcsolni, hanem idő előtt le is szeretné kapcsolni a relét? Igen, bármit is mondasz. Az alábbi képen látható, hogyan kell ezt csinálni!

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

ПVilágos az elv? Csak rajzold meg az algoritmust az egérrel! És írjon néhány beállítást: idő, téma neve és ennyi. Ez sokkal világosabb, mint egy csomó kód írása.

КMellesleg, a kapcsolatok különböző színekkel való kiemelése nem „Photoshop” - ez a szerkesztő egyik funkciója. A csatlakozásokat tetszés szerint színezheti, hogy ne keveredjen össze.

Нja és ez még nem minden! Az algoritmus hibakereséséhez van egy „Monitor start” gomb. Furcsa módon bekapcsolja a „monitor” módot. Ebben az üzemmódban az összes csomópont összes kimenetének állapotát a rendszer periodikusan kiolvassa a vezérlőből ShioTiny és megjelenik a diagramon. Körülbelül úgy, mint az alábbi képen.

ShioTiny: kis automatizálás, tárgyak internete vagy „hat hónappal a nyaralás előtt”

ТVagyis „majdnem valós időben” láthatjuk, hogy mi van az egyes csomópontok bemenetén és kimenetén. Sokat segít, ha valami nem tiszta.

ЕMég sok „trükköt és funkciót” szeretnék leírni, de a lelkiismeretem nem engedi, hogy egy cikkben rájuk pazarolja az időt. A megvalósított fő ötlet már világos: minimális testreszabható paraméter - maximális tisztaság.

Szépséghiba

КTermészetesen azt akarom, hogy ne legyen légy, de a világ nem ideális. A szerkesztőm és a vezérlőm sem tökéletes. Két fő jellemzőt fedeztem fel, amelyeket még nem sikerült megszüntetnem.

ВElőször is, néha hibák lépnek fel az elemek csoportos mozgatásakor. De ez nem nagyon zavarja a munkát. Inkább "szolgáltatás", mint "hiba".

И, másodszor, bizonyos feltételek mellett, miután az áramkört a „Feltöltés” ​​gombbal betölti az eszközbe, újraindul. Ez nem zavarja az életet, de a szerkesztő oldalt frissíteni kell.

Következtetés

НRemélem, tetszett az ötlet, hogy programírás helyett algoritmusokat rajzolj. Így a véletlenszerű gondolatok, ötletek és viták néha teljesen életképes fejleményeket szülnek.

НÓ, véleményem szerint a cikk terjedelme túllépett minden ésszerű határt. Szóval mára befejezem.
ПCsak annyit mondok, hogy már csak néhány hét van hátra a vakációig, és készen állok arra, hogy a vezérlő asztali hibakereséséről áttérjek a „terepen” történő hibakeresésre.
ЕHa valakit érdekelnek az ötleteim vagy a fejlesztés részletei, írjon nekem: [e-mail védett]

ВMindig szívesen fogadok észrevételeket és kritikákat, ha azok természetesen relevánsak.

Жszívesen fogadjuk visszajelzéseiket, észrevételeiket és javaslataikat.

Linkek, referenciák és csomagok

ESP8266
WiFi
MQTT
UDP Multicast

A munkavállalók kérésére

ВFelteszem a nyers dokumentációt és a firmware-t (bináris).

https://github.com/shiotiny/ShIoTinyBin

Firmware: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin

Vezetés: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png

Az összetevők leírása és rövid magyarázatok: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

Ott vannak a „varráshoz” utasítások.

Forrás: will.com

Hozzászólás