ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

Põhipunktid või millest see artikkel räägib

ТKuna inimeste huvid on erinevad ja inimestel on vähe aega, siis lühidalt artikli sisust.

СSee artikkel on ülevaade kontrolleri projektist minimaalse hinna ja võimalusega visuaalne programmeerimine veebibrauseri kaudu.

ПKuna see on ülevaateartikkel, mille eesmärk on näidata, „mida saab ühe sendikontrollerist välja pigistada”, ei tohiks te sellest otsida sügavaid tõdesid ja üksikasjalikke algoritme.

РVaadeldakse WiFI kiibil põhineva kontrolleri ehitamise motivatsiooni, ideid ja tulemusi ESP8266.

Hoiatus

Ma ei tahtnud seda artiklit kirjutada. Ma ei ole üldse artiklite kirjutamise fänn. Peate sellele mõtlema ja palju. Mõelge, kuidas kirjutada nii, et inimeste arv, kes teist valesti mõistavad, väheneks miinimumini. Mõelge, kuidas mitte minna äärmustesse. Ja mõelda on veel palju.
Kuid mu sõbrad ütlesid, et kuna minu pingutused IoT ja muu väikese automatiseerimise vallas on neile huvitavad, siis võivad need olla huvitavad ka teistele ja laiemale avalikkusele. Noh, kuhu koguneb selle vastu huvi tundev avalikkus? Muidugi rummu peal. Ja siin ma olen. Vana lugeja ja uus kirjanik.

Ma ei vastuta vigade, ebatäpsuste, kirjavigade, aegunud esitusstiili jms eest, mis lugejale ei pruugi meeldida. Lugege omal vastutusel.

Hoiatan ka kohe ära, et ma ei hakka seletama, mis on MQTT, WiFi ja UDP multicast ja muud, mis teemaga otseselt ei haaku. Artikli lõpus on mõned lingid.

Idee sünd või mingid laulusõnad

ЖElu pole lihtne asi ja Tema Majesteet Juhus mängib selles olulist rolli. Seega tahan jagada, kuidas juhuslikud sündmused koos loomuliku laiskusega andsid tulemuseks üsna huvitava ESP8266-l põhineva kontrolleri arenduse.

НAlgas kõik üsna rutiinselt: tahtsin ehitada maale aiapeenarde ja põõsaste veevarustuse ja kastmise kontrollimise süsteemi.

Нoh, kuna ma saan täielikult torude, paakide ja kraanide kallal töötada ainult puhkusel, milleni oli veel rohkem kui kuus kuud, siis piirdus kõik kolleegide ja sõprade ja seltsimeestega mitteametlikus keskkonnas arutlustega tööl.

Т“Väikese automatiseerimise” või nagu tavaliselt öeldakse “nende koolipoiste-häkkerite-hipsterite” teema – IoT teema – asjade internet – on mind huvitanud juba pikka aega. Ammu enne seda, kui Internetti ennast laialdaselt kasutati.

ЕIsegi lapsena tahtsin, et asjad teeksid midagi "ise". Ja oleks soovitav, et saaksin neid kuidagi eemalt juhtida. Kuid tol ajal (80ndad, eelmise aastatuhande 90ndate algus) oli see üsna keeruline. Internet ei olnud kusagil maailmas laialt kättesaadav, nagu polnud ka mobiiltelefone, tahvelarvuteid ega isegi LCD-ekraane või USB-mälupulki. Seega tuli piirduda “plaksutavate valguslülitite” ja lihtsate raadiopuldidega. Aga nende aegade ja selle vanuse kohta polnud see halb ja huvitav.

НOh, need on mineviku asjad. Nüüd on käes 15. sajand. Ja igal inimesel on nutitelefon taskus, internet on saadaval peaaegu kõikjal, kus seda vaja ja mitte vaja ning saadaolevate elektroonikakomponentide baas on praegu selline, et veel XNUMX aastat tagasi poleks planeedi Maa keskmine elanik sellest unistanudki. .

