ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

Hlavní body aneb o čem je tento článek

ТProtože zájmy lidí jsou různé a lidé mají málo času, stručně o obsahu článku.

СTento článek je přehledem projektu regulátoru s minimální cenou a kapacitou vizuální programování přes WEB prohlížeč.

ПVzhledem k tomu, že se jedná o recenzní článek, jehož cílem je ukázat „co lze vymáčknout z centového ovladače“, neměli byste v něm hledat hluboké pravdy a podrobné algoritmy.

РZvažuje se motivace, nápady a výsledky stavby ovladače založeného na čipu WiFi ESP8266.

výstraha

Tento článek jsem psát nechtěl. Nejsem vůbec příznivcem psaní článků. Musíte o tom přemýšlet a hodně. Přemýšlejte o tom, jak psát tak, aby se počet lidí, kteří vám špatně rozumějí, snížil na minimum. Přemýšlejte o tom, jak nezacházet do extrémů. A je toho mnohem víc k zamyšlení.
Ale moji přátelé říkali, že když je moje úsilí v oblasti IoT a další malé automatizace zajímavé pro ně, tak mohou být zajímavé i pro ostatní a pro širokou veřejnost. Kde se shromažďuje veřejnost, která se o to zajímá? Samozřejmě na hubu. A tady jsem. Starý čtenář a nový spisovatel.

Nenesu žádnou odpovědnost za chyby, nepřesnosti, překlepy, neaktuální styl prezentace apod., které se čtenáři nemusí líbit. Čtete na vlastní nebezpečí.

Hned také upozorňuji, že nebudu vysvětlovat, co je to MQTT, WiFi a UDP multicast a další věci, které s tématem přímo nesouvisí. Na konci článku jsou nějaké odkazy.

Zrození nápadu nebo nějakého textu

ЖŽivot není jednoduchá věc a Jeho Veličenstvo Chance v něm hraje důležitou roli. Chci se tedy podělit o to, jak náhodné události spojené s přirozenou leností vedly k poměrně zajímavému vývoji ovladače založeného na ESP8266.

НVšechno to začalo docela rutinně: chtěl jsem vybudovat systém pro řízení zásobování vodou a zavlažování záhonů a keřů v zemi.

Нach, protože na potrubí, nádržích a kohoutcích mohu naplno pracovat jen na dovolené, do které zbývalo ještě více než šest měsíců - vše se omezovalo na diskuse v práci s kolegy a přáteli a kamarády v neformálním prostředí.

ТTéma „malé automatizace“ nebo, jak se mezi „těmito školáky-hackery-hipstery“ obvykle říká, téma IoT – Internet věcí – mě zajímá už dlouho. Dávno předtím, než byl samotný internet široce používán.

ЕUž jako dítě jsem chtěl, aby věci dělaly něco „samy“. A bylo by žádoucí, abych je mohl ovládat nějak na dálku. Ale v té době (80. léta, začátek 90. ​​let minulého tisíciletí) to bylo poměrně obtížné. Internet nebyl nikde na světě široce dostupný, stejně jako nikde nebyly mobilní telefony, tablety, dokonce ani LCD displeje či USB flash disky. Museli jsme se tedy omezit na „tlesknutí vypínačů“ a jednoduché rádiové dálkové ovladače. Ale na tu dobu a ten věk to nebylo špatné a zajímavé.

НOh, to jsou věci minulosti. Nyní je 15. století. A každý má v kapse chytrý telefon, internet je dostupný téměř všude tam, kde je potřeba i nepotřebný a základna dostupných elektronických součástek je dnes taková, že by se o tom ještě před XNUMX lety průměrnému obyvateli planety Země ani nesnilo .

ПProto, když jsem se rozhodl postavit ovladač pro vodní záležitosti na chatě, obrátil jsem svou pozornost na čip ESP8266.
Za prvé, tento čip je levný. A pokud by jeden ovladač nestačil, můžete nainstalovat dva, tři nebo pět. Za druhé, má na palubě WiFi. To znamená, že můžete sledovat, co se děje přes internet, a dokonce celý proces ovládat z jakéhokoli smartphonu. Samozřejmě potřebujete přístupový bod s přístupem k internetu, ale to není problém. Každopádně je téměř všude nebo se chystá, včetně mé dači.

