ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

Главните точки или за што е оваа статија

ТБидејќи интересите на луѓето се различни, а луѓето имаат малку време, тогаш накратко за содржината на статијата.

СОваа статија е преглед на проектот контролер со минимална цена и можност визуелно програмирање преку ВЕБ-прелистувач.

ПБидејќи ова е напис за преглед кој има за цел да покаже „што може да се исцеди од контролорот на денар“, не треба да барате длабоки вистини и детални алгоритми во него.

РСе разгледуваат мотивацијата, идеите и резултатите од изградбата на контролер базиран на WiFI чип ESP8266.

Предупредување

Не сакав да ја напишам оваа статија. Воопшто не сум љубител на пишување статии. Треба да размислите за ова, и тоа многу. Размислете како да пишувате на таков начин што бројот на луѓе кои погрешно ве разбираат да се сведе на минимум. Размислете како да не одите во крајности. И има многу повеќе за размислување.
Но, моите пријатели рекоа дека бидејќи моите напори во областа на IoT и друга мала автоматизација се интересни за нив, тогаш тие може да бидат интересни и за другите и за пошироката јавност. Па, каде се собира јавноста која е заинтересирана за ова? Се разбира, на хабот. И еве ме. Стар читател и нов писател.

Не сносам никаква одговорност за грешки, неточности, печатни грешки, застарен стил на презентација и слично, кои можеби нема да му се допаднат на читателот. Читајте на ваш сопствен ризик.

Исто така веднаш ве предупредувам дека нема да објаснам што е MQTT, WiFi и UDP multicast и други работи кои не се директно поврзани со темата. Има неколку врски на крајот од статијата.

Раѓање на идеја или некој текст

ЖЖивотот не е лесна работа и неговото височество Шанс игра важна улога во него. Затоа, сакам да споделам како случајните настани, заедно со природната мрзеливост, резултираа со прилично интересен развој на контролер базиран на ESP8266.

НСè започна сосема рутински: сакав да изградам систем за контрола на снабдувањето со вода и наводнување на градинарски кревети и грмушки во земјата.

НО, бидејќи можам целосно да работам на цевки, тенкови и чешми само на одмор, до кој имаше уште повеќе од шест месеци - сè беше ограничено на дискусии на работа со колеги и пријатели и другари во неформален амбиент.

ТТемата за „мала автоматизација“ или, како што обично велат меѓу „овие училишни хакери-хипстери“ - темата IoT - Интернет на нештата - ме интересира долго време. Долго пред самиот Интернет да биде широко користен.

ЕУште како дете сакав работите да направат нешто „само“. И би било пожелно да ги контролирам некако од далечина. Но, во тоа време (80-тите, почетокот на 90-тите години на минатиот милениум) ова беше прилично тешко. Интернетот не беше широко достапен никаде во светот, исто како што никаде немаше мобилни телефони, таблети, па дури и LCD дисплеи или USB флеш драјвови. Затоа, моравме да се ограничиме на „плескање со прекинувачи за светло“ и едноставни радио далечински управувачи. Но, за тие времиња и таа возраст не беше лошо и интересно.

НО, ова се работи од минатото. Сега е 15 век. И секој има паметен телефон во џебот, Интернетот е достапен речиси секаде каде што е потребен и не е потребен, а базата на достапни електронски компоненти сега е таква што пред само XNUMX години просечниот жител на планетата Земја никогаш не би го сонувал .

ПЗатоа, откако решив да изградам контролер за водни работи на дача, го свртев вниманието кон чипот ESP8266.
Како прво, овој чип е евтин. И ако еден контролер не е доволен, можете да инсталирате два, три или пет. Второ, има WiFi на одборот. Тоа е, можете да гледате што се случува преку Интернет, па дури и да го контролирате процесот од кој било паметен телефон. Се разбира, ви треба пристапна точка со пристап до Интернет, но ова не е проблем. Како и да е, го има речиси насекаде или ќе биде, вклучително и во мојата дача.

ППотопувајќи се во прекрасниот свет на проекти за ESP8266, бев изненаден кога открив дека и покрај прекрасните способности на овој чип, проектите на него, со ретки исклучоци, се поделени на два вида: ова се или екстремно примитивни програми како „кликнете прекинувачите од вашиот паметен телефон и гледајте во состојбата на температурите на сензорот преку Интернет“; или добри и солидни JavaScript или Lua толкувачи, но за жал, тие ја трошат речиси целата меморија и не ви дозволуваат да направите ништо сериозно.