ПSeetõttu, olles otsustanud ehitada suvilasse veeasjade jaoks kontrolleri, pöörasin tähelepanu ESP8266 kiibile.
Esiteks on see kiip odav. Ja kui ühest kontrollerist ei piisa, saate installida kaks, kolm või viis. Teiseks on selle pardal WiFi. See tähendab, et saate vaadata Interneti kaudu toimuvat ja isegi juhtida protsessi mis tahes nutitelefonist. Loomulikult vajate Interneti-juurdepääsuga pääsupunkti, kuid see pole probleem. Igatahes on see peaaegu kõikjal või hakkab olema, ka minu suvilas.

ПOlles sukeldunud ESP8266 imelisse projektide maailma, avastasin üllatusega, et vaatamata selle kiibi vingetele võimalustele jagunevad sellel olevad projektid harvade eranditega kahte tüüpi: need on kas äärmiselt primitiivsed programmid nagu "kliki". nutitelefoni lülitid ja anduri temperatuuride oleku vaatamine Interneti kaudu"; või head ja soliidsed JavaScripti või Lua tõlgid, aga kahjuks tarbivad need peaaegu kogu mälu ega luba midagi tõsist ette võtta.

ПMinu esimene idee oli lihtne nagu pannkoogid – kirjutada lihtne programm pumpade juhtimiseks, mis põhineb andurite olekus ja ongi kõik. Kuid nagu kogenud rull erinevate süsteemide juurutamise reha otsas hüppamises, mõistsin, et kindlasti ei suuda ma ette näha kõiki algoritmi käänakuid, mida ma tahan või pean konstruktsiooni ehitamise ajal sirgeks ajama. veevarustus- ja niisutussüsteem.

ДSuvilas, pimedas laudas pole programmi eriti mugav töödelda. Aga sa pead.
Mis on väljapääs? Muidugi tuli esimese asjana pähe algoritm kohandatavaks teha. Üks mu kolleeg andis palju nõu – mida ja kuidas seadistada. Sellega tappis ta mu esimese idee eos. Tänu temale. Kui ta poleks mu silme all paljastanud parameetrite arvu, mida ma pean konfigureerima, poleks ma tõenäoliselt keeldunud sellest valikust: algoritmi seadete lehe koostamisest.

НHirmuäratav pilt seadistusparameetrite arvust ja isegi nendest, mis üksteist mõjutavad, muutis mind kainestavaks. Taas sain aru, et kõike ei saa ette näha...

СTeen ühe korra broneeringu: ma olen laisk. Väga laisk! Ma olen ausalt öeldes liiga laisk, et programmi iga kord ümber kirjutada. Seetõttu tekkis ülesanne – kuidas kiiresti ja lihtsalt algoritmi paika panna, soovitavalt ilma programmeerimiseta? Pealegi on see algoritm üsna keeruline; sellel on palju parameetreid; on spetsiifiline minu juhtumile ja ei sobi teistele. Ja ma tõesti tahan seadet enam-vähem universaalseks muuta...

ПKuna puhkuse ja igasuguste torude pumpamistöödeni oli veel aega umbes kuus kuud, siis otsustasin võtta aja maha ja mõelda, kuidas seda mugavaks ja ilusaks teha? Kuidas programmeerida ilma programmeerimata? Kuidas teha ilma triljonite parameetriteta, mida saab seadistamisel muuta?

КNagu tavaliselt, oli kõik juba enne meid välja mõeldud: sain aru, et tahan tegevusruutude kujul joonistada algoritmi ja ühendada need sideliinidega, mis näitavad, kust ja kuhu andmed lendavad. Noh, ruudule osutades tahan ma konfigureerida mõningaid selle üksikuid parameetreid.

ИAlgoritmi määratlemise idee ruutudesse joonistades pole uus. Sellised süsteemid eksisteerisid juba 80ndatel; Nüüd on olemas ülipopulaarne NodeRed süsteem, mis on hästi teada neile, kes on juba väikesemahulise automatiseerimise/IoT maailmaga liitunud.

