Интернет Вещей (IoT) и водопровод

После публикации про интернет вещей, нам пришло письмо с идеей применения модуля ESP-8266: «Есть у компании Мастер-Кит очень интересная вещь — моторизированный шаровый кран. Данная модификация питается от напряжения от 3 до 6 вольт и замечательно открывает и закрывает подачу воды в бытовых трубопроводах.

f8fb8d6b43bb47cd9c9fe6eebe6f3bc4.jpg

У меня дома стоит кран без моторчика и, к сожалению, расположен в жутко неудобном месте. Каждый раз, когда приходится перекрывать воду, приходится исполнять пластический этюд «Человек-змея». Поэтому и решил установить один раз моторизованный кран и забыть про гимнастику. Но тянуть кучу проводов для управления краном в недавно отремонтированной ванной комнате не хотелось, поэтому стал думать о беспроводном решении.

Внимание привлек модуль ESP-8266, f1f47891d2e64e63835f8a46a2da9f11.jpg

на основе которого у Мастер-Кит уже есть двухканальное Wi-Fi реле MP3500.

Но мне не нужно управлять большими токами и напряжениями, а плату управления хотелось упрятать в корпус моторизированного крана, поэтому захотелось минимизировать размеры устройства. Для отработки решил использовать макетную плату и выводные компоненты.

295f860708b24ad98b8bffcc5913f082.JPG

317a639372e247ae924410b110622db6.JPG

Модуль ESP8266 подключил шлейфом к плате, для программирования модуля использовал ставший уже стандартным переходник USB-UART на микросхеме PL2303. Драйверы для переходника без проблем нашлись в интернете.

А вот для программирования ESP я решил использовать прошивку nodeMCU, которая позволяет управлять модулем, используя не набор AT-команд, а скриптовый язык высокого уровня LUA.

Для общения с краном по Wi-Fi было решено написать программу для смартфона на Андроид с помощью проекта Массачусетского технологического института Appinventor.Итак, по порядку.

У моторизованного крана есть три вывода: один общий и два управляющих, подавая на которые положительное напряжения от 3 до 6 вольт можно открыть или закрыть кран. Стало быть, двух выводов GPIO (входов/выходов общего назначения) модуля ESP вполне достаточно для управления. Схема «эксперимента» выглядит так:

8d874def50174f0d8fb978d172c95d90.jpg

Напряжение питания 3,3 В берется с преобразователя USB-UART, выводы RXD и TXD преобразователя подключены соответственно к выводам TXD и RXD модуля ESP для программирования. Резисторы в соответствии с рекомендациями производителя модуля ESP подтягивают выводы к напряжению питания, транзисторы служат для усиления тока управления краном, который достигает 60 мА во время открывания или закрывания. В другое время кран ток не потребляет.

Модуль ESP может работать в двух режимах — как точка доступа, когда смартфон подключается к нему напрямую, и в режиме инфраструктуры, подключаясь к существующему роутеру, который есть теперь почти в каждой квартире. Таким образом, во втором режиме смартфон подключается уже к роутеру. Режим модуля может быть задан в процессе настройки, которая тоже происходит с помощью смартфона.

На модуле поднят простенький web-сервер, который ждет поступления команды, сообщает об успешной приеме, обрабатывает ее, и исполняет, переключая соответствующий GPIO в 0 или 1 на время, необходимое для поворота крана.Как видно, при этом используются только внутренние возможности модуля ESP, и применять какие-либо дополнительные микроконтроллерные управляющие схемы не требуется. Кстати сказать, модули ESP существуют и с большим количеством GPIO, работающих в разных режимах, что может существенно расширить область его применения.

Прошивка модуля заливается с помощью утилиты ESPlorer — очень удобной IDE для модулей ESP, которая позволяет работать с модулем на LUA, Python«e и с помощью AT-команд — все в одном флаконе! Программа для смартфона служит для подачи управляющих команд и дистанционной настройки режимов Wi-Fi.

846364cf87f94607887202580a555fea.JPG

b13b42477ba9490b83f0f634e8c334e9.JPG

Как уже говорилось, она создана с помощью проекта Appinventor. В этом проекте программирование происходит в визуальной среде, не требующей специальных знаний в области программирования android-устройств.Конечно, программа получается несколько избыточной — объем получающегося кода куда больше, чем при традиционном программировании, но это окупается простотой и скоростью разработки. Среду нетрудно освоить, и можно самому писать вполне удобоваримые приложения. К тому же, память современных смартфонов не накладывает существенных ограничений на размер загружаемых в них программ.Ниже приведен скриншот программы управления модулем со смартфона (все картинки можно открыть в новом окне в оригинальном размере).

90ebb3cb31e24d91b0c2a36d204c0bf1.jpg

Здесь есть избыточные элементы, появившиеся в процессе освоения обмена данными, но основу составляют обработчики событий нажатий кнопок Button3 — поменять на 5 секунд состояние вывода GPIO00 для открывания крана, и Button4 — соответственно вывода GPIO02 для закрывания. Например, при нажатии на Button3 на сервер, поднятый на модуле, посылается вызов GET http://ip_адрес/mode=cmd&sw0, вывод GPIO00 меняет свое состояние на 0; таймер Clock2 включается на 4000 мс, а по прошествию этого времени срабатывает событие таймера, посылающее ту же команду, которая меняет состояние вывода GPIO00 на 1. Кран открыт.

72a3fae53483466fa18168b23c1c9418.jpg

На следующем скриншоте приведена часть программы, которая отвечает за установку режима и параметров модуля ESP. Здесь, кроме режима Wi-Fi, можно поменять IP адрес, порт, маску сети, шлюз, SSID беспроводной сети и пароль. После пересылки параметров на модуль он автоматически перезагружается для работы с новыми параметрами.

44474eac6adc44edb78442faca78d6ea.jpg

Прошивка модуля, написанная на LUA, достаточно стандартным способом, описанным в документации, организует сервер, принимающий и обрабатывающий поступающие команды.

Итог: связка ESP8266 — водопроводный кран работает. Настоящий интернет вещей получился. Буду делать плату на SMD элементах, собирать в готовую конструкцию и устанавливать. Закончу — отпишусь!»

Видео тестирования на работоспособность:[embedded content]

© Habrahabr.ru