ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Асноўныя тэзы ці пра што гэты артыкул

Працягваем цыкл артыкулаў аб ShIoTiny - візуальна праграмуемым кантролеры на базе чыпа ESP8266.

У гэтым артыкуле расказана на прыкладзе праекта кіравання вентыляцыі ў ванным пакоі ці іншым памяшканні з падвышанай вільготнасцю пра тое, як будуецца праграма для ShIoTiny.

Папярэднія артыкулы серыі.

ShIoTiny: малая аўтаматызацыя, інтэрнэт рэчаў ці "за паўгода да водпуску"
ShIoTiny: вузлы, сувязі і падзеі ці асаблівасці малявання праграм

Спасылкі

Бінарныя прашыўкі, схема кантролера і дакументацыя
Інструкцыя і апісанне вузлоў
Настройка MQTT брокера cloudmqtt.com
Панэль кіравання MQTT dashboard для Android

Увядзенне

Разумення па-за досведам не бывае. Гэта ісціна, правераная часам і пакаленнямі. Таму няма нічога лепшага для навучання практычным навыкам, чым спробы зрабіць нешта самастойна. І прыклады, якія паказваюць што можна рабіць, а што не варта і спрабаваць, тут прыйдуцца вельмі дарэчы. Чужыя памылкі, вядома, не змогуць прадухіліць узнікненне памылак уласных, але могуць дапамагчы скараціць колькасць апошніх.

Пытанні і лісты чытачоў папярэдніх артыкулаў падштурхнулі мяне зрабіць невялікі праект-прыклад кіравання вентыляцыяй для таго, каб паказаць як працуюць вузлы ShIoTiny.

Першапачатковая ідэя, на аснове якой з'явіўся кантролер ShIoTiny - помпава-палівальная станцыя - далёка не ўсім падыдзе і будзе цікавая. Таму я ўзяў усім зразумелую і шматлікім карысную сістэму кіравання вентыляцыяй у якасці прыкладу.

Скажу, што ідэя праекту не мая, а запазычыў я яе адсюль і затым адаптаваў да ShIoTiny.

Спачатку зразумей чаго ты хочаш

Працэс удасканалення - бясконцы. І менавіта гэтая ўласцівасць загубіла мноства добрых ідэй і праектаў. Распрацоўнік замест таго, каб выпусціць хай і не ідэальную, але працоўную рэч – працягваў яе ўдасканальваць. І ўдасканальваў датуль, пакуль канкурэнты не абыходзілі яго, выпускаючы хай і не ідэальнае (а часта адкрыта ўбогае), але якое працуе рашэнне.

Таму вельмі важна ведаць - дзе паставіць кропку ў праекце. Або, іншымі словамі, трэба вызначыць што мы жадаем атрымаць у канцы праекту з таго, што ў нас ёсць у пачатку. У рускай мове для дакумента, які складаецца як раз з мэтай апісаць шлях стварэння чаго-небудзь, ёсць цудоўнае кароткае і ёмістае слова "план", якое разумова адсталыя перакладчыкі і дэфектыўныя менеджэры ў апошні час чамусьці пачалі называць "дарожная карта". Ну ды бог з імі.

Наш план будзе такі. Выкажам здагадку, што маецца памяшканне, вільготнасць у якім можа часам моцна павялічвацца. Напрыклад такое, як ванны пакой ці кухня. Вільготнасць - рэч непрыемная і спосаб барацьбы з ёй стары як свет: выветрыць памяшканне. Спосабаў ветрання даволі шмат. Але мы, мабыць, адмовімся ад экзатычных і старамодных спосабаў накшталт неграў з апахаламі і спынімся на звычайным вентылятары. Вентылятары танней, ды і знайсці іх у нашых краях прасцей.

Адным словам, мы жадаем кіраваць вентылятарам: уключаць яго і, адпаведна, выключаць. Дакладней мы жадаем, каб ён сам уключаўся і выключаўся калі трэба.

Засталося вызначыць: пры якіх умовах вентылятар павінен уключацца і пры якіх умовах - выключацца.

Тут усё відавочна: калі вільготнасць вышэй нейкай зададзенай мяжы - вентылятар уключаецца і выцягвае паветра; вільготнасць прыйшла ў норму - вентылятар адключаецца.

Уважлівы чытач адразу зачэпіцца позіркам за слова "зададзенай". Кім зададзенай? Як зададзенай?

Задаваць парогавую вільготнасць можна некалькімі спосабамі. Мы разгледзім два з іх: першы - з дапамогай пераменнага супраціву і другі - па сетцы праз пратакол MQTT. У кожнага з гэтых спосабаў ёсць перавагі і недахопы, якія будуць разгледжаны ў далейшым.