НOh, siin on probleem: sellised süsteemid on loodud "suurte arvutite jaoks". Halvimal juhul - Raspberry PI-l. Kuid mitte ESP8266-l, millel on vaid mõnikümmend kilobaiti muutmälu ja millel pole operatsioonisüsteemi!

Кmida teha? Ja on ainult kaks väljapääsu: kirjutage ja joonistage programm "suurele arvutile" või sülearvutile ning seejärel kandke see mingil kujul üle ESP8266-le või proovige ESP8266 kontrollerisse "võimatut suruda".

ПSeetõttu oli minu maksimaalne programm järgmine: kontrolleri programmeerimiseks ei tohiks teil vaja minna muud kui veebibrauseriga sülearvutit! See tähendab, et veebibrauseri ja minu kontrolleriga sülearvuti - sellest peaks piisama juhtimisprogrammide täielikuks konfigureerimiseks ja kirjutamiseks ja joonistamiseks.

И, nagu selgus, oli seda täiesti võimalik rakendada!
Ma ei tüüta teid kõigi projektiarenduse üksikasjadega. Ütlen vaid, et arendusprotsessi käigus pähe ja keelde tulnud sõnade põhjal oleks võimalik koostada eraldi “Elektroonikatööstuse töötajate kasutatud nilbe keele sõnastik" Aga kõik on läbi. Täpsemalt, mitte kõik, vaid esimene, kõige raskem etapp, mil pole selge, kas teie ettekujutus elamisest tuleb sinna või on see lihtsalt halli ruuna deliirium kuuvalgel ööl.

ПJagan tulemust, mis välja tuli ja nime sain "ShIoTiny kontroller".

Mis juhtus?

Riistvara ShIoTiny kontroller on standardne ja lihtne: kolm sisendit, mis on mõeldud kuiva kontakti tüüpi anduritele (nupud, pilliroo lülitid, need on ka veetaseme andurid paagis), üks ADC sisend, üks sisend seadme temperatuuri- ja niiskusanduri ühendamiseks. DHT22 tüüpi või sarnane. Ja lõpuks, kolm väljundit lülitusreleede kujul 220 V, 1 Ampere jaoks. Relee ütleb 10A, aga ma olen realist ega luba 10A läbi tahvli. Ja pumba starterite juhtimiseks piisab 1 amprist. Kõik see saab toite toiteallikast, mille pinge on 5–9 volti.

ЧAusalt öeldes lisasin temperatuurianduri niisama, aga ADC peal oli lootus toitevõrgu pinget mõõta. Kes teab?

РLoomulikult on kõik sisendid peale DHT22 ühendamise sisendi kaitstud takistite ja dioodidega: mul polnud tahtmist ESP8266 põletada ning dioodid ja takistid maksavad vaid paar kopikat.

Photo Shoot Valmistoodet saab näha artikli alguses. Tellisin mitu sellist plaati – mis siis, kui ma need ära põletan või pean rajajalad ära lõikama?
Aga õnneks ma ei pidanud seda tegema.

ФSee toode on loomulikult ilu ja suursugusus. Kuid mugavuse huvides on allpool toodud andurite ja täiturmehhanismide simulaatorite plaadiga ühendamise joonis.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

Вtasemeandurite asemel on nupud Input1..3, starterite asemel relee1..3 releega ühendatud LED-id. Noh, muutuv takisti ADC-l sisendpinge simuleerimiseks.
КKui relee on välja lülitatud, süttib punane LED. Ja kui see on sisse lülitatud, on see roheline. Nii et silusin selle laua peal.

КLisaks kõigele sellele on plaadi vasakul küljel toitepistik ja paremal kaks hooldusnuppu: Reset ja AP. Noh, seal on DIP-lüliti, mis lülitab seadme programmeerimisrežiimi. Saadaval on ka ESP8266 programmeerimispistik USB-UART-adapteri kaudu.

