An ESP-Now үй метеостанциясы: 9 кадам (сүрөттөр менен)
An ESP-Now үй метеостанциясы: 9 кадам (сүрөттөр менен)
Anonim
ESP-Now үй метеостанциясы
ESP-Now үй метеостанциясы

Мен үй метеостанциясына ээ болгум келген жана үй -бүлөнүн бардык мүчөлөрү температураны жана нымдуулукту оңой эле текшере алмак. Сырткы шарттарды көзөмөлдөөгө кошумча мен үйдүн конкреттүү бөлмөлөрүн жана гараждын устаканасын көзөмөлдөөнү кааладым. Бул бизге үйдү желдетүү же кургаткычты иштетүү үчүн жакшы убакыт болгондо кабар берет (кышында бул жерде жамгыр көп жаайт). Мен түзгөн нерсе-бул ESP-Now негизделген сенсордук система, ал жергиликтүү веб-серверге отчет берет, аны каалаган адам компьютеринен же телефонунан текшере алат. Телефон үчүн мен муну жеңилдетүү үчүн жөнөкөй Android тиркемесин жаздым.

1 -кадам: Дизайн деталдары

Дизайн деталдары
Дизайн деталдары

Мен ар кандай жерлерге жайгаштырып, маалыматты сактап кала турган бир негизги станцияга (же хабга) отчет бергидей ар кандай сенсордук станцияларга ээ болгум келди. Ар кандай идеяларды сынап көргөндөн кийин, мен Espressifтин ESP-Now протоколун колдонууну чечтим, анткени бул түзмөктөр ортосунда тез байланышууга мүмкүнчүлүк берди. Сиз ESP-Now жөнүндө бир аз окуй аласыз жана бул GitHub репо менин шыктандыруумдун чоң бөлүгү болгон.

Биринчи сүрөт системанын жайгашуусун көрсөтөт. Ар бир сенсор өзүнүн өлчөөлөрүн шлюз түзмөгүнө кабарлайт, ал катуу зымдуу сериялык туташуу аркылуу маалыматтарды негизги серверге жөнөтөт. Мунун себеби, ESP-Now протоколу WIFI туташуусу менен бир убакта активдүү боло албайт. Колдонуучу веб-баракчага кириши үчүн, WIFI ар дайым күйүп турушу керек болчу, ошондо бир эле түзмөктө ESP-Now байланыштарын колдонууга мүмкүн болбой калат. Шлюз түзмөгү Espressif негизиндеги түзмөк болушу керек (ESP-Now жөндөмдүү), негизги сервер веб-баракчаны иштете алган каалаган түзмөк болушу мүмкүн.

Кээ бир сенсордук станциялар батарейкаларын (же күн заряддуу батареяларын) иштетет, ал эми башкалары жөн эле электр кубатына ээ болушат. Бирок, мен баарына мүмкүн болушунча аз энергияны колдонууну кааладым жана ESP8266 жана ESP32 түзмөктөрүндө жеткиликтүү болгон "терең уйку" функциясы абдан пайдалуу. Сенсор станциялары маал -маалы менен ойгонуп, өлчөөлөрдү жүргүзүп, шлюз аппаратына жөнөтүп, алдын ала программаланган убакытка кайра уктап калышат. Алардын ойгонуу мезгили болжол менен ар бир 5 мүнөттө 300 мс (менин учурда) алардын электр энергиясын керектөөсүн олуттуу түрдө азайтат.

2 -кадам: сенсорлор

Сенсорлор
Сенсорлор
Сенсорлор
Сенсорлор

Айлана -чөйрөнүн параметрлерин өлчөө үчүн тандалган ар кандай сенсорлор бар. Мен I2C байланыш жөндөмдүү сенсорлорун гана карманып турууну чечтим, анткени бул тез өлчөөгө мүмкүндүк берди жана менде болгон бардык түзмөктөрдө иштейт. Түздөн-түз ICs менен иштөөнүн ордуна, мен дизайнымды жөнөкөйлөтүү үчүн ошол эле пин-модулдары бар колдонууга даяр издедим. Мен температураны жана нымдуулукту өлчөөнү каалап баштагам, ошондуктан SI7021 модулун тандадым. Кийинчерээк мен басымды өлчөй турган сенсорго ээ болууну кааладым жана BME280ге негизделген сенсор модулдарын колдонууну чечтим. Кээ бир жерлерде мен жарыктын деңгээлин көзөмөлдөп тургум келди жана BH1750 модулу бул үчүн өзүнчө сенсор модулу катары идеалдуу болчу. Мен сенсор модулдарымды ebayдан сатып алдым жана булар мен алган модулдар:

  • BME280 (GY-BMP/E280), температураны, нымдуулукту жана басымды өлчөйт
  • SI7021 (GY-21), температураны жана нымдуулукту өлчөйт
  • BH1750 (GY-302), жарыкты өлчөйт

