ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

Glavne točke ili o čemu govori ovaj članak

ТBudući da su interesi ljudi različiti, a ljudi imaju malo vremena, onda ukratko o sadržaju članka.

СOvaj članak je pregled projekta kontrolera s minimalnom cijenom i mogućnostima vizualno programiranje putem WEB preglednika.

ПBudući da je ovo pregledni članak čiji je cilj pokazati "što se može iscijediti iz penny kontrolera", u njemu ne biste trebali tražiti duboke istine i detaljne algoritme.

РRazmatraju se motivacija, ideje i rezultati izgradnje kontrolera temeljenog na WiFI čipu ESP8266.

Oprez

Nisam htio napisati ovaj članak. Uopće nisam ljubitelj pisanja članaka. O ovome morate razmišljati, i to mnogo. Razmislite kako pisati tako da se broj ljudi koji vas pogrešno razumiju svede na minimum. Razmislite kako ne ići u krajnost. I ima još mnogo toga o čemu treba razmišljati.
Ali moji prijatelji su rekli da budući da su moji napori u području IoT-a i druge male automatizacije njima zanimljivi, onda bi mogli biti zanimljivi i drugima i široj javnosti. Pa gdje se skupi javnost koju to zanima? Naravno, na čvorištu. I evo me. Stari čitatelj i novi pisac.

Ne snosim nikakvu odgovornost za pogreške, netočnosti, tipfelere, neažurni stil prezentacije i sl., koji se čitatelju možda neće svidjeti. Čitajte na vlastitu odgovornost.

Također vas odmah upozoravam da neću objašnjavati što su MQTT, WiFi i UDP multicast i ostale stvari koje nisu direktno vezane uz temu. Na kraju članka nalazi se nekoliko poveznica.

Rađanje ideje ili nekog teksta

ЖŽivot nije laka stvar i Njegovo Veličanstvo Chance u njemu igra važnu ulogu. Stoga želim podijeliti kako su slučajni događaji, zajedno s prirodnom lijenošću, rezultirali prilično zanimljivim razvojem kontrolera temeljenog na ESP8266.

НSve je počelo prilično rutinski: htio sam izgraditi sustav za kontrolu opskrbe vodom i navodnjavanje vrtnih kreveta i grmlja u zemlji.

Нoh, budući da samo na odmoru, do kojeg je bilo još više od šest mjeseci, mogu u potpunosti raditi na cijevima, spremnicima i slavinama - sve je bilo ograničeno na razgovore na poslu s kolegama i prijateljima i drugovima u neformalnom okruženju.

ТTema “male automatizacije” ili, kako to obično kažu među “ovim školarcima-hakerima-hipsterima” - tema IoT - Internet of Things - zanima me već duže vrijeme. Davno prije nego što je sam Internet bio u širokoj upotrebi.

ЕJoš kao dijete želio sam da stvari rade nešto "same od sebe". A bilo bi poželjno da ih mogu kontrolirati nekako iz daljine. Ali u to vrijeme (80-ih, ranih 90-ih prošlog tisućljeća) to je bilo prilično teško. Internet nije bio široko dostupan nigdje u svijetu, kao što nigdje nije bilo mobitela, tableta, čak ni LCD zaslona ili USB flash memorija. Stoga smo se morali ograničiti na "pljeskanje prekidača za svjetlo" i jednostavne daljinske upravljače. Ali za ta vremena i to doba nije bilo loše i zanimljivo.

НOh, to su stvari iz prošlosti. Sada je 15. stoljeće. A pametni telefon ima svatko u džepu, internet je dostupan gotovo svugdje gdje treba i ne treba, a baza dostupnih elektroničkih komponenti sada je takva da prije samo XNUMX godina prosječan stanovnik planete Zemlje o tome ne bi ni sanjao .

ПStoga, nakon što sam odlučio izgraditi kontroler za vodene poslove u kući, obratio sam pozornost na čip ESP8266.
Prije svega, ovaj čip je jeftin. A ako jedan kontroler nije dovoljan, možete instalirati dva, tri ili pet. Drugo, ima WiFi na brodu. Odnosno, možete gledati što se događa putem interneta, pa čak i kontrolirati proces s bilo kojeg pametnog telefona. Naravno, potrebna vam je pristupna točka s pristupom internetu, ali to nije problem. U svakom slučaju, ima ga gotovo posvuda ili će uskoro biti, uključujući i moju vikendicu.