Mõned selgitused nuppude kohta. Mis on lähtestama - ja nii see on selge. Ja siin on nupp AP vaja tõlkida ShioTiny pääsupunkti režiimi (konfiguratsioonirežiim või konfigureerimisrežiim) avamiseks. Miks see vajalik on? Näiteks lõite võrguseaded sassi ja soovite neid muuta. Vajutage paar sekundit AP nuppu (kuni ilus sinine LED süttib). Seejärel võtke nutitelefon või sülearvuti, lülitage WiFi sisse ja vaadake seal avatud pääsupunkti nimega esp_8266_xxxx ja looge sellega ühendus. Seejärel minge oma nutitelefoni või sülearvuti brauserisse ja tippige aadressiribale: 192.168.4.1. Kui kõik on korras, suunatakse teid ShiIoTiny kontrolleri lehele ja saate seda uuesti konfigureerida.

КNagu näeme, pole riistvaras midagi keerulist. Seetõttu o tarkvara osa.

ВKirjeldan kõiki rakendamise veidrusi, kuid hiljem. Mõni päev. Ja täna käsitlen tarkvara ainult "väljastpoolt", see tähendab kasutaja - enda või kellegi teise, kes võttis minu käsitöö kasutamisega riski (ka selliseid kaskadööre on) - vaatenurgast.

С Kasutaja seisukohast on seadmeks HTTP-server, millele pääseb ligi WiFi kaudu. Kõik seadistused, programmeerimine ja nii edasi tehakse veebibrauseri abil.

ИNiisiis, läksime kontrolleri lehele. Mida me näeme? Ja näeme vahekaarti "Juht ja olek", mis näitab kasutatavate seadmete praegust olekut: sisendid, väljundid, ADC, DHT22. Lisaks kuvatakse pääsupunkti ühenduse parameetrid (kui töötame WiFi jaama režiimis); pääsupunkti parameetrid (kui töötame WiFi pääsupunkti režiimis) või mõlemad. Noh, lisaks näidatakse MQTT-protokolli kasutamisel ühenduse parameetreid MQTT maakleriga.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

КNagu näeme, ei midagi erilist ega huvitavat. Pole isegi millelegi klõpsata! Kuigi... On veel kaks vahekaarti! Võrguseadete konfigureerimine Networking ja programmilülituse redaktor ElDraw.

Кnii et sa arvasid ära, Networking - see on võrgu seadistamine, kuid mitte ainult. Sellel on veel paar huvitavat parameetrit. Klõpsame vahekaardil Networking ja me näeme seal ligikaudu seda, mis on näidatud joonisel.
НPöörduspunkti nime ja parooli seadistamine iga režiimi jaoks - WiFi jaam ja WiFi pääsupunkt. Kõik näib olevat selge. Nagu ka nupu otstarve "Skanni WiFi" üsna läbipaistev.
А siin on rippmenüü "ShIoTiny režiim" vajab selgitamist. Fakt on see, et ma ei suutnud kuidagi otsustada, milline režiim oleks minu jaoks mugavam töötada. Ja seetõttu pakkus ta seadmele 5 töörežiimi.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

ПLoetleme lühidalt need töörežiimid.

Konfiguratsioonirežiim — konfiguratsioonirežiim. See on avatud pääsupunkti režiim, mille fikseeritud aadress on 192.168.4.1 ja nimi esp_8266_xxxx.

Jaama režiim — teie pääsupunktiga ühendatud WiFi-jaama režiim.

AP-režiim — suletud pääsupunkti režiim. Nime ja parooli määrate ise.

AP+Jaam režiim - see on AP-režiimi + jaamarežiimi samaaegne aktiveerimine.

ühemoodilisi — töötada ilma võrguühenduseta. Üksildane kontroller, kes kannab oma rasket osa...

