Как решить задачу включения и отключения воды в труднодоступном месте с использованием актуальных беспроводных технологий интернета вещей? Не ради интереса, а ради практической пользы. Воспользуемся в качестве основы моторизированным шаровым краном NT8047 DC5V от Мастер-Кит, Wi-Fi модулем MP8266-01, добавим пару транзисторов и несколько резисторов.
Для тех, кому понравится идея, но не найдется времени сделать все самому – в Мастер Ките есть готовое решение: двухканальное Wi-Fi реле MP3500 с бесплатным приложением для Андроид. С помощью него можно управлять не только водопроводным краном!
Модуль ESP8266:
Но в данном случае нет необходимости управлять большими токами и напряжениями, а плату управления имеет смысл упрятать в корпус моторизированного крана. Для отработки было решено использовать макетную плату и выводные компоненты.
Модуль 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 – поменять на 5 секунд состояние вывода GPIO00 для открывания крана, и Button4 – соответственно вывода GPIO02 для закрывания. Например, при нажатии на Button3 на сервер, поднятый на модуле, посылается вызов GET (http://ip_адрес/mode=cmd&sw0), вывод GPIO00 меняет свое состояние на 0; таймер Clock2 включается на 4000 мс, а по прошествии этого времени срабатывает событие таймера, посылающее ту же команду, которая меняет состояние вывода GPIO00 на 1. Кран открыт.
На следующем скриншоте приведена часть программы, которая отвечает за установку режима и параметров модуля ESP. Здесь, кроме режима Wi-Fi, можно поменять IPадрес, порт, маску сети, шлюз, SSIDбеспроводной сети и пароль. После пересылки параметров на модуль он автоматически перезагружается для работы с новыми параметрами.
Прошивка модуля, написанная на LUA, достаточно стандартным способом, описанным в документации, организует сервер, принимающий и обрабатывающий поступающие команды.
Итог: связка ESP8266 – водопроводный кран работает. Настоящий интернет вещей получился. Можно делать плату на SMDэлементах, собирать все в готовую конструкцию и устанавливать.
А есть еще один готовый модуль на базе ESP8266 – WiFi-термостат с Андроид управлением MP3502