ПNakon što sam uronio u prekrasan svijet projekata za ESP8266, iznenadio sam se kada sam otkrio da se, unatoč nevjerojatnim mogućnostima ovog čipa, projekti na njemu, uz rijetke iznimke, dijele na dvije vrste: to su ili krajnje primitivni programi poput "klikni prekidače sa svog pametnog telefona i buljite u stanje senzora temperature putem interneta"; ili dobri i solidni JavaScript ili Lua interpreteri, ali nažalost, oni gutaju gotovo svu memoriju i ne dopuštaju vam da učinite ništa ozbiljno.

ПMoja prva ideja je bila jednostavna kao palačinka - napisati jednostavan program za upravljanje pumpama na temelju stanja senzora i to je to. Ali, kao iskusan valjak u smislu skakanja na grablje implementacije različitih sustava, shvatio sam da definitivno neću moći unaprijed predvidjeti sve zavoje algoritma koje bih želio ili trebao ispraviti tijekom konstrukcije sustav vodoopskrbe i navodnjavanja.

ДNije baš zgodno obrađivati ​​program u dači, u mračnoj staji. Ali moraš.
Koji je izlaz? Naravno, prvo što mi je palo na pamet bilo je učiniti algoritam prilagodljivim. Jedan moj kolega dao je puno savjeta - što postaviti i kako. Ovime je ubio moju prvu ideju u korijenu. Zahvaljujući njemu. Da mi pred očima nije otkrio broj parametara koje trebam konfigurirati, vjerojatno ne bih odbio ovu opciju: izradu stranice s postavkama algoritma.

НZastrašujuća slika broja parametara postavki, pa čak i onih koji utječu jedni na druge, otrijeznila me. Još jednom sam shvatio da se ne može sve predvidjeti...

СJednom ću rezervirati: lijen sam. Jako lijen! Iskreno sam previše lijen da svaki put ponovno napišem program. Stoga se pojavio zadatak - kako brzo i jednostavno postaviti algoritam, po mogućnosti bez programiranja? Štoviše, ovaj će algoritam biti prilično kompliciran; imat će mnogo parametara; bit će specifična za moj slučaj i neprikladna za druge. I stvarno želim uređaj učiniti manje-više univerzalnim...

ПBudući da je bilo još oko šest mjeseci prije odmora i svih vrsta radova na pumpanju cijevi, odlučio sam odvojiti vrijeme i razmisliti o tome kako to učiniti zgodnim i lijepim? Kako programirati bez programiranja? Kako bez trilijuna parametara koji se mogu mijenjati prilikom konfiguracije?

КKao i obično, sve je već bilo izmišljeno prije nas: shvatio sam da želim nacrtati algoritam u obliku akcijskih kvadrata i povezati ih s komunikacijskim linijama koje pokazuju odakle i kamo podaci lete. Pa, pokazujući na kvadrat, želim biti u mogućnosti konfigurirati neke od njegovih pojedinačnih parametara.

ИIdeja definiranja algoritma crtanjem u kvadrate nije nova. Takvi sustavi su postojali još u 80-ima; Sada je tu superpopularan sustav NodeRed, koji je dobro poznat onima koji su se već pridružili svijetu male automatizacije/IoT-a.

НOh, evo problema: takvi su sustavi dizajnirani za "velika računala". U najgorem slučaju - na Raspberry PI. Ali ne na ESP8266, koji ima samo nekoliko desetaka kilobajta RAM-a i nema operativni sustav!

КŠto uraditi? I postoje samo dva izlaza: napisati i nacrtati program na "velikom računalu" ili prijenosnom računalu, a zatim ga prenijeti u nekom obliku na ESP8266 ili pokušati "ugurati nemoguće" u sam ESP8266 kontroler.

ПStoga je maksimalni program koji sam imao bio sljedeći: za programiranje vašeg kontrolera ne treba vam ništa osim laptopa s WEB preglednikom! Odnosno, prijenosno računalo s WEB preglednikom i mojim kontrolerom - to bi trebalo biti dovoljno za potpunu konfiguraciju i pisanje i crtanje upravljačkih programa.

И, kako se pokazalo, to je bilo sasvim moguće provesti!
Neću vas zamarati sa svim detaljima razvoja projekta. Reći ću samo da bi na temelju riječi koje su mi pale na pamet i jezik tijekom procesa razvoja bilo moguće sastaviti zaseban “Rječnik opscenog jezika radnika elektroničke industrije" Ali sve je gotovo. Točnije, ne sve, nego prva, najteža faza, kada nije jasno hoće li tvoja ideja o životu biti tu ili je to samo delirij sivog kastrata u noći obasjanoj mjesečinom.