В ükski režiim, välja arvatud "Konfiguratsioonirežiim", saate veebilehe blokeerida, märkides ruudu "Lukusta veebi jaamarežiimis". Seda omamoodi turvakaalutlustel.

НMQTT seaded on ilmsed: server, port, parool, avatud ühendus või poolt SSL. Ma ei hakka siin detailidesse laskuma.

КMuuhulgas suudab ShioTiny kontroller multisaate kaudu saata ja vastu võtta erivormingus pakette. Selle seaded on samuti ilmsed: rühma aadress ja port.
Muidugi, kui kirjeldate kõiki seadete nüansse, saate eraldi artikli, kuid see ei kuulu minu plaanidesse.

Иjah, vahekaardiga Networking kõik on enam-vähem selge. Liigume edasi kontrolleri põhifunktsiooni - programmiahela redaktori juurde ElDraw.

Тpuudutades vahekaarti ElDraw, näeme midagi sellist. Muidugi, kui seadmel pole koormatud vooluringi, siis on vooluringi väli tühi.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

Сvasakule - elementide või sõlmede (sõlmede) palett.
Сõigused – skeemiväli või lihtsalt “skeem”.
СÜlaosas on nupud kettale ja seadmesse laadimiseks ja mahalaadimiseks, samuti redigeerimisnupud.

ДNeile, kes on toimetajatega töötanud, on juhtimine üldiselt ilmne. Diagrammile tuleb lisada element – ​​võtke see hiirega ja lohistage paletilt diagrammile. Kui teil on vaja diagrammil eemaldada element või ühendus, klõpsake sellel või sellel hiirega ja vajutage klahvi ,,es. Peame elemendid ühendama - võtame ühe elemendi sisendi ja ühendame selle teise elemendi väljundiga.

ЕSamuti on skaleerimine (SHIFT+hiireratas). Kahjuks ei ole võimalik elemente ja elementide rühmi kopeerida. Aga see ei häiri mind eriti.

КLisaks saab loogilistel põhjustel sõlme sisendi ühendada ainult teise sõlme ühe väljundiga. Kuid sõlme väljund on mitme teiste sõlmede sisendiga. Sissepääsud on alati sõlmedest vasakul. Väljapääsud on alati paremal.

КMillised võimalused on meil algoritmide rakendamiseks?
ВVõimalused on üsna ulatuslikud. Palett sisaldab sõlme, mis esindavad kogu kontrolleri riistvara ShioTiny: sisendid, releed, ADC, DHT11/22.

ДAndmetöötluseks on loogilised ja aritmeetilised sõlmed.

ЧSelleks, et saaksime seadmega Interneti kaudu töötada, on MQTT maakleril parameetrite tellimise ja avaldamise sõlmed.

ЕKui tahame, et mitu ShiOTiny kontrollerit vahetaksid omavahel teavet, saame UDP multisaateprotokolli kasutades parameetrite saatmiseks ja vastuvõtmiseks kasutada sõlme.

КLisaks on taimeri sõlmed; sündmuste töötlemise juhtsõlmed.

ПToon paar näidet. Näiteks kas soovite, et temperatuuri ja niiskuse andmed avaldataks MQTT serveris iga 30 minuti järel? Miski ei saaks olla lihtsam. Joonistame niimoodi.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

Жmeemi nupp "Laadi üles". Kõik!
ЕKui olete ühenduse MQTT maakleriga vahekaardil Võrgundus õigesti konfigureerinud, on see kõik!
Кiga poole tunni tagant avaldatakse temperatuur maakleris /T teema all ja niiskus - /H teema all. Või kui määrate oma teemade nimed, siis nende all.
ЗIlmselge küsimus on: miks on 18000 30 minutit? Sest kõiki aegu mõõdetakse sekundikümnendikest.

ТNüüd soovite lisada sellele skeemile võimaluse lülitada Relay1 relee Interneti kaudu sisse ja isegi teatud ajaks? Pole probleemi. Lõpetame joonise nii.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

ОViis klõpsake nuppu "Laadi üles". Kõik! Nüüd on lisaks sellele, et iga poole tunni tagant avaldatakse MQTT maakleri vahendusel temperatuur ja õhuniiskus, võimalik Relay1 relee sisse lülitada. Jah, mitte lihtsalt sisse lülitada, vaid täpselt 10 minutiks. Saate lubada relee, avaldades teema /r1cmd, mille väärtus on 1. Ja relee tegelik olek avaldatakse teemas /r1status.

ВKas soovite mitte ainult sisse lülitada, vaid ka välja lülitada relee enne tähtaega? Jah, mida iganes sa ütled. Alloleval pildil on näha, kuidas seda teha!

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

ПKas põhimõte on selge? Joonista lihtsalt hiirega algoritm! Ja kirjutage mõned seaded: aeg, teema nimi ja kõik. See on palju selgem kui koodihunniku kirjutamine.

КMuide, erinevate värvidega ühenduste esiletõstmine pole "Photoshop" - see on üks toimetaja funktsioone. Ühendusi saab värvida vastavalt soovile, et mitte segadusse sattuda.

Нoh ja see pole veel kõik! Algoritmi silumiseks on nupp "Monitor start". Kummalisel kombel lülitab see sisse režiimi "monitor". Selles režiimis loetakse kontrollerist perioodiliselt kõigi sõlmede kõigi väljundite olekut ShioTiny ja kuvatakse diagrammil. Ligikaudu nagu alloleval pildil.

ShioTiny: väike automatiseerimine, asjade internet või "kuus kuud enne puhkust"

ТSee tähendab, et näeme "peaaegu reaalajas", mis meil on iga sõlme sisendis ja väljundis. See aitab palju, kui midagi pole selge.

ЕTahaksin kirjeldada veel palju "nippe ja funktsioone", kuid minu südametunnistus ei luba teil ühes artiklis nende peale aega raisata. Teostatud põhiidee on juba selge: minimaalselt kohandatavaid parameetreid - maksimaalne selgus.

Fly salvaga

КMuidugi tahan, et kärbest ei oleks, aga maailm pole ideaalne. Nii mu redaktor kui ka kontroller pole täiuslikud. Avastasin kaks peamist omadust, mida ma pole veel suutnud kõrvaldada.

ВEsiteks ilmnevad mõnikord tõrked elementide liigutamisel rühmades. See aga tööd eriti ei sega. Rohkem "funktsioon" kui "viga".

И, teiseks, teatud tingimustel taaskäivitub see pärast vooluringi laadimist seadmesse nupu „Laadi üles” abil. Elu see ei sega, aga toimetajaleht vajab uuendamist.

Järeldus

НLoodan, et teile meeldis idee joonistada programmide kirjutamise asemel algoritme. Nii sünnivadki juhuslikud mõtted, ideed ja vaidlused vahel täiesti elujõulisteks arenguteks.

НOh, minu meelest on artikli maht ületanud kõik mõistlikud piirid. Nii et ma lõpetan tänaseks.
ПÜtlen vaid, et puhkuseni on jäänud vaid paar nädalat ja ma olen täiesti valmis liikuma lauas kontrolleri silumisest selle "põllul" silumisele.
ЕKui kedagi huvitavad minu ideed või arendusdetailid, kirjutage mulle: [meiliga kaitstud]

ВMul on alati hea meel vastu võtta kommentaare ja kriitikat, kui see on muidugi asjakohane.

Жteretulnud teie tagasiside, kommentaarid ja ettepanekud.

Lingid, viited ja pakid

ESP8266
WiFi
MQTT
UDP multisaade

Töötajate palvel

ВPostitan töötlemata dokumentatsiooni ja püsivara (binaar).

https://github.com/shiotiny/ShIoTinyBin

Püsivara: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin

Skeem: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png

Komponentide kirjeldus ja lühiselgitused: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

Juhend “kuidas õmmelda” on olemas.

Allikas: www.habr.com

Lisa kommentaar