Умный дом на ESP. Часть I

Доброго времени суток!

85aueqa-qfotfuc69mmwk7pbmnq.jpeg

В данной статье хочу рассказать о реализации устройств на модулях ESP. Тема похожих девайсов уже раскрыта в интернете, но не перестает быть актуальной.

Идея
Давно думал о реализации некой системы индикации и управления в квартире, но никак не мог найти применения, имеющихся в продаже датчиков, конкретно для себя. Первое что смущало — это наличие некого сервера (отдельной железки), который собирает данные, обрабатывает и выкидывает куда-либо для просмотра. Хотелось бы иметь наращиваемую систему независимых устройств, желательно работающих с одним приложением, оптимально, если приложение будет готовым, что казалось практически невозможным (забегая вперед скажу, что такое приложение есть и оно довольно гибко может настраиваться под наши задачи). И конечно же хотелось сделать линейку своих устройств.

Требования к системе
1. Отсутствие аппаратного сервера.
2. Независимые датчики/элементы управления.
3. Датчики должны быть беспроводными.
4. При изменении состава и типов датчиков не должно быть зависимости (добавляя новое устройство не должно быть необходимости «пилить» что-то на других).
5. По возможности датчики должны быть с батарейным питанием.
6. При необходимости датчики должны иметь возможность настройки, но без копания в коде (оптимально web).
7. Уведомления. Это отдельное требование. Все мы привыкли пользоваться сотовыми телефонами и получать уведомления мгновенно.

Это далеко не полный список «хотелок», но это основные.

Поиск решения
Решение для создания системы пришло несколько позже. Сначала было разработано первое устройство, о котором я напишу в данной статье.
Аппаратная часть. ESP-12E и ESP32. Все описанные ниже проекты реализованы на первом модуле. На втором модуле есть несколько коммерческих проектов, которые в рамках данной статьи рассматриваться не будут.
О ESP-12E есть много статей и форумов в интернете, и повторяться про все плюсы и минусы я не буду. Все «затыки» происходили, в основном, из-за недостатка опыта в работе с модулем и со средой, в принципе.

j6bbaaawco5ytnkte4mw5qtag2c.jpeg

Рис 1. Фото ESP-12E.

Программная часть. Прошивка для ESP писалась в среде «Arduino IDE». На стороне телефона/планшета работает приложение «Blynk». Это очень удобный конструктор для отображения данных. Приложение имеет облачный сервер, куда устройства (датчики) шлет данные, а Blynk их получает и позволяет отображать (www.blynk.cc). Таким же образом организована обратная связь с устройством. Что немаловажно, одно приложение может собирать и отображать данные с нескольких устройств.

jdzfyzmdxnywx1kkcxedbn6ru8q.png

iue5mivk9phy0yb2jro75v3rtze.jpeg
Рис 2. Скрины приложения.

Позже выложим статью по софту и ссылки на исходники. Я занимаюсь аппаратной частью. Программную реализацию осуществляет мой коллега.

Первое трио датчиков
1. OpenWindAir Датчик концентрации углекислого газа.
Построен на основе Wi-Fi модуля ESP-12E. Измерение происходит при помощи датчика CO2 MH-Z19. Он широко известен и позволяет быстро и точно делать измерения. Помимо этого, в устройстве есть встроенный датчик температуры и влажности воздуха AM2302. Также существует поддержка выносного датчика для использования, например, с системой «Народный мониторинг». Питается устройство по miniUSB от ПК или блока питания 5В. Реализована светодиодная и звуковая сигнализация (последнюю можно отключать из приложения, либо использовать по часам — чтобы ночью не просыпаться).

2. LifeOfFlowers Датчик влажности почвы для растений.
Построен на основе Wi-Fi модуля ESP-12E. Измерение влажности почвы происходит при помощи втыкаемого электрода в землю (часть платы устройства). Что важно — электрод, как и вся плата, залита лаком (тут пришлось исхитриться с измерениями), что будет препятствовать гниению контактов. Помимо влажности почвы устройство измеряет влажность и температуру окружающего воздуха (AM2302), освещенность и напряжение батареек. Да, LifeOfFlowers работает от 1 до 3 лет от двух элементов питания AAA (время работы зависит от частоты обновления данных).