ПМојата прва идеја беше едноставна како палачинки - да напишам едноставна програма за контролирање на пумпи врз основа на состојбата на сензорите и тоа е тоа. Но, како искусен валјак во смисла на скокање на гребло при имплементирање на различни системи, разбрав дека дефинитивно нема да можам однапред да ги предвидам сите свиоци на алгоритмот што би сакал или треба да ги исправам за време на изградбата на систем за водоснабдување и наводнување.

ДНе е многу погодно да се обработи програмата на дача, во темна штала. Но мораш.
Кој е излезот? Се разбира, првото нешто што ми падна на ум беше да го направам алгоритмот приспособлив. Еден од моите колеги даде многу совети - што да се постави и како. Со ова ја уби мојата прва идеја во пупка. Благодарение на него. Ако тој не го откриеше пред моите очи бројот на параметри што би требало да ги конфигурирам, веројатно немаше да ја одбијам оваа опција: правење страница за поставки за алгоритам.

НЗастрашувачката слика за бројот на параметрите на поставките, па дури и оние кои влијаат еден на друг, ме отрезни. Уште еднаш сфатив дека не можеш се да предвидиш...

СЌе направам резервација еднаш: Јас сум мрзлив. Многу мрзливи! Јас сум искрено премногу мрзлив да ја препишувам програмата секој пат. Затоа, се појави задачата - како брзо и лесно да поставите алгоритам, по можност без програмирање? Покрај тоа, овој алгоритам ќе биде доста комплициран; ќе има многу параметри; ќе биде специфична за мојот случај и несоодветна за другите. И навистина сакам да го направам уредот повеќе или помалку универзален...

ПБидејќи имаше уште околу шест месеци пред одморот и секакви работи за пумпање цевки, решив да одвојам време и да размислам како да го направам погодно и убаво? Како да програмирате без програмирање? Како да направите без трилион параметри што можат да се променат при конфигурирање?

ККако и обично, сè беше веќе измислено пред нас: сфатив дека сакам да нацртам алгоритам во форма на акциони квадрати и да ги поврзам со комуникациски линии кои покажуваат каде летаат податоците од и до. Па, со покажување на квадратот, сакам да можам да конфигурирам некои од неговите индивидуални параметри.

ИИдејата за дефинирање на алгоритам со цртање на квадрати не е нова. Вакви системи постоеле уште во 80-тите години; Сега постои суперпопуларен систем NodeRed, кој им е добро познат на оние кои веќе се приклучија на светот на автоматизацијата од мали размери/IoT.

НО, тука е проблемот: таквите системи се дизајнирани за „големи компјутери“. Во најлош случај - на Raspberry PI. Но, не на ESP8266, кој има само неколку десетици килобајти RAM и нема оперативен систем!

Кшто да се прави? И има само два излези: напишете и нацртајте програма на „голем компјутер“ или лаптоп, а потоа префрлете ја во некоја форма на ESP8266 или обидете се да го „буткате невозможното“ во самиот контролер ESP8266.

ПЗатоа, максималната програма што ја имав беше оваа: за да го програмирате вашиот контролер, не треба да ви треба ништо друго освен лаптоп со WEB прелистувач! Тоа е, лаптоп со WEB-прелистувач и мојот контролер - ова треба да биде доволно за целосно да ги конфигурирате и пишувате и цртате контролните програми.

И, како што се испостави, беше сосема можно да се спроведе ова!
Нема да ви досадувам со сите детали за развојот на проектот. Само ќе кажам дека врз основа на зборовите што ми паднаа на ум и на јазикот за време на процесот на развој, би било можно да се состави посебна „Речник на непристоен јазик што го користат работниците во електронската индустрија" Но, се е готово. Поточно, не сè, туку првата, најтешката фаза, кога не е јасно дали вашата идеја за живеење ќе биде таму или е само делириум на сиво желење во месечева ноќ.

ПЌе го споделам резултатот од она што излезе и го доби името „ShIoTiny контролер“.