GY-BMP/E280 PCB модулдарынын эки стили бар. Экөө тең 1ден 4кө чейин бирдей пинди бөлүшөт. Бир модулда эки кошумча казык бар, Жиза жана SDO. Бул эки казык модулдун 4-пин версиясында алдын ала туташкан. SDO пиндин деңгээли I2C дарегин аныктайт (Ground = 0x76, VCC = 0x77). CSB пин I2C интерфейсин тандоо үчүн VCCге туташышы керек. Мен 4 пин модулун жакшы көрөм, анткени ал менин максатым боюнча колдонууга даяр.

Жалпысынан алганда, бул модулдарды колдонуу абдан ыңгайлуу, анткени аларда байланыш линиялары үчүн орнотулган каршылыгы бар жана бардыгы 3.3Vда иштейт, ошондуктан ESP8266 негизиндеги такталарга шайкеш келет. Көңүл буруңуз, бул IC сенсорлорундагы казыктар жалпысынан 5В чыдамдуу эмес, ошондуктан аларды Arduino Uno сыяктуу нерселер менен түздөн -түз байланыштыруу аларга биротоло зыян келтириши мүмкүн.

3 -кадам: сенсор станциялары

Сенсор станциялары
Сенсор станциялары

Жогоруда айтылгандай, сенсор станциялары ESP-Now байланыш протоколун колдонгон Espressif түзмөктөрү болмок. Мурунку долбоорлордон жана эксперименттерден баштап, менде алгачкы тесттеримди жүргүзүү жана аларды акыркы дизайнга киргизүү үчүн жеткиликтүү болгон ар кандай аппараттар бар болчу. Менин колумда төмөнкү аппараттар болгон:

  • эки ESP-01 модулу
  • эки Wemos D1 мини өнүктүрүү тактасы
  • бир Lolin ESP8266 өнүктүрүү такталары
  • бир ESP12E сериялык WIFI комплект тактасы
  • бир GOOUUU ESP32 тактасы (38 пин иштеп чыгуу тактасы)

Менде ошондой эле Wemos D1 R2 иштеп чыгуу тактасы бар болчу, бирок аны менен терең уйкудан ойгонууга жол бербеген көйгөйлөр бар болчу жана дарбазанын түзмөгү катары ал бузулуп, кайра туура иштебей калат. Мен аны кийинчерээк оңдоп койдум, ал Гараждын эшигин ачуу долбоорунун бир бөлүгү болуп калды. "Терең уйку" иштеши үчүн, ESP8266нын RST пини GPIO16 пинине туташтырылышы керек, андыктан уйку таймери аппаратты ойгото алат. Идеалында, бул байланыш Schottky диодунун жардамы менен жасалышы керек (катод GPIO16га чейин), андыктан программалоо учурунда USB-TLL туташуусу аркылуу кол менен калыбына келтирүү дагы эле иштейт. Бирок, төмөн баадагы (300-иш Ом) резистор же ал тургай түз зым байланышы дагы ийгиликтүү болушу мүмкүн.

ESP-01 модулдары GPIO16 төөнөгүчүнө оңой жетүүгө мүмкүндүк бербейт жана ICге түз туташышы керек. Бул жөнөкөй иш эмес жана муну баарына сунуштабайт элем. ESP12E сериялык WIFI комплект тактасы бир аз жаңылык болчу жана менин максатыма пайдалуу болушу үчүн бир топ өзгөртүүлөрдү талап кылды. Колдонууга эң оңой такталар Wemos D1 мини типтеги такталар жана Lolin тактасы болгон. ESP32 түзмөктөрү терең уйкунун иштеши үчүн эч кандай өзгөртүүлөрдү талап кылбайт. Андреас Шписстин бул боюнча жакшы көрсөтмөсү бар.

4-кадам: ESP-01 сенсордук станциясы

ESP-01 сенсор станциясы
ESP-01 сенсор станциясы
ESP-01 сенсор станциясы
ESP-01 сенсор станциясы
ESP-01 сенсор станциясы
ESP-01 сенсор станциясы