Для тых, хто не зразумеў, растлумачу, што «парогавая вільготнасць» - гэта такі ўзровень вільготнасці, пры перавышэнні якога патрабуецца ўключэнне вентылятара.

Наступнае пытанне: ці даваць карыстачу права ўключыць вентылятар непасрэдна? Гэта значыць па-за залежнасцю ад узроўня вільготнасці, па націску кнопкі? Мы такую ​​магчымасць прадугледзім. Бо вентылятар можа спатрэбіцца не толькі пры падвышанай вільготнасці, але і для выдалення з памяшкання, напрыклад, непрыемнага паху, названага ў народзе «смярдзю».

Такім чынам, мы зразумелі чаго хочам і нават няшмат, як гэта будзе працаваць. Пералічым коратка ўсе функцыі нашай сістэмы кіравання вентыляцыяй:

  • ўстаноўка парогавага ўзроўню вільготнасці (два варыянты);
  • вымярэнне ўзроўню вільготнасці;
  • аўтаматычнае ўключэнне вентылятара;
  • аўтаматычнае выключэнне вентылятара;
  • ручное ўключэнне вентылятара (па націску кнопкі).

Такім чынам, план зразумелы. Неабходна рэалізаваць усе вышэй пералічаныя функцыі ў нашай праграме. На аснове гэтага "плана" і будзем дзейнічаць. Для пачатку намалюем структурную схему прылады.

Структурная схема прылады

Наогул кажучы, такіх схем у нас будзе дзве. Першая - для варыянту, у якім парогавы ўзровень вільготнасці задаецца пераменным супрацівам. Другая схема - для варыянту, у якім парогавы ўзровень вільготнасці задаецца па сетцы праз пратакол MQTT.

Але бо гэтыя схеме будуць адрознівацца ўсяго на адзін элемент пераменны рэзістар усталёўка парогавага ўзроўня вільготнасці , то намалюем толькі адну структурную схему. Вядома, структурная схема паводле ДАСТ выглядае інакш. Але мы арыентуемся не на зуброў-інжынераў, а на маладое пакаленне. Таму навочнасць важней.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Што ж мы бачым на малюнку? Вентылятар падлучаны да рэле Relay1 кантролера ShIoTiny. Зважаю, што вентылятар ёсць штуковіна, якая насяляе пад высокай напругай. Таму, калі хто будзе рабіць сам такое - праяўляйце асцярожнасць. Гэта значыць, як мінімум, перш чым соваць свае пальцы або вымяральныя прыборы ў схему - абясточце як мінімум вентылятар. І другая заўвага. Калі ваш вентылятар больш магутны, чым 250 Вт, то падключаць яго напрамую да ShIoTiny не варта толькі праз пускальнік.

З вентылятарам разабраліся. Цяпер кнопка "ручное ўключэнне" вентылятара. Яна падключана да ўваходу Уваход1. Тут і тлумачыць больш няма чаго.

Датчык тэмпературы і ўзроўню вільготнасці ДГТ-11 (Або ДГТ-22 або іх аналагі). Для яго падключэння прадугледжаны спецыяльны ўваход на кантролеры. ShIoTiny. Як відаць на малюнку - падлучэнне такога датчыка таксама праблем не ўяўляе.

І, нарэшце, пераменны супраціў, якое задае парогавы ўзровень вільготнасці. Дакладней - дзельнік, які складаецца з пераменнага і сталага супраціваў. Праблем з яго падключэннем няма, але растлумачу, што ўбудаваны АЛП на ESP8266 разлічаны максімум на 1Вольт. Таму і патрэбен дзельнік напругі прыкладна ў 5 раз.

І яшчэ раз нагадаю, што гэты дзельнік не патрэбен, калі парогавы ўзровень вільготнасці задаецца па сетцы пасродкам пратаколу MQTT.

Пачнём складаць алгарытм працы прылады ў рэдактары ElDraw ShIoTiny. Як туды патрапіць, у гэты рэдактар, можна пачытаць у артыкулах раней ці ў інструкцыі, спасылка на якую ёсць у пачатку артыкула.

Варыянт першы, найпросты

Пачнём з простага: уключэнні рэле Relay1 па перавышэнні парогавага ўзроўню вільготнасці на зададзены час.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Як бачым, нічога складанага: усяго чатыры вузлы, не лічачы вузлоў-каментараў. DHT11 - гэта ўласна датчык тэмпературы і вільготнасці (можна памяняць на DHT22).

Канстанта CONST - Парогавы ўзровень вільготнасці, у працэнтах.

Кампатар - вузел параўноўвае два лікі і выстаўляе на выхадзе 1, калі зададзеную ўмову выконваецца і 0, калі ўмова не выконваецца.

У нашым выпадку такой умовай будзе A>B, Дзе A - вымераны датчыкам ўзровень вільготнасці, а B - Парогавы ўзровень усё той жа вільготнасці.

Як толькі вымераны ўзровень вільготнасці (A) перавысіць парогавы ўзровень вільготнасці (B), тут жа на выхадзе кампаратара A>B з'явіцца 1 і рэле уключыцца. І наадварот, як толькі ўзровень вільготнасці прыйдзе ў норму (гэта значыць A<=B), тут жа на выхадзе кампаратара A>B з'явіцца 0 і рэле адключыцца.

Усё зразумела? Каму не вельмі - прачытайце яшчэ раз ці зазірніце ў апісанне працы вузлоў у інструкцыі.

Заўважу, што дадзеныя з датчыка DHT11 абнаўляюцца прыкладна адзін раз у 10сек. Таму рэле не зможа ўключацца і адключацца гушчару, чым адзін раз у 10сек.

Усё б нічога, але мы хацелі б задаць парогавы ўзровень вільготнасці з дапамогай пераменнага рэзістара. Няма нічога прасцей!

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Проста заменім вузел-канстанту на вузел АЛП. Бо менавіта да АЛП мы падлучылі дзельнік напругі з пераменным рэзістарам.

Напружанне на ўваходзе АЛП змяняецца ад 0 да 1Вольта. А вось вільготнасць на выхадзе датчыка - змяняецца ад 0 да 100%. Як жа мы іх параўноўваем? Усё проста. Вузел АЛП у ShIoTiny не проста вымярае напругу на ўваходзе, але і ўмее яго маштабаваць і зрушваць.

Гэта значыць на выхадзе вузла ADC1 (АЛП) будзе значэнне X, разлічанае па формуле

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

, Дзе ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад) - напружанне на ўваходзе ADC (ад 0 да 1В); k - дыяпазон (ADC range) і b-зрушэнне (ADC offset). Такім чынам, калі задаць k = 100 и b = 0, то пры змене ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад) у дыяпазоне ад 0 да 1, значэнне X на выхадзе вузла АЛП будзе змяняцца ў дыяпазоне ад 0 да 100. Гэта значыць, лікава роўнае дыяпазону змены вільготнасці ад 0 да 100%.

Ці, па-простаму, круцячы рухавічок пераменнага супраціву, можна задаць парогавы ўзровень вільготнасці ад 0 да 100. Адзіная нязручнасць, што няма ніякіх прылад адлюстравання. Але на практыцы, калі ў рухавічка пераменнага супраціву зрабіць шэсць дзяленняў 6%, 0%, 20%, 40%, 60%, 80%) - то гэтага дастаткова для таго, каб выстаўляць парогавы ўзровень вільготнасці.

Як нам выставіць каэфіцыенты k - дыяпазон (ADC range) і b-зрушэнне (ADC offset)? Ды прасцей паранай рэпы! Ткніце паказальнікам мышы ў вузел АЦП1 і тут жа ў вас з'явіцца акно наладкі. У ім можаце выставіць усё, што вам трэба. Для нашага выпадку гэта будзе такое акно, як на малюнку.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Такім чынам, найпростае працоўнае рашэнне ў нас ёсць. Пачнём яго ўдасканаліць.
Дарэчы, у найпростага рашэння ёсць адна добрая якасць — яму не патрэбен інтэрнэт. Яно цалкам аўтаномнае.

Варыянт другі, які падключаецца кнопку

Усё працуе і ўсё рады. Але вось няўдача, мы не можам уключыць вентыляцыю прымусова. Мы ўжо дамовіліся, што да ўваходу Уваход1 у нас будзе падключана кнопка, якая будзе ўключаць і выключаць вентылятар прымусова, не зважаючы на ​​датчык вільготнасці.
Нетутэйша час апрацаваць гэтую кнопку ў нашай схеме-праграме.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Блок апрацоўкі націску кнопкі выдзелены аранжавай лініяй. Ён уяўляе сабой лічыльнік націскаў кнопкі, які скідаецца ў нуль, калі значэнне на яго выхадзе перавысіць адзінку (зялёная лінія, выхад вузла CT).

Працуе ўсё тут гэтак жа немудрагеліста, як і раней: лічыльнік CT лічыць націску кнопкі, падключанай да ўваходу Уваход1. Гэта значыць значэнне на вынахадзе гэтага лічыльніка з кожным націскам кнопкі павялічваецца на 1.

