Доброго времени суток! В данной статье хочу рассказать о реализации устройств на модулях ESP. Тема похожих девайсов уже раскрыта в интернете, но не перестает быть актуальной.
Идея
Давно думал о реализации некой системы индикации и управления в квартире, но никак не мог найти применения, имеющихся в продаже датчиков, конкретно для себя. Первое что смущало – это наличие некого сервера (отдельной железки), который собирает данные, обрабатывает и выкидывает куда-либо для просмотра. Хотелось бы иметь наращиваемую систему независимых устройств, желательно работающих с одним приложением, оптимально, если приложение будет готовым, что казалось практически невозможным (забегая вперед скажу, что такое приложение есть и оно довольно гибко может настраиваться под наши задачи). И конечно же хотелось сделать линейку своих устройств.
Требования к системе
Это далеко не полный список «хотелок», но это основные.
Поиск решения
Решение для создания системы пришло несколько позже. Сначала было разработано первое устройство, о котором я напишу в данной статье.
Аппаратная часть. ESP-12E и ESP32. Все описанные ниже проекты реализованы на первом модуле. На втором модуле есть несколько коммерческих проектов, которые в рамках данной статьи рассматриваться не будут.
О ESP-12E есть много статей и форумов в интернете, и повторяться про все плюсы и минусы я не буду. Все «затыки» происходили, в основном, из-за недостатка опыта в работе с модулем и со средой, в принципе.
Рис 1. Фото ESP-12E.
Программная часть. Прошивка для ESP писалась в среде «Arduino IDE». На стороне телефона/планшета работает приложение «Blynk». Это очень удобный конструктор для отображения данных. Приложение имеет облачный сервер, куда устройства (датчики) шлет данные, а Blynk их получает и позволяет отображать (www.blynk.cc). Таким же образом организована обратная связь с устройством. Что немаловажно, одно приложение может собирать и отображать данные с нескольких устройств.
Рис 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 года. Размеры корпуса устройства составляют всего 55x55x30мм. Для начала работы необходимо положить девайс в потенциально опасное место и он просигнализирует о наличии воды на полу. В приложении также отображается напряжение батареек, чтобы не забыть их вовремя заменить.
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 интерфейс (устройство представляется точкой доступа) и вбить настройки сети – после этого все готово к работе.
Рис 3. Фото платы с компонентами.
Хочу немного написать о форме и особенностях печатной платы. При тестировании обнаружилось что при длительной работе Wi-Fi модуль разогревает плату. Это не было бы критичным, если бы встроенный датчик температуры и влажности внутри корпуса. Пришлось разнести модуль ESP с питателем и датчики в разные стороны, а также сделать вырез в плате, куда подобно конструктору еще вставляется специальная перегородка. Тем самым не происходит смешивания воздуха внутри корпуса и измерения температуры и влажности получаются намного достовернее.
Рис 4. Фото перегородки на плате.
Корпус
Тут было много сомнений – хотелось иметь красивый металлический, обтекаемый корпус с матовой полоской индикации и т.д., но как всегда, на помощь пришел минимализм. Форм-фактор корпуса определил наличие олдскульных 5мм светодиодов, которые, как оказалось очень удобны. За счет того, что они выпуклые – это позволяет поставить устройство, например, на полку и индикация все равно будет хорошо видна. Сам корпус вырезали лазером из оргстекла 2мм.
Сделали несколько вариантов, разного цвета и с сочетанием цветов, а также из разных материалов. Смотрится очень прилично. Пробовал даже делать из текстолита сразу с заказом печатных плат. В данный момент продумываем вариант с изготовлением корпуса на производстве, но пока это только в планах. Модели также могу выложить.
Рис 5. Фото устройства.
Планы
Вообще, в планах сделать еще несколько устройств (помимо этих трех). Например, ESP32 имеет встроенный Ethernet (нужна только физика) и больше встроенных АЦП, что позволит обходиться без мультиплексора, как в случае с LifeOfFlowers, но об этом позже.
ЗЫ. Blynk имеет API сервера, которое легко разворачивается (проверяли) на ПК. Таким образом пропадает привязка к серверу.
ЗЗЫ. Чтобы было меньше негатива переименовал статью. Когда перейдем к управлению домом с помощью устройств, подкорректирую статью.
Спасибо за внимание!
ЗЗЗЫ: Как и обещал, вот ссылка на статью по софту geektimes.ru/post/122601
Идея
Давно думал о реализации некой системы индикации и управления в квартире, но никак не мог найти применения, имеющихся в продаже датчиков, конкретно для себя. Первое что смущало – это наличие некого сервера (отдельной железки), который собирает данные, обрабатывает и выкидывает куда-либо для просмотра. Хотелось бы иметь наращиваемую систему независимых устройств, желательно работающих с одним приложением, оптимально, если приложение будет готовым, что казалось практически невозможным (забегая вперед скажу, что такое приложение есть и оно довольно гибко может настраиваться под наши задачи). И конечно же хотелось сделать линейку своих устройств.
Требования к системе
- Отсутствие аппаратного сервера («Центральный блок»).
- Независимые датчики/элементы управления.
- Датчики должны быть беспроводными.
- При изменении состава и типов датчиков не должно быть зависимости (добавляя новое устройство не должно быть необходимости «пилить» что-то на других).
- По возможности датчики должны быть с батарейным питанием.
- При необходимости датчики должны иметь возможность настройки, но без копания в коде (оптимально web).
- Уведомления. Это отдельное требование. Все мы привыкли пользоваться сотовыми телефонами и получать уведомления мгновенно.
Это далеко не полный список «хотелок», но это основные.
Поиск решения
Решение для создания системы пришло несколько позже. Сначала было разработано первое устройство, о котором я напишу в данной статье.
Аппаратная часть. ESP-12E и ESP32. Все описанные ниже проекты реализованы на первом модуле. На втором модуле есть несколько коммерческих проектов, которые в рамках данной статьи рассматриваться не будут.
О ESP-12E есть много статей и форумов в интернете, и повторяться про все плюсы и минусы я не буду. Все «затыки» происходили, в основном, из-за недостатка опыта в работе с модулем и со средой, в принципе.
Рис 1. Фото ESP-12E.
Программная часть. Прошивка для ESP писалась в среде «Arduino IDE». На стороне телефона/планшета работает приложение «Blynk». Это очень удобный конструктор для отображения данных. Приложение имеет облачный сервер, куда устройства (датчики) шлет данные, а Blynk их получает и позволяет отображать (www.blynk.cc). Таким же образом организована обратная связь с устройством. Что немаловажно, одно приложение может собирать и отображать данные с нескольких устройств.
Рис 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 года. Размеры корпуса устройства составляют всего 55x55x30мм. Для начала работы необходимо положить девайс в потенциально опасное место и он просигнализирует о наличии воды на полу. В приложении также отображается напряжение батареек, чтобы не забыть их вовремя заменить.
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 интерфейс (устройство представляется точкой доступа) и вбить настройки сети – после этого все готово к работе.
Рис 3. Фото платы с компонентами.
Хочу немного написать о форме и особенностях печатной платы. При тестировании обнаружилось что при длительной работе Wi-Fi модуль разогревает плату. Это не было бы критичным, если бы встроенный датчик температуры и влажности внутри корпуса. Пришлось разнести модуль ESP с питателем и датчики в разные стороны, а также сделать вырез в плате, куда подобно конструктору еще вставляется специальная перегородка. Тем самым не происходит смешивания воздуха внутри корпуса и измерения температуры и влажности получаются намного достовернее.
Рис 4. Фото перегородки на плате.
Корпус
Тут было много сомнений – хотелось иметь красивый металлический, обтекаемый корпус с матовой полоской индикации и т.д., но как всегда, на помощь пришел минимализм. Форм-фактор корпуса определил наличие олдскульных 5мм светодиодов, которые, как оказалось очень удобны. За счет того, что они выпуклые – это позволяет поставить устройство, например, на полку и индикация все равно будет хорошо видна. Сам корпус вырезали лазером из оргстекла 2мм.
Сделали несколько вариантов, разного цвета и с сочетанием цветов, а также из разных материалов. Смотрится очень прилично. Пробовал даже делать из текстолита сразу с заказом печатных плат. В данный момент продумываем вариант с изготовлением корпуса на производстве, но пока это только в планах. Модели также могу выложить.
Рис 5. Фото устройства.
Планы
Вообще, в планах сделать еще несколько устройств (помимо этих трех). Например, ESP32 имеет встроенный Ethernet (нужна только физика) и больше встроенных АЦП, что позволит обходиться без мультиплексора, как в случае с LifeOfFlowers, но об этом позже.
ЗЫ. Blynk имеет API сервера, которое легко разворачивается (проверяли) на ПК. Таким образом пропадает привязка к серверу.
ЗЗЫ. Чтобы было меньше негатива переименовал статью. Когда перейдем к управлению домом с помощью устройств, подкорректирую статью.
Спасибо за внимание!
ЗЗЗЫ: Как и обещал, вот ссылка на статью по софту geektimes.ru/post/122601