После публикации про интернет вещей, нам пришло письмо с идеей применения модуля ESP-8266:
«Есть у компании Мастер-Кит очень интересная вещь – моторизированный шаровый кран. Данная модификация питается от напряжения от 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 – поменять на 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 элементах, собирать в готовую конструкцию и устанавливать. Закончу – отпишусь!»
Видео тестирования на работоспособность:
«Есть у компании Мастер-Кит очень интересная вещь – моторизированный шаровый кран. Данная модификация питается от напряжения от 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 – поменять на 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 элементах, собирать в готовую конструкцию и устанавливать. Закончу – отпишусь!»
Видео тестирования на работоспособность:
029ah
Отличная демонстрация простоты создания управляемых устройств. И каким бы зверством не казалось исполнение скриптовых языков на МК — всё к этому идёт :) Цель достигнута — девайс функционирует, и затраты на создание невелики.