Што се случи?

Хардвер Контролорот ShioTiny е стандарден и едноставен: три влеза дизајнирани за сензори од типот „сув контакт“ (копчиња, прекинувачи за трска, тие се и сензори за нивото на водата во резервоарот), еден ADC влез, еден влез за поврзување на сензор за температура и влажност на DHT22 тип или слично. И, конечно, три излези во форма на преклопни релеи за 220 волти, 1 ампер. Релето вели 10А, но јас сум реалист и нема да дозволам 10 ампери низ таблата. И за да се контролираат стартерите на пумпата, доволно е 1Amp. Сето ова се напојува од извор на енергија со напон од 5 до 9 волти.

ЧДа бидам искрен, сензорот за температура го додадов баш така, но на ADC имав надежи да го измерам напонот на напојната мрежа. Кој знае?

РСе разбира, сите влезови, освен влезот за поврзување DHT22, се заштитени со отпорници и диоди: немав желба да го запалам ESP8266, а диодите и отпорниците чинат само неколку копејки.

Фото Готовиот производ може да се види на почетокот на статијата. Нарачав неколку од овие табли - што ако ги запалам или морам да ги исечам нозете на патеката?
Но, за среќа, не морав.

ФОвој производ е, се разбира, убавина и величественост. Но, за погодност, подолу е дијаграм за цртање на поврзување на симулатори на сензори и актуатори со таблата.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

Внаместо сензори за ниво има копчиња Input1..3, наместо стартери има LED диоди поврзани со релето Relay1..3. Па, променлив отпорник на ADC за симулирање на влезниот напон.
ККога релето е исклучено, црвената LED свети. И кога е вклучено е зелено. Затоа го дебагирав на масата.

КДополнително на сето ова, на левата страна на плочата има и конектор за напојување, а десно две сервисни копчиња: Reset и AP. Па, постои DIP прекинувач кој го префрла уредот во режим на програмирање. Достапен е и програмскиот конектор ESP8266 преку USB-UART адаптер.

Некои објаснувања за копчињата. Што е Ресетирање - и така е јасно. И тука е копчето AP потребни за преведување ShioTiny за да го отворите режимот на пристапна точка (режим на конфигурација или режим на конфигурација). Зошто е ова потребно? Па, на пример, сте ги збркале мрежните поставки и сакате да ги промените. Притиснете го копчето AP неколку секунди (додека не светне убавата сина LED диода). Потоа, земете го вашиот паметен телефон или лаптоп, вклучете WiFi и видете отворена пристапна точка со името esp_8266_xxxx и поврзете се на неа. Потоа одете во прелистувачот на вашиот паметен телефон или лаптоп и напишете ја лентата за адреси: 192.168.4.1. Ако сè е во ред, тогаш сте однесени на страницата со контролорот ShioTiny и можете повторно да ја конфигурирате.

ККако што гледаме, хардверот не е ништо комплицирано. Затоа о софтверски дел.

ВЌе ги опишам сите чудни карактеристики на имплементацијата, но подоцна. Некој ден. И денес ќе го разгледам софтверот само „однадвор“, односно од гледна точка на корисникот - јас или некој друг што ризикувал да го користам мојот занает (има и такви каскадери).

С Од гледна точка на корисникот, уредот е HTTP сервер кој е достапен преку WiFi. Сите поставки, програмирање и слично се прават со помош на ВЕБ-прелистувач.

ИЗначи, отидовме на страницата на контролорот. Што гледаме? И го гледаме табулаторот „Контрола и статус“, кој ја прикажува моменталната состојба на користените уреди: влезови, излези, ADC, DHT22. Дополнително, се прикажани параметрите за поврзување со пристапната точка (ако работиме во режим на WiFi станица); параметри на пристапната точка (ако работиме во режим на пристапна точка за WiFi) или и двете. Па, дополнително, параметрите за поврзување со брокерот MQTT се прикажани ако се користи протоколот MQTT.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ККако што гледаме, ништо посебно или интересно. Нема што да кликнете! Иако... Има уште две јазичиња! Конфигурирање на мрежните поставки Вмрежување и уредувач на програмски кола ЕлДрау.