Як толькі гэта значэнне стане роўным двум (гэта значыць больш за 1), тут жа на выхадзе кампаратара A>B з'явіцца 1. І гэтая 1 скіне лічыльнік CT у нуль. Маецца на ўвазе кампаратар, ніжні па схеме!

Такім чынам, у нашай кнопкі два станы — 0 і 1. Калі б нам трэба было больш станаў (3 ці 4 ці яшчэ больш) — нам было б дастаткова змяніць канстанту CONST з адзінкі на іншае значэнне.

Такім чынам, у нас ёсць дзве ўмовы ўключэння вентылятара: перавышэнне зададзенага ўзроўню вільготнасці і аднаразовае націск кнопкі. Пры выкананні любой з умоў вентылятар уключыцца. І будзе працаваць да таго часу, пакуль паўторна не націснуць кнопку И узровень вільготнасці не прыйдзе ў норму.

Можна, вядома, яшчэ больш ускладніць алгарытм, але мы гэтага рабіць не будзем - пакінем прастору для творчасці жадаючым.

Варыянт трэці, падлучаемся да інтэрнэту

Усё, што мы апісалі - цалкам працаздольна. А як жа панты? Бо любы прышчавы хіпстэр-хакер-крэкер засмяе таго, хто круціць ручку і націскае кнопку, а не кіруе са смартфона! Круціць ручку гэта не модна . А вось поўзаць пальцам па смартфоне, сціраючы гэты палец у кроў - вось ён, пік жаданняў хіпстэра-хакера-крэкера (ніколі не мог адрозніць усіх іх - так што калі памыліўся, прабачыце).

Але будзем паблажлівыя да ўказаных асоб. У кіравання з дапамогай інтэрнэту ёсць і рэальныя плюсы. Па-першае, гэта навочнасць. Ёсць маса прыкладанняў пад усе платформы, якія дазваляюць парай тыкаў стварыць цалкам прыдатную для выкарыстання панэль кіравання нашым кантролерам-карлсанам. Па-другое, гэта магчымасць дыстанцыйна назіраць за станам вільготнасці ў памяшканні. І, па-трэцяе, можна бачыць не толькі тое, што робіць вентылятар - круціцца ці не, але і тое, які парогавы ўзровень вільготнасці зададзены. І тое - уключыўся вентылятар аўтаматычна або ўручную. Увогуле ўсё, што пажадаеце.

Вядома, для нейкага вентылятара шмат гонару - столькі ўвагі. Але гэта толькі прыклад.

Такім чынам, для падлучэння да інтэрнэту мы будзем выкарыстоўваць тэхналогію MQTT і аднайменны пратакол.
Каб скарыстацца гэтай тэхналогіяй, нам неабходны MQTT-брокер. Гэта такі спецыяльны сервер, які абслугоўвае MQTT-кліентаў, Напрыклад ShIoTIny і ваш смартфон.

Сутнасць тэхналогіі MQTT складаецца ў тым, што любы з кліентаў публікуе на MQTT-брокеры (серверы) адвольныя дадзеныя пад вызначаным імем (званым тэма у тэрміналогіі MQTT). Іншыя кліенты могуць падпісацца на адвольныя дадзеныя па іх імя (тэма) і атрымліваць зноў апублікаваныя дадзеныя. Гэта значыць увесь абмен дадзенымі ідзе па прынцыпе кліент-брокер-кліент.

Я не буду завастрацца на падрабязнасцях. У інтэрнэце маса артыкулаў і обучалок па тым як працуе MQTT і якія ёсць праграмы для стварэння панэляў кіравання. Проста пакажу як нам прымаць і публікаваць дадзеныя пасродкам ShIoTiny.

У якасці брокера я выкарыстоўваў www.cloudmqtt.com, Але прынцып усюды адзін.

Такім чынам, будзем лічыць, што вы зарэгістраваліся на MQTT-брокеры. Увогуле выпадку, брокер выдасць вам (ці запатрабуе прыдумаць) імя карыстальніка і пароль (для аўтарызацыі), а гэтак жа порт для падлучэння. Падключыць ShIoTiny к MQTT-брокеру можна двума спосабамі - звычайнае падлучэнне і па TLS (SSL).

Усе гэтыя параметры ў ShIoTiny ўводзяцца на ўкладцы сетак, раздзел MQTT Connection to server.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Калі ваш MQTT-брокер не патрабуе аўтарызацыі - не ўводзіце лагін і пароль (пакіньце гэтыя палі пустымі).

Параметр MQTT topic prefix патрабуе асобнага тлумачэння.