3. WarningWater Датчик протечек.
Построен на основе Wi-Fi модуля ESP-12E. Измерение происходит при помощи электродов, входящих в состав корпуса IP-65. Устройство работает от двух элементов питания AAA (или АА), время работы также составляет от 1 года. Размеры корпуса устройства составляют всего 55×55x30 мм. Для начала работы необходимо положить девайс в потенциально опасное место и он просигнализирует о наличии воды на полу. В приложении также отображается напряжение батареек, чтобы не забыть их вовремя заменить.

OpenWindAir — аппаратная реализация
Схемотехнических изысков тут не встретить, все просто и по даташитам.
Если кому-то нужна схема, могу дать.
Состав устройства:
ESP8266 ESP-12E — собственно сам модуль, отвечающий за сбор, обработку и отправку данных. Питание 3,3В.
MH-Z19 — датчик концентрации углекислого газа. Работает по UART, измеряет до 5000ppm и питается от 5В.
AM2302 — измерение влажности и температуры. Так как датчик находится внутри корпуса пришлось ввести калибровочные константы, и данные измерения являются справочными. Для более точных измерений используется выносной датчик.
1–1462037–8 (IM03TS) — реле, для коммутации слаботочки, заложили на всякий случай, поиграться. В принципе штука интересная, но применения пока не придумали (выведено на тот же внешний разъем, что и внешний датчик влажности).
CP2102-GM — USB-UART. Да, решили сделать красивые логи для отображения инфы в реальном времени, получилось очень удобно, можно смотреть данные в терминале, смотреть порядок загрузки, отлаживаться.
LM1117MP-ADJ — LDO для 3,3В.
Также есть бипер, пара кнопок и три светодиода. Помимо порогов концентрации CO2 светодиоды осуществляют индикацию процесса загрузки устройства, подключения к точке доступа (либо работу в режиме offline) и процесс обновления.
В устройстве реализовано OTA обновление. Кидаем прошивку на любой сервак (предварительно прописав его), жмем кнопку, подаем питание и начинается процесс прошивки. После прошивки (или перезапуска) в течении заданного времени можно зайти в web интерфейс (устройство представляется точкой доступа) и вбить настройки сети — после этого все готово к работе.

twxrqqcpb_t9szkzqan7ch4qu4w.jpeg

Рис 3. Фото платы с компонентами.

Хочу немного написать о форме и особенностях печатной платы. При тестировании обнаружилось что при длительной работе Wi-Fi модуль разогревает плату. Это не было бы критичным, если бы встроенный датчик температуры и влажности внутри корпуса. Пришлось разнести модуль ESP с питателем и датчики в разные стороны, а также сделать вырез в плате, куда подобно конструктору еще вставляется специальная перегородка. Тем самым не происходит смешивания воздуха внутри корпуса и измерения температуры и влажности получаются намного достовернее.

gsnnze6gsm7vhckw58ug61l5lf0.jpeg

Рис 4. Фото перегородки на плате.

Корпус
Тут было много сомнений — хотелось иметь красивый металлический, обтекаемый корпус с матовой полоской индикации и т.д., но как всегда, на помощь пришел минимализм. Форм-фактор корпуса определил наличие олдскульных 5 мм светодиодов, которые, как оказалось очень удобны. За счет того, что они выпуклые — это позволяет поставить устройство, например, на полку и индикация все равно будет хорошо видна. Сам корпус вырезали лазером из оргстекла 2 мм. Сделали несколько вариантов, разного цвета и с сочетанием цветов, а также из разных материалов. Смотрится очень прилично. Пробовал даже делать из текстолита сразу с заказом печатных плат. В данный момент продумываем вариант с изготовлением корпуса на производстве, но пока это только в планах. Модели также могу выложить.

tcqdcro5aqh9f8jbiyhkhly3d_0.jpeg

Рис 5. Фото устройства.

Планы
Вообще, в планах сделать еще несколько устройств (помимо этих трех). Например, ESP32 имеет встроенный Ethernet (нужна только физика) и больше встроенных АЦП, что позволит обходиться без мультиплексора, как в случае с LifeOfFlowers, но об этом позже.

Спасибо за внимание!

© Geektimes