Кпа погодувате, Вмрежување - ова е поставување на мрежа, но не само. Има уште неколку интересни параметри. Ајде да кликнеме на јазичето Вмрежување и таму ќе го видиме приближно она што е прикажано на сликата.
НПоставување на името на пристапната точка и лозинката за секој режим - WiFi станица и WiFi пристапна точка. Се чини дека сè е јасно. Како и целта на копчето „Скенирај WiFi“ доста транспарентен.
А еве ја паѓачката листа „ShIoTiny режим“ бара појаснување. Факт е дека на кој било начин не можев да одлучам кој режим ќе ми биде попогоден да работам. И затоа тој обезбеди 5 начини на работа на уредот.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ПДозволете ни накратко да ги наведеме овие режими на работа.

Режим на конфигурација — режим на конфигурација. Ова е режим на отворена пристапна точка со фиксна адреса 192.168.4.1 и име esp_8266_xxxx.

Режим на станица — режим на WiFi станица поврзана со вашата пристапна точка.

АП режим — режим на затворена пристапна точка. Името и лозинката ги поставувате сами.

Режим на AP+станица - ова е истовремено активирање на AP режим + режим на станица.

единствен режим — работи без мрежна врска. Осамен контролор кој го носи својот тежок дел...

В кој било од режимите освен „Режим за конфигурација“, можете да блокирате ВЕБ-страница со штиклирање на полето „Заклучи веб во режим на станица“. Ова е некако од безбедносни причини.

НПоставките за MQTT се очигледни: сервер, порта, лозинка, отворена врска или од SSL. Овде нема да навлегувам во детали.

КМеѓу другото, контролорот ShioTiny може да испраќа и прима пакети од посебен формат преку мултикаст. Неговите поставки се исто така очигледни: групна адреса и порта.
Се разбира, ако ги опишете сите нијанси на поставките, ќе добиете посебна статија, но ова не е дел од моите планови.

Ида, со таб Вмрежување сè е повеќе или помалку јасно. Ајде да преминеме на главната карактеристика на контролорот - уредникот на програмското коло ЕлДрау.

Тсо допирање на јазичето ЕлДрау, ќе видиме нешто како следново. Се разбира, ако уредот нема оптоварено коло, тогаш полето на колото ќе биде празно.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

Слево - палета на елементи или јазли (јазли).
Справа - поле за шема или едноставно „шема“.
СНа врвот има копчиња за вчитување и растоварување на дискот и на уредот, како и копчиња за уредување.

ДЗа оние кои работеле со уредници, управувањето е генерално очигледно. Треба да додадете елемент на дијаграмот - земете го со глувчето и повлечете го од палетата до дијаграмот. Ако треба да отстраните елемент или врска од дијаграмот, кликнете на него или на него со глувчето и притиснете го копчето НА. Треба да ги поврземе елементите - го земаме влезот на еден елемент и го поврзуваме со излезот на друг.

ЕИма и скалирање (SHIFT+тркало на глувчето). За жал, не е можно да се копираат елементи и групи на елементи. Но, ова не ми пречи многу.

КДополнително, поради логички причини, влезот на јазол може да се поврзе само со еден излез од друг јазол. Но, излезот на еден јазол е со неколку влезови на други јазли. Влезовите се секогаш лево од јазлите. Излезите се секогаш на десната страна.

ККакви способности имаме за да имплементираме алгоритми?
ВМожностите се доста обемни. Палетата содржи јазли што го претставуваат целиот хардвер на контролорот ShioTiny: влезови, релеи, ADC, DHT11/22.

ДПостојат логички и аритметички јазли за обработка на податоци.

ЧЗа да можеме да работиме со уредот преку Интернет, постојат јазли за претплата и објавување параметри на брокерот MQTT.

ЕАко сакаме неколку контролори на ShioTiny да разменуваат информации меѓу себе, можеме да користиме јазли за испраќање и примање параметри користејќи UDP multicast протокол.

КПокрај тоа, постојат тајмер јазли; контролни јазли за обработка на настани.

ПЌе ви дадам неколку примери. На пример, дали сакате податоците за температурата и влажноста да се објавуваат на MQTT сервер на секои 30 минути? Ништо не може да биде поедноставно. Ајде да цртаме вака.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