Прэфікс MQTT-параметраў - гэта радок, якая дадаецца да назвы тэмы (тэма) пры публікацыі і падпісцы на MQTT-брокеры. Каб усталяваць MQTT-прэфікс для вашага кантролера, яго трэба проста ўвесці ў поле ўводуПрэфікс тэмы MQTT'('MQTT topic prefix»). Прэфікс заўсёды пачынаецца са слэшу ("/")! Калі вы не ўведзяце слэш у поле ўводу - ён дадасца аўтаматычна. У прэфіксе нельга выкарыстоўваць сімвалы "#" и "+". Іншых абмежаванняў няма.

Напрыклад, калі вы публікуеце параметр «статус» (ці падпісваецеся на яго), а ваш прэфікс зададзены як «/shiotiny/», то на брокеры гэты параметр будзе апублікаваны пад імем «/shiotiny/status». Калі ў вас зададзены пусты прэфікс, то ўсе параметры на брокеры будуць пачынацца са злеша ("/"): "статус» будзе публікавацца як «/статус.

Такім чынам, лічым, што вы зарэгістраваліся на MQTT-брокеры і атрымалі лагін, пароль і порт. Затым вы прапісалі гэтыя параметры на ўкладцы сетак, раздзел MQTT Connection to server кантролера ShIoTiny.

Лічым, што прэфікс усталяваны ў значэнне/room/.

Пачнём з таго, што апублікуем стан усіх ключавых параметраў: рэле Realay1, стану ручнога ўключэння, стану аўтаматычнага ўключэння і, нарэшце, парогавы і бягучы ўзроўні вільготнасці. Ну і бонусам - тэмпературу ў памяшканні. Як гэта зрабіць, гледзіце на малюнку.

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Як бачым, адрозненне ад папярэдняга варыянту – толькі вузлыMQTT Publish». З улікам прэфікса, публікуюцца наступныя параметры:
ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Як бачым, увесь стан сістэмы ў нас як на далоні!

Але мы жадаем не толькі бачыць, але і кіраваць. Як быць? Вельмі проста. Мы адмовімся ад усталёўкі парогавага ўзроўню вільготнасці з дапамогай АЛП і пераменнага рэзістара і будзем задаваць гэты самы парогавы ўзровень вільготнасці па MQTT прама са смартфона!

ShIoTiny: вентыляцыя вільготнага памяшкання (праект-прыклад)

Выдаляем вузел АЛП са схемы і ўключаем туды тры новыя вузлы: FLASH store, FLASH restore и MQTT describe.

Функцыя вузла MQTT describe відавочная: ён атрымлівае параметр /room/trigHset (парогавы ўзровень вільготнасці) з MQTT брокера. Але што ён робіць з дадзенымі далей? Проста аддае іх вузлу FLASH store, які, у сваю чаргу, захоўвае гэтыя дадзеныя ў энерганезалежнай памяці пад імем trigH. Пасля гэтага, вузел FLASH restore счытвае з энерганезалежнай памяці дадзеныя пад імем trigH і што адбываецца далей, мы ўжо ведаем.

Навошта такія цяжкасці? Чаму нельга адразу аддаць атрыманыя дадзеныя на ўваход кампаратара?

Як гаварыў таварыш Ш.Холмс. гэта элементарна! Ніхто не гарантуе, што пасля ўключэння вашага прылады, яно далучыцца да MQTT-брокеру. А вільготнасць вымяраць трэба. І вентылятар трэба ўключаць. Але без інфармацыі аб парогавым узроўні вільготнасці гэта немагчыма! Таму, наша прылада пры ўключэнні здабывае раней запомнены парогавы ўзровень вільготнасці з энерганезалежнай памяці і выкарыстоўвае для прыняцця рашэнняў яго. А ўжо калі ўсталюецца злучэнне з MQTT-брокерам і хто-небудзь апублікуе новае значэнне /room/trigHset, Тады будзе выкарыстоўвацца гэта новае значэнне.

Далей вы можаце прыдумляць усё што заўгодна. Напрыклад, апроч вільготнасці ўвесці яшчэ і ўлік тэмпературы. Або дадаць "разумнае" кіраванне асвятленнем (у нас яшчэ засталіся нявыкарыстанымі два рэле і два ўваходу). Усё ў вашых руках!

Заключэнне

Вось і разгледзелі мы некалькі прыкладаў рэалізацыі найпростага ў сутнасці сваёй кантролера на базе ShIoTiny. Можа, гэта будзе камусьці карысна.

Як заўсёды, прапановы, пажаданні, пытанні, памылкі друку і іншае - на пошту: [электронная пошта абаронена]

Крыніца: habr.com

Дадаць каментар