ПPoté, co jsem se ponořil do úžasného světa projektů pro ESP8266, byl jsem překvapen, když jsem zjistil, že navzdory úžasným schopnostem tohoto čipu se projekty na něm, až na vzácné výjimky, dělí na dva typy: buď se jedná o extrémně primitivní programy jako „klik spínače z vašeho smartphonu a zírání na stav teplot čidel přes internet“; nebo dobré a solidní interprety JavaScriptu nebo Lua, ale bohužel spotřebují téměř veškerou paměť a neumožní vám dělat nic vážného.

ПMůj první nápad byl jednoduchý jako palačinky - napsat jednoduchý program pro ovládání čerpadel na základě stavu senzorů a je to. Ale jako ostřílený válec, co se týče skákání na hrábě při implementaci různých systémů, jsem pochopil, že rozhodně nebudu schopen předem předvídat všechny ohyby algoritmu, které bych chtěl nebo potřeboval narovnat při konstrukci systému. systém zásobování vodou a zavlažování.

ДNení příliš pohodlné zpracovávat program na chatě, v tmavé stodole. Ale musíš.
Jaká je cesta ven? Samozřejmě, první věc, která mě napadla, bylo udělat algoritmus přizpůsobitelný. Jeden můj kolega hodně poradil - co a jak nastavit. Tím zabil můj první nápad v zárodku. Díky němu. Kdyby mi před očima neodhalil počet parametrů, které budu muset nakonfigurovat, pravděpodobně bych tuto možnost neodmítl: vytvořit stránku nastavení algoritmu.

НDěsivý obraz množství parametrů nastavení a dokonce i těch, které se navzájem ovlivňují, mě vystřízlivěl. Opět jsem si uvědomil, že nelze předvídat všechno...

СUdělám rezervaci jednou: Jsem líný. Velmi líný! Upřímně jsem příliš líný program pokaždé přepisovat. Proto vyvstal úkol - jak rychle a jednoduše nastavit algoritmus, nejlépe bez programování? Navíc bude tento algoritmus poměrně komplikovaný; bude mít spoustu parametrů; bude specifický pro můj případ a nevhodný pro ostatní. A opravdu chci, aby bylo zařízení víceméně univerzální...

ПProtože do prázdnin zbývalo ještě asi šest měsíců a všemožné pumpování potrubí, rozhodl jsem se dát si na čas a přemýšlet, jak to udělat pohodlně a krásně? Jak programovat bez programování? Jak se obejít bez bilionu parametrů, které lze změnit při konfiguraci?

КJak už to bývá, všechno bylo vymyšleno už před námi: uvědomil jsem si, že chci nakreslit algoritmus ve formě akčních čtverců a propojit je s komunikačními linkami, které ukazují, odkud a kam data létají. No a tím, že ukážu na náměstí, chci mít možnost nakonfigurovat některé jeho jednotlivé parametry.

ИMyšlenka definovat algoritmus nakreslením ve čtvercích není nová. Takové systémy existovaly již v 80. letech; Nyní existuje super populární systém NodeRed, který je dobře známý těm, kteří již vstoupili do světa automatizace/IoT v malém měřítku.

НAch, tady je problém: takové systémy jsou navrženy pro „velké počítače“. V nejhorším - na Raspberry PI. Ale ne na ESP8266, které má jen pár desítek kilobajtů RAM a žádný operační systém!

Кco dělat? A existují pouze dvě cesty ven: napsat a nakreslit program na „velkém PC“ nebo notebooku a poté jej v nějaké podobě přenést do ESP8266, nebo zkusit „strčit nemožné“ do samotného ovladače ESP8266.

ПMaximální program, který jsem měl, byl tedy tento: k naprogramování ovladače byste neměli potřebovat nic jiného než notebook s webovým prohlížečem! Tedy notebook s WEB prohlížečem a mým ovladačem - to by mělo stačit na plnou konfiguraci a psaní a kreslení ovládacích programů.

И, jak se ukázalo, bylo docela možné to implementovat!
Nebudu vás nudit všemi detaily vývoje projektu. Řeknu pouze, že na základě slov, která mě během procesu vývoje napadla a na jazyk, by bylo možné sestavit samostatný „Slovník obscénního jazyka používaného pracovníky elektronického průmyslu" Ale je po všem. Přesněji ne všechno, ale první, nejtěžší etapa, kdy není jasné, zda tam bude vaše představa o životě, nebo je to jen delirium šedého valacha za měsíční noci.

ПPodělím se o výsledek toho, co vyšlo a získalo jméno "Ovladač ShioTiny".

Tak, co se stalo?

Hardware Ovladač ShIoTiny je standardní a jednoduchý: tři vstupy určené pro snímače typu „suchý kontakt“ (tlačítka, jazýčkové spínače, jsou to také snímače hladiny vody v nádrži), jeden vstup ADC, jeden vstup pro připojení snímače teploty a vlhkosti Typ DHT22 nebo podobný. A nakonec tři výstupy v podobě spínacích relé pro 220 Volt, 1 Ampér. Relé říká 10A, ale já jsem realista a nedovolím 10Amper přes desku. A pro ovládání spouštěčů čerpadel stačí 1A. To vše je napájeno ze zdroje s napětím 5 až 9 voltů.

ЧAbych byl upřímný, teplotní čidlo jsem přidal jen tak, ale na ADC jsem měl naději na měření napětí napájecí sítě. Kdo ví?

РVšechny vstupy, kromě vstupu pro připojení DHT22, jsou samozřejmě chráněny odpory a diodami: ESP8266 jsem neměl chuť pálit a diody a odpory stojí jen pár kopejek.

Fotografie Hotový výrobek je k vidění na začátku článku. Objednal jsem několik těchto desek - co když je spálím nebo budu muset uříznout nohy kolejnice?
Ale naštěstí jsem nemusel.

ФTento produkt je samozřejmě krása a vznešenost. Ale pro pohodlí níže je výkresové schéma připojení simulátorů senzorů a akčních členů k desce.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

Вmísto snímačů hladiny jsou tlačítka Input1..3, místo spouštěčů jsou LED připojené k relé Relay1..3. No, proměnný odpor na ADC pro simulaci vstupního napětí.
КKdyž je relé vypnuto, rozsvítí se červená LED. A když je zapnutý, je zelený. Tak jsem to odladil na stole.

КK tomu všemu je na levé straně desky napájecí konektor a na pravé dvě servisní tlačítka: Reset a AP. No a je tu DIP přepínač, který přepne zařízení do programovacího režimu. K dispozici je také programovací konektor ESP8266 přes adaptér USB-UART.

Několik vysvětlení k tlačítkům. Co je resetovat - a tak je to jasné. A tady je tlačítko AP potřeba přeložit ShioTiny otevřete režim přístupového bodu (režim konfigurace nebo režim konfigurace). Proč je to nutné? No, například jste zpackali nastavení sítě a chcete je změnit. Stiskněte tlačítko AP na několik sekund (dokud se nerozsvítí krásná modrá LED). Poté vezměte svůj smartphone nebo notebook, zapněte WiFi a uvidíte tam otevřený přístupový bod s názvem esp_8266_xxxx a připojte se k němu. Poté přejděte do prohlížeče svého smartphonu nebo notebooku a do adresního řádku zadejte: 192.168.4.1. Pokud je vše v pořádku, dostanete se na stránku ovladače ShIoTiny a můžete jej znovu nakonfigurovat.

КJak vidíme, hardware není nic složitého. Proto o softwarová část.

ВPopíšu všechny zvláštnosti implementace, ale později. Někdy. A dnes budu uvažovat o softwaru pouze „zvenčí“, tedy z pohledu uživatele - sebe nebo někoho jiného, ​​kdo riskoval používání mého řemesla (existují i ​​takoví kaskadéři).

С Z pohledu uživatele je zařízení HTTP server, který je přístupný přes WiFi. Všechna nastavení, programování atd. se provádí pomocí webového prohlížeče.

ИTakže jsme přešli na stránku ovladače. co vidíme? A vidíme záložku „Control and status“, která ukazuje aktuální stav použitých zařízení: vstupy, výstupy, ADC, DHT22. Kromě toho jsou zobrazeny parametry připojení k přístupovému bodu (pokud pracujeme v režimu WiFi stanice); parametry přístupového bodu (pokud pracujeme v režimu přístupového bodu WiFi) nebo obojí. No a navíc se při použití protokolu MQTT zobrazují parametry spojení s brokerem MQTT.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

КJak vidíme, nic zvláštního nebo zajímavého. Není ani na co klikat! I když... Jsou tu další dvě záložky! Konfigurace nastavení sítě networking a editor programových obvodů ElDraw.

Кtak jste to uhodli, networking - toto je nastavení sítě, ale nejen to. Má ještě pár zajímavých parametrů. Klikneme na záložku networking a uvidíme tam přibližně to, co je znázorněno na obrázku.
НNastavení názvu a hesla přístupového bodu pro každý režim - WiFi stanice a WiFi přístupový bod. Vše se zdá být jasné. Stejně jako účel tlačítka "Skenovat WiFi" docela průhledné.
А zde je rozevírací seznam "ShIoTiny režim" vyžaduje objasnění. Faktem je, že jsem se nemohl nijak rozhodnout, který režim by mi byl pro práci pohodlnější. A proto poskytl 5 režimů provozu zařízení.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

ПUveďme stručně tyto provozní režimy.

Režim konfigurace — konfigurační režim. Toto je režim otevřeného přístupového bodu s pevnou adresou 192.168.4.1 a názvem esp_8266_xxxx.

Režim stanice — režim WiFi stanice připojené k vašemu přístupovému bodu.

Režim AP — režim uzavřeného přístupového bodu. Jméno a heslo si nastavíte sami.

Režim AP+Station - jedná se o současnou aktivaci režimu AP + režimu stanice.

single mode — pracovat zcela bez připojení k síti. Osamělý kontrolor nesoucí svůj těžký podíl...

В kterýkoli z režimů kromě "Konfigurační režim", zaškrtnutím políčka můžete webovou stránku zablokovat "Zamknout web v režimu stanice". Je to tak trochu z bezpečnostních důvodů.

НNastavení MQTT jsou zřejmé: server, port, heslo, otevřené připojení nebo podle SSL. Nebudu zde zacházet do detailů.

КOvladač ShIoTiny může mimo jiné odesílat a přijímat pakety speciálního formátu přes multicast. Jeho nastavení je také zřejmé: adresa skupiny a port.
Samozřejmě, pokud popíšete všechny nuance nastavení, dostanete samostatný článek, ale to není součástí mých plánů.

Иano, s tabulkou networking vše je víceméně jasné. Přejděme k hlavní funkci regulátoru – editoru programových obvodů ElDraw.

Тklepnutím na kartu ElDraw, uvidíme něco jako následující. Samozřejmě, pokud zařízení nemá zatížený obvod, pak bude pole obvodu prázdné.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

Сvlevo - paleta prvků nebo uzlů (uzlů).
Сpráva - pole schéma nebo jednoduše „schéma“.
СV horní části jsou tlačítka pro načtení a vyjmutí na disk a do zařízení a také editační tlačítka.

ДPro ty, kteří pracovali s redaktory, je řízení obecně zřejmé. Do diagramu je potřeba přidat prvek – vzít ho myší a přetáhnout z palety do diagramu. Pokud potřebujete odstranit prvek nebo spojení ze schématu, klikněte na něj nebo na něj myší a stiskněte klávesu DEL. Potřebujeme propojit prvky - vezmeme vstup jednoho prvku a připojíme ho k výstupu druhého.

ЕNechybí ani škálování (SHIFT+kolečko myši). Bohužel není možné kopírovat prvky a skupiny prvků. Ale tohle mě moc netrápí.

КNavíc z logických důvodů může být vstup uzlu připojen pouze k jednomu výstupu jiného uzlu. Ale výstup uzlu je s několika vstupy jiných uzlů. Vstupy jsou vždy vlevo od uzlů. Východy jsou vždy vpravo.

КJaké schopnosti máme k implementaci algoritmů?
ВMožnosti jsou poměrně rozsáhlé. Paleta obsahuje uzly reprezentující veškerý hardware ovladače ShioTiny: vstupy, relé, ADC, DHT11/22.

ДPro zpracování dat existují logické a aritmetické uzly.

ЧAbychom mohli se zařízením pracovat přes internet, jsou na brokerovi MQTT uzly pro přihlášení a publikování parametrů.

ЕPokud chceme, aby si několik ovladačů ShIoTiny vyměňovalo informace mezi sebou, můžeme použít uzly pro odesílání a přijímání parametrů pomocí protokolu UDP multicast.

КKromě toho existují uzly časovače; řídicí uzly zpracování událostí.

ПDám vám pár příkladů. Chcete například, aby byly údaje o teplotě a vlhkosti publikovány na server MQTT každých 30 minut? Nic nemůže být jednodušší. Pojďme kreslit takto.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

Жtlačítko meme „Nahrát“. Všechno!
ЕPokud jste správně nakonfigurovali spojení s brokerem MQTT na kartě Networking, pak je to vše!
Кkaždou půlhodinu bude u makléře zveřejněna teplota pod tématem /T a vlhkost - pod tématem /H. Nebo, pokud si nastavíte vlastní názvy témat, pak pod nimi.
ЗZřejmá otázka zní: proč je 18000 30 minut? Protože všechny časy se měří v desetinách sekundy.

ТNyní chcete k tomuto schématu přidat možnost zapnout relé Relay1 přes internet a dokonce i na určitou dobu? Žádný problém. Dokončíme výkres takto.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

ОPět klikněte na tlačítko „Nahrát“. Všechno! Nyní, kromě toho, že každou půlhodinu bude na brokerovi MQTT zveřejněna teplota a vlhkost, bude možné zapnout relé Relay1. Ano, nejen zapnout, ale rovnou na 10 minut. Relé můžete povolit zveřejněním tématu /r1cmd, nastavené na 1. A skutečný stav relé bude zveřejněn v tématu /r1status.

ВChcete relé nejen zapnout, ale i vypnout s předstihem? Ano, cokoliv říkáte. Obrázek níže ukazuje, jak na to!

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

ПJe princip jasný? Stačí nakreslit algoritmus pomocí myši! A napište několik nastavení: čas, název tématu a je to. To je mnohem jasnější než psaní hromady kódu.

КMimochodem, zvýraznění spojení v různých barvách není „Photoshop“ - je to jedna z funkcí editoru. Spoje si můžete libovolně vybarvit, abyste se nepletli.

Нoh a to není vše! Pro odladění algoritmu je zde tlačítko „Monitor start“. Kupodivu zapíná režim „monitorování“. V tomto režimu je z regulátoru periodicky čten stav všech výstupů všech uzlů ShioTiny a zobrazí se na diagramu. Přibližně jako na obrázku níže.

ShioTiny: malá automatizace, internet věcí nebo „šest měsíců před dovolenou“

ТTo znamená, že můžeme vidět „téměř v reálném čase“, co máme na vstupu a výstupu každého uzlu. Hodně pomáhá, když něco není jasné.

ЕExistuje mnohem více „triků a funkcí“, které bych rád popsal, ale mé svědomí vám nedovolí ztrácet čas s nimi v jednom článku. Hlavní realizovaná myšlenka je již jasná: minimum přizpůsobitelných parametrů - maximální přehlednost.

Háček

КSamozřejmě chci, aby tam nebyla moucha, ale svět není ideální. Můj editor i ovladač nejsou dokonalé. Objevil jsem dvě hlavní vlastnosti, které se mi zatím nepodařilo odstranit.

ВZa prvé, při přesouvání prvků ve skupinách se někdy objevují závady. To ale práci moc neruší. Spíš „funkce“ než „chyba“.

И, za druhé, za určitých podmínek se po načtení obvodu do zařízení pomocí tlačítka „Nahrát“ restartuje. To nezasahuje do života, ale stránku editoru je třeba aktualizovat.

Závěr

НDoufám, že se vám líbila myšlenka kreslit algoritmy místo psaní programů. Takhle náhodné myšlenky, nápady a spory někdy dávají vzniknout zcela životaschopnému vývoji.

НOh, podle mě objem článku přesáhl všechny rozumné meze. Tak pro dnešek končím.
ПDovolte mi jen říci, že do prázdnin zbývá jen pár týdnů a jsem docela připraven přejít od ladění ovladače u stolu k ladění „v terénu“.
ЕPokud někoho zajímají mé nápady nebo podrobnosti o vývoji, napište mi: [chráněno e-mailem]

ВVždy budu rád za komentáře a kritiku, pokud je samozřejmě relevantní.

Жvítáme vaše názory, připomínky a návrhy.

Odkazy, odkazy a parcely

ESP8266
WiFi
MQTT
UDP Multicast

Na žádost pracovníků

ВPosílám nezpracovanou dokumentaci a firmware (binar).

https://github.com/shiotiny/ShIoTinyBin

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

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

Popis součástí a stručný popis: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

Návod "jak šít" je tam.

Zdroj: www.habr.com

Přidat komentář