Жкопче за меми „Прикачи“. Сите!
ЕАко правилно сте ја конфигурирале врската со брокерот MQTT на табулаторот Networking, тогаш тоа е сè!
Кна секои половина час температурата ќе се објавува на брокерот под темата /T, а влажноста - под темата /H. Или, ако поставите свои имиња на теми, тогаш под нив.
ЗОчигледното прашање е: зошто 18000 е 30 минути? Затоа што сите времиња се мерат во десетинки од секундата.

ТСега сакате да ја додадете во оваа шема можноста за вклучување на релето Relay1 преку Интернет, па дури и за одредено време? Нема проблем. Ајде да го завршиме цртежот вака.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ОПет кликнете на копчето „Подигни“. Сите! Сега, покрај тоа што на секои половина час ќе се објавуваат температурата и влажноста на брокерот MQTT, ќе може да се вклучи и релето Relay1. Да, не само вклучете го, туку точно 10 минути. Можете да го овозможите релето со објавување на темата /r1cmd, поставено на 1. А вистинската состојба на релето ќе биде објавена во темата /r1status.

ВДали сакате не само да го вклучите, туку и да го исклучите релето пред предвиденото? Да, што и да кажете. Сликата подолу покажува како да го направите ова!

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ПДали принципот е јасен? Вие само го цртате алгоритмот со глувчето! И напишете неколку поставки: време, име на тема и тоа е тоа. Ова е многу појасно од пишувањето куп код.

КПатем, истакнувањето врски во различни бои не е „Фотошоп“ - тоа е една од функциите на уредникот. Можете да ги обоите врските како што сакате за да не се збуните.

Нах и тоа не е се! За да се дебагира алгоритмот, постои копче „Почеток на мониторот“. Чудно е доволно, но го вклучува режимот „монитор“. Во овој режим, состојбата на сите излези на сите јазли периодично се чита од контролорот ShioTiny и се прикажува на дијаграмот. Приближно како на сликата подолу.

ShioTiny: мала автоматизација, Интернет на нештата или „шест месеци пред одмор“

ТОдносно, можеме да видиме во „речиси реално време“ што имаме на влезот и излезот на секој јазол. Многу помага кога нешто не е јасно.

ЕИма уште многу „трикови и карактеристики“ што би сакал да ги опишам, но мојата совест нема да ви дозволи да го трошите вашето време на нив во една статија. Главната имплементирана идеја е веќе јасна: минимум приспособливи параметри - максимална јасност.

Летај во маст

КСе разбира, сакам да нема мува во маст, но светот не е идеален. И мојот уредник и мојот контролер не се совршени. Открив две главни карактеристики кои сè уште не сум успеал да ги елиминирам.

ВПрво, понекогаш се појавуваат грешки при движење на елементи во групи. Но, ова не се меша многу во работата. Повеќе „функција“ отколку „бубачка“.

И, второ, под одредени услови, по вчитувањето на колото во уредот со помош на копчето „Подигни“, се рестартира. Ова не го попречува животот, но страницата на уредникот треба да се ажурира.

Заклучок

НСе надевам дека ви се допадна идејата да цртате алгоритми наместо да пишувате програми. Ова е начинот на кој случајните мисли, идеи и спорови понекогаш доведуваат до целосно остварливи случувања.

НО, според мое мислење, обемот на статијата ги надмина сите разумни граници. Па ќе завршам за денес.
ПДозволете ми да кажам дека остануваат уште само неколку недели до одморот и јас сум сосема подготвен да преминам од дебагирање на контролорот на масата до дебагирање „на терен“.
ЕАко некој е заинтересиран за моите идеи или детали за развој, пишете ми: shiotiny@yandex.ru

ВСекогаш ќе ми биде драго да добивам коментари и критики, доколку се, се разбира, релевантни.

Ждобредојдени ги вашите повратни информации, коментари и предлози.

Линкови, референци и парцели

ESP8266
WiFi
MQTT
UDP Multicast

На барање на работниците

ВЈа објавувам необработената документација и фирмверот (бинарен).

https://github.com/shiotiny/ShIoTinyBin

Фирмвер: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin

Шема: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png

Опис на компонентите и кратки објаснувања: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-nodes.pdf

Има инструкции „како да се шие“.

Извор: www.habr.com

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster