После публикации про Интернет вещей, Мастер Кит получил письмо с идеей применения модуля ESP-8266:
«Есть у компании Мастер Кит очень интересная вещь – моторизированный шаровый кран NT8047 DC5V. Устройство питается напряжением от 3 до 6 вольт и замечательно открывает и закрывает подачу воды в бытовых трубопроводах.
У меня дома стоит кран без моторчика, к сожалению, расположенный в жутко неудобном месте. Каждый раз, когда приходится перекрывать воду, приходится исполнять пластический этюд «человек-змея». Поэтому и решил установить один раз моторизованный кран и забыть про гимнастику. Но тянуть кучу проводов для управления краном в недавно отремонтированной ванной комнате не хотелось, поэтому стал думать о беспроводном решении. Внимание привлек модуль ESP-8266, на базе которого Мастер Кит выпускает двухканальное Wi-Fi реле MP3500.
Но мне не нужно управлять большими токами и напряжениями, а плату управления хотелось спрятать в корпус моторизированного крана, поэтому потребовалось минимизировать размеры устройства. Для отработки решил использовать макетную плату и выводные компоненты.
Модуль ESP8266 подключил шлейфом к плате, для программирования модуля использовал ставший уже стандартным переходник USB-UART на микросхеме PL2303. Драйверы для переходника без проблем нашлись в Интернете.
А вот для программирования ESP я решил использовать прошивку nodeMCU, которая позволяет управлять модулем, используя не набор AT-команд, а скриптовый язык высокого уровня LUA.
Для общения с краном по Wi-Fi было решено написать программу для смартфона на Андроид с помощью проекта Массачусетского технологического института Appinventor.
Итак, по порядку.
У моторизованного крана есть три вывода: один общий и два управляющих, подавая на которые положительные напряжения от 3 до 6 В, можно открывать или закрывать кран. Стало быть, двух выводов GPIO (входов/выходов общего назначения) модуля ESP вполне достаточно для управления. Схема «эксперимента» выглядит так:
Напряжение питания 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.
Как уже говорилось, программа создана с помощью проекта Appinventor. В этом проекте программирование происходит в визуальной среде, не требующей специальных знаний в области программирования android-устройств.
Конечно, программа получается несколько избыточной — объем получающегося кода куда больше, чем при традиционном программировании, но это окупается простотой и скоростью разработки. Среду нетрудно освоить, и можно самому писать вполне удобоваримые приложения. К тому же, память современных смартфонов не накладывает существенных ограничений на размер загружаемых в них программ.
Ниже приведен скриншот программы управления модулем со смартфона.
Здесь есть избыточные элементы, появившиеся в процессе освоения обмена данными, но основу составляют обработчики событий нажатий кнопок Button3 и Button4 – поменять на 5 секунд состояние, соответственно, вывода GPIO00 для открывания крана и вывода GPIO02 для закрывания. Например, при нажатии на Button3 на сервер, поднятый на модуле, посылается вызов GET http://ip_адрес/mode=cmd&sw0, вывод GPIO00 меняет свое состояние на 0; таймер Clock2 включается на 4000 мс, а по прошествии этого времени срабатывает событие таймера, посылающее ту же команду, которая меняет состояние вывода GPIO00 на 1. Кран открыт.
На следующем скриншоте приведена часть программы, которая отвечает за установку режима и параметров модуля ESP. Здесь, кроме режима Wi-Fi, можно поменять IP адрес, порт, маску сети, шлюз, SSID беспроводной сети и пароль. После пересылки параметров в модуль он автоматически перезагружается для работы с новыми параметрами.
Прошивка модуля, написанная на LUA, достаточно стандартным способом, описанным в документации, организует сервер, принимающий и обрабатывающий поступающие команды.
Итог: связка ESP8266 – водопроводный кран работает. Настоящий Интернет вещей получился. Буду делать плату на SMD элементах, собирать в готовую конструкцию и устанавливать. Закончу – отпишусь».
Видео тестирования на работоспособность: