- PVSM.RU - https://www.pvsm.ru -
Привет ГТ!
С появлением esp8266 пару лет назад, у меня возникла мысль создать на базе этого контроллера что-нибудь полезное, что будет нужным в доме, и чем будет удобно пользоваться всем. Возможность подключения по wi-fi, небольшие габариты, достаточное количество контактов ввода-вывода, легкость программирования сделали возможным собирать на базе этой платы множество устройств, и одно из них — система мониторинга погоды.
Изначальные требования к системе:
КДПВ:
Для начала решил отыскать существующие системы, которые можно было бы взять в качестве прототипа. Нашлась одна, подходящая по возможностям — wifi-iot.com [1], но она была отвергнута из-за закрытого кода и необходимости покупки лицензии для активации полного списка возможностей. Поэтому решил создать свой велосипед.
Для реализации надо было воплотить в жизнь железячную и программную части.
На Ебее были закуплены следующие компоненты:
На местном рынке был куплен корпус — Gianta G403 за 70р.
Итого — 1000р на компоненты (цены на момент публикации, по курсу — 15 вечнозеленых).
Для программной части была выбрана элементарная связка PHP+MySQL, развернутая на домашнем сервере на базе малинки. Преимущество перед облачными сервисами — при пропаже интернета система продолжает успешно работать и не накрывается медным тазом. Минус — необходимость написать серверную часть системы для хранения и обработки данных, но это было интересно сделать и самому.
Для программирования была выбрана среда Arduino IDE, с подключенным модулем для разработки на esp8266. Как это сделать — подробно описано тут — github.com/esp8266/Arduino [2]
Поначалу было желание попробовать писать все на lua, ипользуя прошивку nodemcu, но быстро отказался от этой идеи, т.к. во время заливки скетчей постоянно вываливались ошибки о недостатке памяти и т.п.
Для обмена данными между метеостанцией и малинкой был выбран формат данных JSON.
Схемы подключения сенсоров к модулю — были использованы стандартные, библиотеки можно найти здесь:
Так же понадобилась следующая библиотека — github.com/bblanchon/ArduinoJson [6]
Помимо вышеназванных к системе можно подклюючить и настроить полученные данных со следующих сенсоров:
Сейчас жду посылку с датчиком CO2 на базе MHT-Z19, чтобы мониторить наличие углекислого газа в воздухе. Как только придет — соберу модуль с ним, чтобы расширить перечень измеряемых параметров погоды в доме.
Итак, после получения всех посылок, множества итераций по отладке кода и сборок на макетке, пришло время собрать готовое устройство.
Схема устройства:
В корпусе дремелем было проделано отверстие для экрана:
После этого внутри был закреплен сам экран, бутерброд из платы с модулем, и датчики. Так же не была забыта кнопка сброса :)
В торцевых пластинах корпуса были проделаны отверстия для вентиляции сенсоров, и для разъема питания. После подключения — информация на экране:
В прошивке модуля реализовано удаленное управление — поднят веб-сервер, используя который можно произвести начальную настройку (указать используемую wifi-сеть, указать используемые датчики, настроить модуль реального времени, посмотреть данные с подключенных сенсоров, перезагрузить модуль). Когда писал странички, уделил внимание тому, что настройки может производиться с мобильного — поэтому Привет, адаптивный дизайн! :)
Никаких внешних зависимостей встроенные странички не имеют, все стили и скрипты — хранятся в памяти модулей.
Для просмотра списка подключенных модулей, удобного просмотра получаемых данных, просмотра графиков — был написан небольшой сайтик, развернутый на малинке.
Что планируется реализовать еще:
Исходный код проекта — доступен здесь: github.com/aproschenko-dev/MeteoEsp [10]
Буду раз любой конструктивной критике и комментариям.
Автор: alexpp
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/128602
Ссылки в тексте:
[1] wifi-iot.com: http://wifi-iot.com/
[2] github.com/esp8266/Arduino: https://github.com/esp8266/Arduino
[3] learn.adafruit.com/dht: https://learn.adafruit.com/dht
[4] github.com/iot-playground/Arduino/tree/master/external_libraries/SFE_BMP180: https://github.com/iot-playground/Arduino/tree/master/external_libraries/SFE_BMP180
[5] github.com/gnulabis/UTFT-ESP8266: https://github.com/gnulabis/UTFT-ESP8266
[6] github.com/bblanchon/ArduinoJson: https://github.com/bblanchon/ArduinoJson
[7] github.com/kmaximv/BH1750: https://github.com/kmaximv/BH1750
[8] learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/overview: https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/overview
[9] github.com/enjoyneering/HTU21D: https://github.com/enjoyneering/HTU21D
[10] github.com/aproschenko-dev/MeteoEsp: https://github.com/aproschenko-dev/MeteoEsp
[11] Источник: https://geektimes.ru/post/276878/
Нажмите здесь для печати.