ПPodijelit ću rezultat onoga što je izašlo i dobilo ime "ShIoTiny kontroler".

Dakle, što se dogodilo?

Hardverski dio ShIoTiny kontroler je standardan i jednostavan: tri ulaza dizajnirana za senzore tipa "suhi kontakt" (gumbi, reed prekidači, oni su također senzori razine vode u spremniku), jedan ADC ulaz, jedan ulaz za spajanje senzora temperature i vlažnosti Tip DHT22 ili sličan. I na kraju, tri izlaza u obliku sklopnih releja za 220 V, 1 Amper. Relej kaže 10A, ali ja sam realist i neću dopustiti 10A kroz ploču. A za upravljanje starterima pumpe dovoljan je 1Amp. Sve se to napaja iz izvora napajanja naponom od 5 do 9 volti.

ЧDa budem iskren, dodao sam temperaturni senzor samo tako, ali na ADC sam se nadao da ću izmjeriti napon opskrbne mreže. Tko zna?

РNaravno, svi ulazi, osim ulaza za povezivanje DHT22, zaštićeni su otpornicima i diodama: nisam imao želju spaliti ESP8266, a diode i otpornici koštaju samo nekoliko kopejki.

Fotografija Gotov proizvod možete vidjeti na početku članka. Naručio sam nekoliko ovih ploča - što ako ih spalim ili moram rezati noge staze?
Ali, na sreću, nisam morao.

ФOvaj proizvod je, naravno, ljepota i veličina. Ali radi praktičnosti, ispod je dijagram crteža povezivanja simulatora senzora i aktuatora na ploču.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

Вumjesto senzora razine postoje tipke Input1..3, umjesto startera postoje LED diode spojene na relej Relay1..3. Pa, promjenjivi otpornik na ADC za simulaciju ulaznog napona.
КKada je relej isključen, crvena LED dioda svijetli. A kad je uključeno, zeleno je. Pa sam otklonio pogreške na stolu.

КUz sve to, s lijeve strane ploče nalazi se strujni konektor, a s desne dvije servisne tipke: Reset i AP. Pa, postoji DIP prekidač koji prebacuje uređaj u način rada za programiranje. Dostupan je i konektor za programiranje ESP8266 preko USB-UART adaptera.

Nekoliko objašnjenja o gumbima. što Reset - i tako je jasno. I ovdje je gumb AP potrebno prevesti SIoSitni za otvaranje načina rada pristupne točke (način konfiguracije ili način konfiguracije). Zašto je to potrebno? Pa, na primjer, pobrkali ste mrežne postavke i želite ih promijeniti. Pritisnite tipku AP nekoliko sekundi (dok ne zasvijetli lijepa plava LED dioda). Zatim uzmite svoj pametni telefon ili prijenosno računalo, uključite WiFi i tamo vidite otvorenu pristupnu točku s nazivom esp_8266_xxxx i spojite se na nju. Zatim idite na preglednik svog pametnog telefona ili prijenosnog računala i upišite u adresnu traku: 192.168.4.1. Ako je sve u redu, bit ćete preusmjereni na stranicu ShIoTiny kontrolera i možete ga ponovno konfigurirati.

КKao što vidimo, hardver nije ništa komplicirano. Stoga o softverski dio.

ВOpisat ću sve nedostatke implementacije, ali kasnije. Jednog dana. A danas ću softver razmotriti samo "izvana", odnosno sa stajališta korisnika - sebe ili nekoga drugog tko je preuzeo rizik korištenja mog zanata (postoje i takvi kaskaderi).

С Sa stajališta korisnika, uređaj je HTTP poslužitelj kojem se može pristupiti putem WiFi-ja. Sve postavke, programiranje i tako dalje obavljaju se pomoću WEB preglednika.

ИDakle, otišli smo na stranicu kontrolera. Što vidimo? I vidimo karticu "Kontrola i status", koja prikazuje trenutno stanje korištenih uređaja: ulazi, izlazi, ADC, DHT22. Osim toga, prikazani su parametri povezivanja s pristupnom točkom (ako radimo u načinu WiFi stanice); parametre pristupne točke (ako radimo u načinu WiFi pristupne točke) ili oboje. Pa, osim toga, prikazani su parametri veze s MQTT brokerom ako se koristi MQTT protokol.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

КKao što vidimo, ništa posebno i zanimljivo. Nema se što ni kliknuti! Iako... Ima još dva taba! Konfiguriranje mrežnih postavki umrežavanje i urednik programskih sklopova ElDraw.

Кpa pogađate, umrežavanje - ovo je postavljanje mreže, ali ne samo. Ima još par zanimljivih parametara. Kliknimo na karticu umrežavanje i tamo ćemo vidjeti otprilike ono što je prikazano na slici.
НPostavljanje naziva pristupne točke i lozinke za svaki način rada - WiFi stanica i WiFi pristupna točka. Čini se da je sve jasno. Kao i namjena gumba "Skeniraj WiFi" sasvim prozirno.
А ovdje je padajući popis "ShIoTiny način rada" zahtijeva pojašnjenje. Činjenica je da nikako nisam mogao odlučiti koji bi mi način rada bio prikladniji za rad. I stoga je osigurao 5 načina rada uređaja.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

ПNavedimo ukratko te načine rada.

Način konfiguracije — način konfiguracije. Ovo je način rada otvorene pristupne točke s fiksnom adresom 192.168.4.1 i nazivom esp_8266_xxxx.

Način rada stanice — način rada WiFi stanice spojene na vašu pristupnu točku.

AP način — način zatvorene pristupne točke. Sami postavljate ime i lozinku.

Način AP+Station - ovo je istodobna aktivacija AP moda + Station moda.

single mode — raditi uopće bez mrežne veze. Usamljeni kontrolor koji nosi svoj težak dio...

В bilo koji od načina osim "Način konfiguracije", možete blokirati WEB stranicu označavanjem okvira "Zaključaj web u načinu rada Station". Ovo je na neki način iz sigurnosnih razloga.

НMQTT postavke su očite: poslužitelj, port, lozinka, otvorena veza ili by SSL. Ovdje neću ulaziti u detalje.

КIzmeđu ostalog, ShIoTiny kontroler može slati i primati pakete posebnog formata putem multicasta. Njegove postavke su također očite: adresa grupe i port.
Naravno, ako opišete sve nijanse postavki, dobit ćete zaseban članak, ali to nije dio mojih planova.

Иda, s jezičkom umrežavanje sve je više-manje jasno. Prijeđimo na glavnu značajku regulatora - uređivač programskih sklopova ElDraw.

Тdodirivanjem kartice ElDraw, vidjet ćemo nešto poput sljedećeg. Naravno, ako uređaj nema učitani krug, tada će polje za krug biti prazno.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

Сlijevo - paleta elemenata ili čvorova (čvorova).
Сprava - polje sheme ili jednostavno "shema".
СNa vrhu se nalaze gumbi za učitavanje i istovar na disk i na uređaj, kao i gumbi za uređivanje.

ДZa one koji su radili s urednicima, upravljanje je općenito očito. Dijagramu morate dodati element - uzmite ga mišem i povucite s palete na dijagram. Ako trebate ukloniti element ili vezu sa dijagrama, kliknite na njega ili na njega mišem i pritisnite tipku DEL. Trebamo spojiti elemente – uzmemo ulaz jednog elementa i povežemo ga s izlazom drugog.

ЕPostoji i skaliranje (SHIFT+kotačić miša). Nažalost, nije moguće kopirati elemente i grupe elemenata. Ali ovo mi ne smeta puno.

КOsim toga, iz logičnih razloga, ulaz čvora može biti povezan samo s jednim izlazom drugog čvora. Ali izlaz čvora je s nekoliko ulaza drugih čvorova. Ulazi su uvijek lijevo od čvorova. Izlazi su uvijek s desne strane.

КKoje sposobnosti imamo za implementaciju algoritama?
ВMogućnosti su prilično opsežne. Paleta sadrži čvorove koji predstavljaju sav hardver kontrolera SIoSitni: ulazi, releji, ADC, DHT11/22.

ДPostoje logički i aritmetički čvorovi za obradu podataka.

ЧKako bismo mogli raditi s uređajem putem interneta, na MQTT brokeru postoje čvorovi za pretplatu i objavljivanje parametara.

ЕAko želimo da nekoliko ShIoTiny kontrolera međusobno razmjenjuje informacije, možemo koristiti čvorove za slanje i primanje parametara pomoću UDP multicast protokola.

КOsim toga, postoje vremenski čvorovi; kontrolni čvorovi obrade događaja.

ПDat ću vam nekoliko primjera. Na primjer, želite li da se podaci o temperaturi i vlažnosti objavljuju na MQTT poslužitelju svakih 30 minuta? Ništa ne može biti jednostavnije. Nacrtajmo ovako.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

Жmeme gumb “Učitaj”. Svi!
ЕAko ste ispravno konfigurirali vezu s MQTT brokerom na kartici Umrežavanje, to je sve!
Кsvakih pola sata temperatura će biti objavljena na brokeru pod temom /T, a vlažnost - pod temom /H. Ili, ako postavite vlastite nazive tema, onda ispod njih.
ЗOčito pitanje je: zašto je 18000 30 minuta? Zato što se sva vremena mjere u desetinkama sekunde.

ТSada želite ovoj shemi dodati mogućnost uključivanja releja Relay1 putem Interneta, pa čak i na određeno vrijeme? Nema problema. Dovršimo crtež ovako.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

ОPet kliknite gumb "Učitaj". Svi! Sada, osim što će svakih pola sata biti objavljena temperatura i vlaga na MQTT brokeru, bit će moguće uključiti relej Relay1. Da, ne samo uključiti, nego na točno 10 minuta. Možete omogućiti relej objavljivanjem teme /r1cmd, postavljene na 1. A stvarno stanje releja bit će objavljeno u temi /r1status.

ВŽelite li ne samo uključiti, već i isključiti relej prije rasporeda? Da, kako god ti kažeš. Slika ispod pokazuje kako to učiniti!

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

ПJe li princip jasan? Algoritam samo crtate mišem! I napišite nekoliko postavki: vrijeme, naziv teme i to je to. Ovo je mnogo jasnije od pisanja hrpe koda.

КUsput, isticanje veza različitim bojama nije "Photoshop" - to je jedna od funkcija uređivača. Veze možete obojiti kako želite da se ne zabunite.

Нoh i to nije sve! Kako biste otklonili pogreške algoritma, postoji gumb "Monitor start". Čudno, uključuje način rada "monitor". U ovom načinu rada, stanje svih izlaza svih čvorova se periodički očitava iz kontrolera SIoSitni i prikazano na dijagramu. Otprilike kao na slici ispod.

ShIoTiny: mala automatizacija, internet stvari ili “šest mjeseci prije godišnjeg odmora”

ТTo jest, možemo vidjeti u "gotovo stvarnom vremenu" što imamo na ulazu i izlazu svakog čvora. Puno pomaže kada nešto nije jasno.

ЕIma još mnogo "trikova i značajki" koje bih želio opisati, ali moja savjest vam neće dopustiti da gubite vrijeme na njih u jednom članku. Glavna implementirana ideja je već jasna: minimum prilagodljivih parametara - maksimalna jasnoća.

Letite u masti

КNaravno, želim da ne bude muha u glavi, ali svijet nije idealan. I moj urednik i moj kontroler nisu savršeni. Otkrio sam dvije glavne značajke koje još nisam uspio eliminirati.

ВPrvo, ponekad se pojavljuju smetnje prilikom pomicanja elemenata u grupama. Ali to ne ometa puno rad. Više "značajka" nego "bug".

И, drugo, pod određenim uvjetima, nakon učitavanja kruga u uređaj pomoću gumba "Učitaj", ponovno se pokreće. Ovo ne ometa život, ali stranicu urednika treba ažurirati.

Zaključak

НNadam se da vam se svidjela ideja crtanja algoritama umjesto pisanja programa. Tako nasumične misli, ideje i sporovi ponekad dovode do potpuno održivih razvoja događaja.

НOh, po mom mišljenju, opseg članka je prešao sve razumne granice. Pa ću završiti za danas.
ПSamo da kažem da je ostalo još samo nekoliko tjedana do odmora i da sam sasvim spreman prijeći s otklanjanja pogrešaka kontrolera za stolom na otklanjanje pogrešaka "na terenu".
ЕAko nekoga zanimaju moje ideje ili detalji razvoja, neka mi piše: [e-pošta zaštićena]

ВUvijek će mi biti drago primiti komentare i kritike, ako su, naravno, relevantne.

Жpozdravljamo vaše povratne informacije, komentare i prijedloge.

Linkovi, reference i paketi

ESP8266
WiFi
MQTT
UDP Multicast

Na zahtjev radnika

ВObjavljujem neobrađenu dokumentaciju i firmware (binar).

https://github.com/shiotiny/ShIoTinyBin

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

Vožnja: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png

Opis komponenti i kratka objašnjenja: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

Upute "kako šivati" su tu.

Izvor: www.habr.com

Dodajte komentar