Бардык сенсордук станцияларда сенсор модулдары чаңдын көлөмүн азайтуу үчүн тигинен орнотулат. Баары корпуста эмес жана мен аларды корпустарга орното албайм. Мунун себеби, түзмөктөр жетишерлик желдетилбегенде жылыйт жана температуранын жана нымдуулуктун көрсөткүчтөрүнө таасир этиши мүмкүн.

ESP-01 такталары абдан чакан жана алар менен иштөө үчүн санариптик IO казыктары аз, бирок бул I2C интерфейси үчүн жетиштүү. Тактайлар "терең уйкунун" иштешине мүмкүнчүлүк берүү үчүн татаал өзгөртүүнү талап кылат. Көрсөтүлгөн сүрөттө зым бурчтук пинден (GPIO16) башындагы RST пинине чейин ширетилген. Мен колдонгон зым диаметри 0.1мм изоляцияланган "ремонт" зымы. Изоляциялоочу каптоо жылытылганда эрип кетет, ошондуктан аны ПХБдагы издерди ж.б. оңдоо үчүн ширетсе болот жана зым башка компоненттер менен байланышкан шорты түзүүдөн кабатыр болбоңуз. Анын өлчөмү иштөөнү кыйындатат жана мен бул зымды (хоббист/штамп коллекционерлеринин стили) микроскоптун астына коштум. Оң жактагы баштыкта 0,1 дюймдук (2,54мм) аралык бар экенин эстен чыгарбаңыз. Бул жерге Schottky диодун орнотуу оңойго турган жок, ошондуктан мен жөн эле зымды сынап көрүүнү чечтим жана эки блок тең иштеп жатат эч кандай көйгөйсүз бир ай.

Модулдар мен түзгөн эки прототип тактасына орнотулган. Бири (#1) - бул I2C модулдарын орнотууга жана сыноого мүмкүндүк берген программалоочу такта, экинчиси (#2) I2C түзмөктөрү үчүн иштеп чыгуу/сыноо тактасы. Биринчи такта үчүн мен эски USB эркек туташтыргычын жана кичинекей ПХБны түз эле USB дубал адаптеринен түзмөктү иштетүү үчүн коштум. Башка бирдиктин кадимки DC уячасы бар, ал бурама терминалдын башына туура келет жана дубал адаптери аркылуу иштейт.

Схема алардын кантип туташканын жана программисттин кантип иштээрин көрсөтөт. Менде башка ESP-01 модулдары жок, ошондуктан менде программистке дароо муктаждык болгон жок. Келечекте мен алар үчүн ПХБ жасайм. Бул такталардын экөөндө тең SI7021 сенсор модулу орнотулган, анткени мен ал жерлерде басымдын өлчөнүшүнө анча кызыккан эмесмин.

5 -кадам: ESP 12E Serial WIFI Kit Sensor Station

ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station
ESP 12E Serial WIFI Kit Sensor Station

ESP12E Serial WIFI Kit тактасы бул түзмөк менен эмне кылса болорун көрсөтүү үчүн иштелип чыккан эмес. Мен аны ESP8266 программалоо жөнүндө бир аз билүү үчүн көптөн бери сатып алдым жана акыры аны жаңы колдонууну чечтим. Мен демонстрация үчүн орнотулган бардык светодиоддорду алып салдым жана USB программалоо башын, ошондой эле мен колдонгон модулдарга ылайыктуу I2C башын коштум. Анын аналогдук кирүү пинине туташкан CdS фото резистору болгон жана мен аны ошол жерде калтырууну чечтим. Бул бөлүк менин гараж цехимди көзөмөлдөп турмакчы жана фотосенсор сенсорлор жарык кокусунан күйүп калганын мага кабарлоо үчүн жетиштүү болгон. Жарыкты өлчөө үчүн мен көрсөткүчтү пайызга чыгаруу үчүн көрсөткүчтөрдү нормалдаштырдым жана түнкүсүн "5" тен жогору болгон нерселер жарык күйүп же үйдүн эшиги туура жабылбаганын билдирет. RST жана GPIO16 төөнөгүчтөрү ПКБда так жазылган жана аларды туташтырган Schottky диод ПХБнын астына орнотулган. Бул түздөн-түз USB дубал кубаттагычына туташтырылган USB сериялык такта аркылуу иштейт. Менде бул USB-сериялык такталардын кошумча элементтери бар жана азырынча булардын кереги жок.

Мен бул такта үчүн схема жасаган жокмун жана жалпысынан ушул максатта колдонуу үчүн бирин сатып алууну сунуш кылбайм. Wemos D1 Mini такталары алда канча ылайыктуу жана кийинки талкууланат. Эгерде сизде булардын бири болсо жана кеңешке муктаж болсоңуз, мен жардам берүүгө даярмын.

6 -кадам: D1 Mini Sensor Stations

D1 Mini сенсор станциялары
D1 Mini сенсор станциялары
D1 Mini сенсор станциялары
D1 Mini сенсор станциялары
D1 Mini сенсор станциялары
D1 Mini сенсор станциялары

ESP8266 иштеп чыгуу такталарынын Wemos D1 Mini түрү менин колдонгон артыкчылыктарым, эгерде мен муну жасашым керек болсо, мен муну жөн эле колдонмокмун. Алардын жеткиликтүү IO төөнөгүчтөрү көп, Arduino IDE аркылуу түз программаланышы мүмкүн жана дагы эле жетишерлик компакт. D0 пин бул такталарда GPIO16 жана Schottky диодун туташтыруу оңой. Схемада менде бул такталар кандайча туташтырылгандыгы көрсөтүлгөн жана экөө тең BME2808 сенсор модулун колдонушат.

Эки тактанын бири сырткы аба ырайын көзөмөлдөө үчүн колдонулат жана күн батареясынан иштейт. 165mm x 135mm (6V, 3.5W) күн панели TP4056 Li-ion батарейкасын заряддоо модулуна туташкан (Күн батареялары менен иштөөчү батарея сенсор станциясынын орнотуу схемасын караңыз). Бул өзгөчө заряддоо модулу (03962A) батарейканы (пакетте) жок болсо, зарыл болгон батареяны коргоо схемасына ээ. Li-ion батарейкасы эски ноутбуктун батарейкасынан кайра иштетилген жана D1 Mini тактасын иштетүү үчүн дагы эле жетиштүү зарядга ээ болот, айрыкча терең уйку иштетилгенде. Такта аны кандайдыр бир деңгээлде коопсуз кылуу үчүн пластикалык корпуска салынган. Бирок, ички иштер сырткы температурага жана нымдуулукка дуушар болушу үчүн, карама -каршы тараптарда диаметри 25 мм болгон эки тешик бургуланган жана (ичинен) кара пейзаж кездемеси менен жабылган. Ткани нымдын киришине мүмкүндүк берүү үчүн иштелип чыккан, ошондуктан нымдуулукту өлчөөгө болот. Корпустун бир учунда кичинекей тешик бургуланган жана тунук пластикалык терезе орнотулган. Бул жерде BH1750 жарык сенсорунун модулу жайгаштырылган. Бүтүндөй агрегат ачык жерге көлөкөдө (түз күн эмес) жайгаштырылган, ал эми жарык сенсору ачыкка багытталган. Бул жерде биздин жаан -чачындуу/булуттуу кышкы аба ырайыбызда күн батареясынан 4 аптадан бери иштеп жатат.

7 -кадам: Gateway жана Webserver

Gateway жана Webserver
Gateway жана Webserver
Gateway жана Webserver
Gateway жана Webserver
Gateway жана Webserver
Gateway жана Webserver

A Lolin NodeMCU V3 (ESP8266) тактасы ESP-Now Gateway түзмөгү үчүн жана ESP32 (GOOUUU тактасы) Webserver үчүн колдонулган. Дээрлик бардык ESP8266 же ал тургай ESP32 тактасы шлюз түзмөгү катары кызмат кыла алмак, бул менде болгон башка такталарды колдонгондон кийин, мен калтырган такта болчу.

Мен ESP32 тактасын колдондум, анткени мага маалыматтарды чогултуу, сорттоо, сактоого сактоо жана веб -серверди иштетүү үчүн бир аз көбүрөөк эсептөө күчү бар такта керек. Келечекте ал өзүнүн сенсоруна жана жергиликтүү (OLED) дисплейге ээ болушу мүмкүн. Сактоо үчүн ыңгайлаштырылган адаптер менен SD карта колдонулган. Мен кадимки microSDди SD карта адаптерине колдондум жана контактыларга 7 пин (0.1 дюймдук) эркектин башын коштум. Мен бул GitHubдын кеңешине баш ийдим.

Прототипти орнотуу (Дюпонт зымдары менен) сенсор модулун камтыбайт, бирок мен иштеп чыккан ПКБ бирөөнө, ошондой эле кичинекей OLED дисплейине мүмкүнчүлүк берет. Мен бул ПХБны кантип иштеп чыкканым жөнүндө деталдар башка Инструкциянын бир бөлүгү.

8 -кадам: Программалык камсыздоо

Программалык камсыздоо
Программалык камсыздоо

ESP8266 (ESP-NOW) түзмөктөрү

Бардык түзмөктөр үчүн программа Arduino IDE (v1.87) аркылуу жазылган. Ар бир сенсордук станция негизинен бирдей кодду иштетет. Алар I2C байланыштары үчүн кайсы казыктар колдонулганына жана кайсы сенсор модулуна туташканы менен гана айырмаланат. Баарынан маанилүүсү, алар бирдей сенсорго ээ болгонуна карабастан, бирдей өлчөө маалымат пакетин ESP-Now Gateway станциясына жөнөтүшөт. Бул эмнени билдирет, кээ бир сенсордук станциялар реалдуу баалуулуктарды берүү үчүн сенсорлору жок болсо, басым жана жарык деңгээлин өлчөө үчүн жасалма баалуулуктарды толтурушат. Ар бир бекеттин жана шлюздун коду бул GitHubдагы Энтони Элдердин мисалдарынан ылайыкташтырылган.

Шлюз түзмөгүнүн коду SoftwareSerialди веб -сервер менен байланышуу үчүн колдонгон, анткени ESP8266 бир гана толук кандуу иштеген UART аппараттык жабдууларга ээ. 9600 максималдуу байдын ылдамдыгы менен иштөө абдан ишенимдүү көрүнөт жана бул салыштырмалуу кичинекей маалымат пакеттерин жөнөтүү үчүн жетиштүү. Шлюз түзмөгү жеке MAC дареги менен да программаланган. Мунун себеби, эгерде аны алмаштыруу керек болсо, анда сенсор станциялары жаңы кабыл алуучунун MAC дареги менен кайра программаланышы керек эмес.

ESP32 (Web Server)

Ар бир сенсор бекети өзүнүн маалымат пакетин веб -серверге жөнөтүүчү шлюз түзмөгүнө жөнөтөт. Маалымат пакети менен бирге ар бир станцияны аныктоо үчүн сенсор станциясынын MAC дареги жөнөтүлөт. Веб-серверде ар бир сенсордун жайгашкан жерин аныктоо үчүн "издөө" таблицасы бар жана ошого жараша маалыматтарды иреттейт. Өлчөөлөрдүн ортосундагы убакыт аралыгы 5 мүнөт плюс кокустук коэффициентке орнотулган, сенсорлор дарбазалык түзмөккө жөнөтүүдө бири -бири менен "кагылышып" кетпеши үчүн.

Үй WIFI роутери WIFIге туташканда веб -серверге туруктуу IP дарегин бөлүп берүү үчүн коюлган. Меники үчүн 192.168.1.111 болчу. Бул даректи каалаган браузерге терүү, колдонуучу үй тармагынын WIFI диапазонунда (жана ага туташуу) шартында аба ырайы станциясынын веб -серверине туташат. Колдонуучу веб -баракчага туташканда, веб -сервер өлчөө таблицасы менен жооп берет жана ар бир сенсордун акыркы өлчөө убактысын камтыйт. Ошентип, эгер сенсордук станция жооп бербей калса, анда столдон көрүүгө болот, эгерде окуу 5-6 мүнөттөн ашык болсо.

Маалыматтар SD картадагы жеке текст файлдарында сакталат жана аларды веб -баракчадан да жүктөөгө болот. Бул Excelге же маалыматтарды пландоо үчүн башка колдонмого импорттолушу мүмкүн

Android колдонмосу

Жергиликтүү аба ырайы маалыматын смартфондо көрүүнү жеңилдетүү үчүн мен Android Studio аркылуу салыштырмалуу Android тиркемесин түздүм. Бул менин GitHub баракчамда жеткиликтүү бул жерде. Ал веб -баракчаны серверден жүктөө үчүн веб -классты колдонот жана чектелген функционалдуулук сыяктуу. Бул маалымат файлдарын жүктөөгө жөндөмсүз жана мага баары бир телефонумдагылардын кереги жок болчу.

9 -кадам: Жыйынтыктар

Жыйынтыктар
Жыйынтыктар

Акыр -аягы, бул жерде менин үй метеостанциясынан алынган жыйынтыктар. Маалыматтар ноутбукка жүктөлүп, Matlabке жайгаштырылган. Мен Matlab сценарийлеримди тиркеп койдум, сиз аларды GNU Octaveде иштете аласыз. Сырткы сенсор дээрлик 4 жума бою күн батареясында иштейт жана бизде жылдын ушул мезгилинде күн сейрек кездешет. Азырынча баары жакшы иштеп жатат жана үй -бүлөдөгү ар бир адам азыр менден сурагандан көрө, аба ырайын өзү карап алат!

Сунушталууда: