Управление по wifi своими руками. Cистемы управления отоплением TECH Controllers

Этот обзор на новинку для умного дома - WiFi выключатель Sonoff POW с функцией измерения потребляемой мощности нагрузки.

Обзор с печальным концом, так как устройство не пережило тестирование. Виной тому моя небрежность при работе с электричеством, неисправный БП от ноутбука b 13-е число.

Может, были с судьбой нелады, нелады,
И со случаем плохи дела, дела,
А тугая струна на лады, на лады
С незаметным изъяном легла. ©

Сразу скажу, что в штатном режиме прибор отлично работает, но давайте обо всем по порядку

SONOFF - серия выключателей, розеток и других приборов категории «Интернета вещей» от . Их характеризует довольно низкая цена, использование «народного WiFi модуля» ESP8266 и работа в собственном сервисе, расположенном в облаке Amazon AWS global server.


Управляются эти устройства через мобильное приложение eWeLink


Устройства обладают разным функционалом


С устройствами ITEAD я их всегда характеризует качественная упаковка и сборка




Вполне узнаваемая коробка по


Сбоку в корпусе есть нефункциональное отверстие. В TH10/16 здесь разъем для подключения датчиков температуры и влажности.


Есть даже пломба с китайскими иероглифами.


Под крышечкой клеммная колодка для подключения питания и нагрузки


Разбирается прибор просто, нужно поддеть чем нибудь острым нижнюю крышку корпуса


Все разведено на одной плате. Области с высоким и низким напряжением отделены друг от друга фрезеровкой


Реле на 16А


Разъем для подключения USB/TTL конвертера


Детальки на плате можно не разглядывать. ITEAD традиционно публикует своих изделий

Схема Sonoff POW







На схеме видно ESP8266, и интересную микросхему для измерения напряжения, тока и мощности HLW8012.
Схема подключения нагрузки подразумевает заземление, которое у меня в квартире не предусмотрено.






Поэтому выводы «E» никуда не плдключаем


Для управления устанавливаем приложение eWeLink из Google Play.


Создаем в нем учетную запись. Затем нажимаем и удерживаем 5с на приборе кнопку и регистрируем устройство в облаке


После этого получаем на экране кнопку включения и текущее значение мощности нагрузки


Теперь можно подключить любую нагрузку, смотреть ее мощность и мерить потребление электроэнергии в КВт/ч
Можно посмотреть почасовой профиль мощности


Так же как и в Sonoff TH10/16 можно настроить график включений выключений.
Но вот самая главная беда всех устройств Sonoff - лишь пропадет интернет, устройства SONOFF становятся недоступными ни для просмотра, ни для управления. Никакого.
Лично мне работать с умным домом «в облаках» не представляется комфортным.
Поэтому мой путь - использование устройства со своей прошивкой, благо, железо - ESP8266 - понятное. Покопавшись в описании на с разобрался, как с нее снимать показания.
Частотный выход CF выдает мощность. CF1 - напряжение и ток в зависимости от состояния входа SEL. В данном устройстве CF подключен к GPIO14, СF1 - GPIO13, а SEL - GPIO05.


Осталось только померить частоту до 2000Гц на двух входах и правильно преобразовать показания.
Но вот проверить не получилось.
Припаял разъем для UART/TTL переходника. 3.3В переходника для питания ESP оказалось мало, поэтому решил оставить питание от сети.

БУМ!!!

- Интересно, что это так бумкнуло? Не мог же я один наделать столько шума. И где, интересно знать, мой воздушный шарик? И откуда, интересно, взялась эта тряпочка? ©



Как показал последующий анализ - у БП ноутбука где то пробивал ноль на минус 19В. Но вместо ноля в обычной розетке равновероятно будет фаза. А SONOFF тоже использует неизолированные ноль и фазу в схеме измерения сетевой мощности.
Результат - сгорел блок питания ноутбука, UART/TTL переходник и сам SONOFF POW.
Правильным было бы прошивать устройство, подавая 3.3В на пин разъема на плате.

Вскрытие показало - больной умер от вскрытия сгорел с кучей копоти резистор 1206 на 0 ом в цепи шунта измерения тока, высоковольтный транзистор и пара резисторов в схеме питания. ESP8266 на первый взгляд показался рабочим. И даже пытался подмигивать светодиодом. Но при этом грелся как утюг и потреблял 1А току. Явно у него что-то замкнуло от такого обращения.








Совершенно целый предохранитель в цепи нагрузки


А это БП, через который произошло замыкание



Ну что ж, может ITED вышлет мне еще один такой контроллер для тестирования, а пока я реализую возможности разработки собственной прошивки для модуля SONOFF DH10. Но это уже тема следующего обзора.

Пора подводить итоги.

Устройство очень интересно для удаленным управлением и мониторингом мощной нагрузки. Например, нагревателем. Был бы у меня в гараже WiFi, с удовольствием бы применил его там. Иногда требуется оставлять включенные устройства типа зарядки аккумулятора. Цена устройства довольно привлекательна и соизмерима со стоимостью деталей, которые там применяются: ESP8266 + блок питания + модуль измерения мощности + корпус + клеммная колодка.

Приложение eWeLink мне показалось малоинформативным. Ну что стоило вывести дополнительную информацию по напряжению и току нагрузки, раз они все равно снимаются. Иногда очень полезно видеть, как проседает напряжения при включении мощного потребителя.

Ну и главный лично для меня недостаток умного дома в таком облаке - полная неработоспособность при отсутствии интернета.

Но эти недостатки компенсируются возможность прошивки сторонним софтом. Очень интересен проект и для . Я же в следующем обзоре напишу, как разработать свою прошивку для Sonoff DH10.

А тестирование Sonoff POW окончилось его крэш тестом. Вот такая печалька

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Планирую купить +40 Добавить в избранное Обзор понравился +37 +83

Для беспроводного управления автоматикой вентиляции через мобильное приложение с любых мобильных устройств на базе iOS 5.0, Android 2.3.3 и выше. Wi-Fi Module представляет собой элемент программно-аппаратного комплекса Electrotest Wireless Control (EWC).

Режимы управления климатом со смартфона

Wi-Fi Module позволяет реализовать управление климатом со смартфона или планшета тремя способами:

  1. Точка доступа. Этот режим подходит для местного управления в радиусе до 12 м и не требует наличия сети Wi-Fi. Обмен данными происходит непосредственно между мобильным устройством и шкафом автоматики.
  2. Клиент. Этот режим подходит для управления в пределах зоны действия сети Wi-Fi и требует наличия роутера.
  3. Клиент с VPN-соединением. Использование VPN (англ. Virtual Private Network - виртуальная частная сеть) позволяет управлять шкафом автоматики со смартфона или планшета из любой точки мира, где есть Интернет.

Характеристики WI-FI модуля

  • Управление климатом с любого мобильного устройства на базе iOS 5.0, Android 2.3.3 и выше с установленным приложением ElectrotestControl .
  • Длина линии до 200 м. Шкаф может быть установлен в подвале, а Wi-Fi-модуль в любом другом помещении.
  • Любое число объектов. Приложение может контролировать любое количество модулей автоматики, то есть индивидуально управлять вентиляцией в разных помещениях. Модули автоматики в радиусе действия приложения определяются автоматически и могут быть переименованы для удобства пользователя — «Котельная», «Холл», «Склад 1» и т.п. Переключение с одного помещения на другое осуществляется простым перелистыванием.
  • Одновременное подключение нескольких пользователей. Одним шкафом автоматики могут управлять несколько авторизованных пользователей — например, одновременно просматривать архив аварий, программировать таймер, менять уставки температуры и скорость вентиляторов.
  • Легкое подключение. Поддержка управления по Wi-Fi добавлена во все модули автоматики MASTERBOX RR и OPTIBOX M . Обладателям более ранних версий модулей автоматики будет достаточно обновить ПО установленных модулей при помощи компьютера и фирменного шнура программирования.
  • Параллельная работа. Модуль Wi-Fi может быть подключен к шкафу автоматики вместе с проводными пультами ДУ. Пользователь сам выбирает наиболее удобный способ управления в конкретный момент времени: панель самого шкафа, проводной пульт, мобильное приложение, SCADA-система. При управлении с одного устройства все остальные временно блокируются.

Монтаж и подключение

Wi-Fi модуль подключается к модулю автоматики по четырёхпроводной линии типа «витая пара». На физическом уровне связь осуществляется по интерфейсу RS 485, полудуплекс. Длина линии от пульта до модуля MASTERBOX RR — до 200 м. На программном уровне используется протокол Modbus RTU.

Обновление прошивки

  1. Убедитесь, что модуль готов к работе, по состоянию светодиода:
    • не горит — модуль выключен или перезагружается
    • мигает два раза в секунду — модуль не может подключиться к "шкафу"
    • мигает раз в секунду — модуль пытается подключиться к сети (в режиме "Клиент") или запустить точку доступа (в режиме "Точка доступа")
    • горит постоянно — готов к работе, модуль подключился к "шкафу" и подключился к сети в режиме "Клиент" или "Точка доступа"
  2. Подключитесь к сети Electrotest. Если модуль находится в режиме "Клиент" или забыт пароль от точки доступа — нажмите и удерживайте кнопку Reset на модуле, пока не погаснет светодиод, и дождитесь, когда модуль перезагрузится в режиме "Точка доступа" с именем сети Electrotest.
  3. Откройте приложение ElectrotestControl , зайдите в настройки. В настройках можно выбрать режим работы модуля "Точка доступа" или "Клиент" и при необходимости указать пароль для доступа к данному модулю. Если пароль не нужен, то оставьте поле пустым.
    Чтобы все изменения вступили в силу, нужно нажать "Отправить настройки wi-fi модулю", после чего модуль начнёт перезагружаться с новыми настройками.

Внимание!
После первого сохранения настроек в модуле, при последующем подключении к нему настройки WiFi-модуля в приложении отображатся уже не будут. Чтобы заново настроить модуль,нужно опять нажать на кнопку сброса, и далее пункт 1. Если не нажать "Отправить настройки wi-fi модулю", т.е. не задать первоначальные настройки модуля, то эти настройки сможет сделать любой пользователь, подключившийся к этому модулю.

Управление климатом через Интернет

Для реализации возможности управления вентиляцией через Интернет (веб-управление климатом) нужно всего лишь иметь статический IP-адрес и произвести дополнительные настройки роутера в домашней сети и мобильного устройства. Процедура настройки VPN у опытного пользователя занимает всего несколько минут.

Расширитель портов

Применение совместно со шкафом автоматики расширителя портов позволит одновременно подключать к шкафу Wi-Fi-модуль и включать шкаф в SCADA-систему.

Схемы подключения

Подключение WiFi-модуля аналогично подключению пульта ДУ.


Канал Science Vetal показал, как сделать машинку на управлении практически от любого андроид смартфона. При этом не будем использовать «Arduino», возьмем микроконтроллер от китайского производителя «Espressive» «esp 8266», штуковина представляет из себя «Arduino» плюс wi-fi модуль.
Все радиодетали и модули в этом китайском магазине .

Вы помните «Arduino uno», оно большое, а здесь маленькая такая штучка, в которой есть wi-fi, возможности «Arduino». К этому микроконтроллеру китайцы разработали такой shield. Он удобный: можно подключить 2 двигателя, или даже 4, при этом можно использовать 11 выводов. Так же возьмем 2 двигателя, 2 стандартных «Arduino» колеса.

Когда на «aliexpress» вводишь «Arduino» в поиск, открываются не только платы, но, сопутствующие товары. Интересные элементы, обязательно что-то интересное найдете, попробуйте.

Возьмём для питания 2 аккумулятора 18650, к ним бокс для 2-х акб, также возьмем 2 уголка, размеры около 5 дюймов, это не столь важно там плюс-минус полдюйма, дюйм. Дело в том, что конструкция может быть ваша, но представленная в ролике авторская удачна, проста.

Берем 2 уголка, при помощи винтов их необходимо соединить, чтобы сюда спокойно помещался shield. Сверлом, диаметр которого 3 мм, делаем 4 отверстия. Берем малюсенькие винты, зажимаем, соединяем эту конструкцию. Такая штуковина получается, прочности данного соединения для такой машинки, как делаем, предостаточно.

Сбоку для вала видео сверлим отверстие диаметром 8 мм, получается конструкция, но необходимо еще сделать 3 отверстия диаметром 3 мм: одно для этого выступа, для этих отверстий крепежных еще 2.

Берем, подставляем таким способом, закручиваем с помощью винтов. Один из идеальных случаев, машинка нравится, сюда нечего добавить, ее незачем переделывать. Делаем отверстия для крепления платы.

Ничего не меняем, кроме как тут, где стоит галочка, выбираем адрес к файлу, который будем заливать, затем выбираем нужный com port, нажимаем кнопочку start. Также под видео есть ссылка на программу, которую нужно установить на ваш любимый android.

Закрепил эту плату, вставляем микроконтроллер. Подключаем провода от двигателей, смотрим, если нижний будет «A-», то с этой стороны «B-» будет верхний. Настало время прикрепить колеса. Делается это легко, так как колёса двигателей – это комплект. В этом месте сверлим отверстие диаметром 4 мм, вставляем винт. Делаем такую нехитрую операцию, регулируем высоту, даже еще ниже можно, что-то получился винт, который сильно торчит. Это лишнее. Это получается, устройство дороже на копеечки, что нам, в общем-то, не нужно, как-то оно выглядит коряво.

Так посмотрим, как получается устройство, которое будет управляться андроидом на расстоянии через wifi. Конечно, получше штука. Отсек для аккумуляторов прикрепим термоклеем, машинка получается.

Вставляем аккумуляторы, необходимо быть внимательным, так как бывает часто так, что все вроде бы правильно собрал, вставил аккумуляторы, а устройство не работает. Оказывается, что эти черные пластиковые боксы. Они не дают акб встать на место.


Программа и скетч http://bbs.smartarduino.com/showthread.php?tid=2013
Приложение для управления https://play.google.com/store/apps/details?id=com.doit.carset


Продолжаю рассказывать про самые простые и доступные способы управления электрическими приборами через интернет с использованием облачных сервисов. В первую очередь такие устройства актуальны для владельцев загородных домов, чтобы иметь возможность дистанционно включить обогрев и не допустить вымораживания дома. Беспроводные вай-фай реле в формате DIY от компании ITEAD в первую очередь привлекательны своей ценой. Готовое к работе устройство предлагают фактически по себестоимости компонентов, которые в нём используются. Шутка ли, что самое простое реле стоит менее 5 долларов?

Ранее, я уже про компактные реле, которые позволяют дистанционно управлять нагрузкой. Сегодня же я покажу новые устройства. Во-первых, это устройство с двумя независимыми реле Sonoff Dual, а во-вторых, реле Sonoff TH, имеющее на борту ввод для внешнего датчика температуры/влажности. Такое реле позволяет не только получить возможность дистанционного наблюдения за температурой и влажностью, но и автоматизировать процесс поддержания этих параметров в заданном диапазоне.

Итак, давайте разбираться!


2. В первую очередь, реле обзавелись новым корпусом. По размерам они стали примерно в 2 раза больше, чем реле первого поколения. Появилась более внятная маркировка и более удобная кнопка для программирования и ручного управления.

3. Винтовые клеммы заменены на пружинные. Очень правильное решение, позволяющее надежно подключить нагрузку без риска сорвать резьбу на контактах. Sonoff TH выпускается в двух модификациях, с реле рассчитанным на нагрузку 10 или 16 ампер. То есть во втором случае через реле можно коммутировать нагрузку мощностью до 3600 ватт. Модификация с реле на 10 ампер стоит 7,5 долларов. С реле на 16 ампер - 8,6 долларов (столько же стоит двойное 10А реле Sonoff Dual).

4. Реле может работать самостоятельно, либо к нему можно подключить внешние датчики. На выбор предлагается температурный зонд DS18B20 (на фото по центру), стоимостью 3,5 долларов, либо температурно/влажностный сенсор AM2301 стоимостью 4,3 доллара.

5. Слева одиночное реле с разъемом для внешних датчиков. Справа - двойное реле, без разъема для внешних датчиков.

6. Устройство построено на базе хорошо известного чипа ESP8266. Вся слаботочная часть находится на нижней части платы. Слева можно видеть разъемы, позволяющие подключить USB-TTL адаптер. Те, кто не доверяет публичному облачному сервису всегда может залить модифицированную прошивку на устройство и настроить его под свои нужды. В интернете есть примеры, как это сделать.

7. Собираем простейшую схему, чтобы продемонстрировать работу устройства. В качестве нагрузки у нас небольшой светодиодный прожектор. Подключаем его к сети 220 вольт через реле Sonoff TH10. Чтобы иметь возможность дистанционного управления реле, вам необходимо произвести процедуру «спаривания» реле с вашей домашней wi-fi сетью, работающей в диапазоне 2,4 Ггц.

8. Настройка производится через фирменное приложение EWeLink на смартфоне, доступное как для iOs, так и для Android.

9. После первичной процедуры спаривания, вы получаете возможность управлять нагрузкой как вручную (с кнопки на корпусе реле), так и дистанционно (через приложение на смартфоне). Также можно настроить таймеры на включение и автоматизировать управление, указав рабочие диапазоны температуры и влажности.

10. Один из вариантов применения реле первой версии - управление бра рядом с кроватью в спальне. Единственный недостаток заключается в том, что с экстетической точки зрения лучше бы реле было сделано в корпусе обычного торшерного выключателя, т.к. в таком виде, как сейчас, нажимать маленькую кнопку на корпусе, для включения света не через приложение, совершенно неудобно. Наличие таймера позволяет запрограммировать включение/выключение света например на период вашего отпуска, чтобы создать имитацию того, что в квартире кто-то находится.

11. Вариантов для использования реле - огромное множество. В частности у меня есть желание наконец-то автоматизировать управление с помощью двойного реле Sonoff Dual (одно реле на опускание троса, другое - на подъем). Как сделаю, обязательно об этом напишу. Также я использую реле для дистанционного включения света, когда подъезжаю к загородному дому в темное время суток.

Применений достаточно много. Можно, например, сделать самодельный теплоаккумулятор из бака с водой, запрограммировав его на нагрев в ночное время, на дешевом тарифе. Можно сделать хранилище для картошки на балконе с подогревом или же дистанционное открытие ворот в гараже. Можно автоматизировать включение вентилятора в санузле при превышении заданного порога уровня влажности. В общем, всё зависит от вашей фантазии. Для программирования и дистанционного управления реле необходимо, чтобы они имели доступ в интернет. Если они предварительно запрограммированы на работу по таймеру, то они могут работать автономно. Заказывать реле лучше на официальном сайте компании, доставка в Россию стоит 6 долларов.

Все материалы про строительство загородного дома своими руками в хронологическом порядке можно посмотреть .

Начнем сначала.

Чип ESP 8266

Чип ESP8266 разработан специально для «интернета вещей». Существует два варианта использования этого чипа. Первый - в качестве моста UART-WIFI для подключения к микроконтроллеру и управления АТ-командами. Второй вариант - чип сам исполняет роль управляющего контроллера. По моим оценкам в среде любителей электроники чип чаще используется как управляющий контроллер.

Возможности чипа:

  • Поддержка 802.11 b/g/n
  • Встроенный 32-bit MCU с низким энергопотреблением
  • Встроенный 10-bit ADC
  • Встроенный стек TCP/IP
  • Встроенный усилитель ВЧ сигнала
  • Поддержка разнесения антенн
  • WiFi 2.4 GHz, поддержка WPA/WPA2
  • Поддержка STA/AP/STA+AP режимов
  • SDIO 2.0, (H) SPI, UART, I2C, I2S, IR Remote Control, PWM, GPIO
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4s guard interval
  • Выходная мощность +20 dBm в 802.11b режиме

Чип является высокоинтегрированным решением для работы с WiFi. Внутри чипа удалось разместить все, что нужно. Типовая минимально необходимая для работы обвязка микросхемы состоит всего из семи элементов.

Фотографии для сравнения количества компонентов аналогичных решений.

По одним данным всей этой прелестью управляет 32-разрядное процессорное ядро Xtensa LX106, по другим данным - Tensilica’s L106 Diamond. Под микроскопом выглядит чип как целый город из связанных элементов.

Одной из самых важных характеристик является энергопотребление. У ESP8266 оно просто поражает:

  • 215mA в режиме непрерывной передачи.
  • 1mA в режиме поддержания связи с точкой доступа
  • 10uA в режиме глубокого сна с работающими часами реального времени
  • 0,5uA в режиме Power OFF

Время необходимое на пробуждение и начало передачи пакета менее 2ms. Например, при измерении температуры каждые 100 секунд и подключении к точке доступа и передаче накопленных данных каждые 300 секунд (все остальное время чип спит) средний ток составит около 1mA. Это более трех месяцев работы от трех пальчиковых аккумуляторов емкостью 2600мА/ч.

О модулях ESP

В настоящее время наиболее популярными модулями на чипах ESP8266 являются ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP-11, ESP-12, ESP-12E. Они отличаются количеством разведенных пинов, наличием разъема для подключения внешней антенны, размерами.

Сейчас уже можно найти в продаже старшего брата ESP8266 - это модуль ESP-32. На Aliexpress пока всего у двух продавцов есть эти модули. Цена около 250 рублей против 110 рублей за ESP-12E. В новом модуле будет еще больше плюшек.

Основные возможности ESP-32. (нажмите для просмотра)

Wi-Fi
- 802.11 b/g/n/e/i
- 802.11 n (2.4 GHz), up to 150 Mbps
- 802.11 i security features: pre-authentication and TSN
- 802.11 e: Multiple queue management to fully utilize QoS traffic prioritization
- Wi-Fi Protected Access (WPA)/WPA2
- Wi-Fi Protected Setup (WPS)
- UMA compliant and certified
- Antenna diversity nd seection
- A-MPDU and A-MSDU aggregation
- WMM power s ve U-APSD
- Fragmentation and defragmentation
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management
- Infrastructure BSS Station mode/ Soft AP mode
- Automatic beacon monitoring / scanning
- SSL stacks with hardware accelerators

Bluetooth
- CMOS single-chip fully-integrated radio and baseband
- Bluetooth Piconet and Scatternet
- Bluetooth 4.2 (BR/EDR/BLE)
- Adaptive Frequency Hopping(AFH)
- SMP
- Class-1, class-2 and class-3 transmitter without exter al power amplifier
- +10 dBm tra smitting power
- NZIF receiver with -90 dBm sensitivity
- Up-to 4 Mbps high speed UART HCI
- SDIO / SPI HCI
- CVSD and SBC
- Low power consumption
- Minimum external component

CPU and Memory
- Xtensa® Dual-Core 32-bit LX6 micr pr cess rs, up to 400MIPS
- 128 KB ROM
- QSPI Flash/SRAM, up to 4 x 16 MB
- Power supply: 2.5V to 3.6V
- 416 KB SRAM

Clocks and Timers
- 2 MHz to 40 MHz crystal oscillator
- Internal 8 MHz oscillator with calibration
- External 32 kHz oscillator for RTC with calibration
- Internal RC oscillator with calibration
- Two timer groups including 3 x 64-bit timers and 1 x watchdog in each group
- RTC timer with sub-second accuracy
- RTC watchdog

Advanced Peripheral Interfaces
- 12-bit SAR ADC up to 16 channels
- 2 x 10-bit D/A converters
- 10 x touch sensors
- Temperature sensor (-40 +125°C)
- 4 x SPI
- 2 x I2S
- 2 x I2C
- 2 x UART
- 1 host (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Ethernet MAC interface with dedicated DMA and IEEE 1588 support
- CAN 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM up to 16 channes

Security
- IEEE 802.11 standard security features all supported, including WFA, WPA/ WPA2 and WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, up to 768-bit for customers
- Cryptographc hardware acceleration:
- AES 128/192/256
- HASH (SHA-2) library
- RSA
- Radom Number Generator

Особенно интересна заявленная поддержка CAN-шины. Скоро управлять системами автомобиля и проводить диагностику можно будет по WiFi прямо с мобильного устройства.

Но вернемся к ESP-12E. На базе этого модуля построена платформа NodeMCU.

О платформе

Платформа использует возможности ESP-12 модуля, собственного микроконтроллера не имеет. Китайцы производят много клонов с разными конвертерами интерфейсов, и сами платформы имеют разные размеры.

По умолчанию в платформу загружена прошивка NodeMCU с поддержкой интерпретатора скриптового языка LUA. Скрипты задают поведение платы.

Я пишу и заливаю программы с помощью Arduino IDE. Для работы с платформой необходимо установить библиотеки. С библиотеками идет большое количество примеров программ.

Установка библиотек в среду Arduino IDE для работы с NodeMCU .

Для установки библиотек необходимо зайти в настройки Arduino IDE и в поле «Additional board» ввести адрес http://arduino.esp8266.com/package_esp8266com_index.json

Пролистываете список вниз и находите ESP8266 by ESP8266 Community, и устанавливаете библиотеки.

Закройте «Boards Manager». Идите в «Инструменты» и выберите плату NodeMCU в соответствии с вашей версией.

Чтобы понять какой модуль у вас установлен и какую версию выбрать, посмотрите на модуль. Если контакты на нем расположены с трех сторон - это ESP-12E, если только с двух - это ESP-12.

Назначение выводов платформы NodeMCU

Функции, поддерживаемые библиотеками для Arduino IDE .

Полное описание можно почитать здесь https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru причем на русском языке. Я расскажу об основных функциях.

Управление GPIO осуществляется так же, как и у Arduino. pinMode, digitalRead, digitalWrite, analogWrite функционируют как обычно. analogRead(A0) читает значение АЦП с аналогового входа А0 соответственно. analogWrite включает программный ШИМ. Частота ШИМ порядка 1кГц. Диапазон ШИМ от 0 до 1023, у Arduino, как мы помним, до 255. Прерывания также поддерживаются на любом GPIO, кроме GPIO16. Функции millis() и micros() возвращают миллисекунды и микросекунды, прошедшие со старта модуля. Функция delay() у NodeMCU работает по-другому нежели у Arduino. Здесь применение delay приветствуется и в больших программах даже необходимо. Когда модуль поддерживает WiFi соединение, ему приходится выполнять множество фоновых задач, кроме вашего скетча. WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop() или во время выполнения delay(...). Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать delay(...) для сохранения нормальной работоспособности стека WiFi. А вот delayMicroseconds() блокирует выполнение других задач и не рекомендуется для задержек более 20 миллисекунд. Serial использует аппаратный UART0, работающий на PIO1(TX) и GPIO3(RX).

Программа для управления четырьмя реле с мобильного приложения

После того, как библиотеки установлены, к платформе подключаем блок из 4 реле к пинам D1, D2, D3, D4, что соответствует GPIO 5, 4, 0, 2 соответственно. Затем подключаем питание к платформе и к блоку реле. У имеющегося у меня блока реле есть одна особенность. Для включения реле необходимо подтянуть пин к земле. То есть логический 0 включает реле, а 1 выключает.

Я рассмотрю три варианта программы управления блоком реле.

Первая программа использует популярную библиотеку aRest https://github.com/marcoschwartz/aREST

Это API handler библиотека, позволяет управлять GPIO через http-запросы вида http://192.168.0.10/digital/6/1 ее возможности: устанавливать GPIO в Digital или Analog (ШИМ), устанавливать 0 или 1 на пин в режиме Digital, возвращать переменные и читать состояние пинов.

Программу я откомпилировал и загрузил из примеров, идущих вместе с библиотекой. С точки зрения использования - проще некуда.

В Setup’е устанавливается соединение с точкой доступа, о чем сообщается через COM порт. А loop выглядит вот так:

void loop() {

WiFiClient client = server.available();

if (!client) {

return;

}

while(!client.available()){

delay(1);

}

rest.handle(client);

}

Все. Что там происходит не понятно. Работает, но фактически мы не программируем ничего. Просто запускаем программу, все остальное делает библиотека. Но интереснее научиться работать с GPIO «руками». Да, кстати, программа у меня зависала через неопределенное время. Иногда через 40 минут, иногда через 5-6 часов. Приходя домой после 8 часового рабочего дня, я всегда обнаруживал, что программа не работает. При этом роутер показывает, что клиент WiFi подключен и ему выдан IP адрес. Интерес у меня к библиотеке быстро пропал. На зависания aRest’а на русскоязычных форумах жалоб не встречал. Я уж грешил на NodeMCU или на нестабильное питание, но дальнейшие эксперименты доказали, что в моем случае виновата была программа. Скорее всего, у меня частный случай. Я не утверждаю, что библиотека не рабочая.

С aRest’ом разобрались.

Вторая программа написана самостоятельно, использует всего одну подключаемую библиотеку #include . Программа проста и наглядно показывает, как управлять пинами через веб-запросы. Данная программа умеет управлять только логическими состояниями на выводах D1-D4 и выводить информацию о времени работы программы в качестве тестового запроса. Если есть необходимость, можно дописать программу для остальных GPIO, «научить» ее выдавать ШИМ и т.д. К выводу D4 подключен синий светодиод, находящийся на модуле ESP-12E. После мучений с зависаниями aRest’а я временно отсоединил реле 4 от D4 и в своей программе дописал пару строк для мигания этим светодиодом. Пришел домой после работы смотрю - мигает, значит, работает. Проверил с мобильного - точно работает. Программа отработала 8 дней без зависаний, отработала бы и дольше, но NodeMCU у меня один, поэтому я продолжил его изучение и выполнение программы пришлось остановить.

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

Для управления блоком реле для этих двух программ было создано приложение на мобильный с ОС Android. Приложение очень простое, создавалось в App Inventor 2. Процесс создания приложения я опишу позже. Сначала третий вариант решения управления реле.

Третий вариант комплексный. Прошивка платформы и программа для Android от одного разработчика. Я использовал сервис Blynk. Он представляет собой облачный сервис для создания графических пультов управления и подходит для широкого спектра микрокомпьютеров и микроконтроллеров.

Для создания собственного проекта с управлением через Blynk нужно совсем немного: установить приложение (доступны версии для iOS и Android) или воспользоваться веб-формой. Тут потребуется регистрация в один шаг — ввод e-mail и пароля. Дело в том, что Blynk — облачное решение, и без регистрации контроль над железкой может получить любой пользователь.

Желающие могут установить сервер локально . В таком случае доступ в интернет не нужен.

Опишу сам процесс. Он состоит из двух частей.

Первая часть. Скачиваете Blynk с Google Play. Устанавливаете и запускаете программу

  1. Нажимаете «Create New Project»
  2. Вписываете название проекта и выбираете NodeMCU в поле «Hardware model». Auth Token учите наизусть или записываете на бумажку, отсылаете себе на почту. Жмете «Create».
  3. Жмете «+» в углу.
  4. Выбираете «Button». Как вы уже обратили внимание, каждый элемент, добавляемый в проект, стоит энергию. По умолчанию вам ее дается 2000. По мере добавления виджетов энергия будет расходоваться. Если вам нужно будет разместить больше виджетов, то энергию придется покупать за деньги.

  1. Вот и появилась наша кнопка. Нажмите на нее. Откроются ее настройки.
  2. Выберите название, пин, на который она будет действовать, режим кнопки или переключателя, название для состояний «включено» и «выключено». В приложении инвертировать сигнал с кнопки нельзя. Для моих реле: кнопка выключена - 0 на выходе, реле включено и наоборот. Прописывать правила работы логики можно установив сервер на локальном компьютере.
  3. Далее нажимаете треугольничек справа вверху. Программа переходит из режима редактирования в работу.
  4. Кнопки работают. Что примечательно поддерживается мультитач. Я пробовал одновременно нажимать 6 кнопок. Все работает (у телефона по описанию 10 точек нажатия).

Вторая часть - это прошивка NodeMCU. Скачиваете и устанавливаете библиотеки Blynk https://github.com/blynkkk/blynk-library . Запускаете Arduino IDE - Файл - Образцы - Blynk - BoardsAndShields - ESP8266_Standalone.

Вписываете в пример Auth Token с секретной бумажки почты. А также SSID вашей сети WiFi и пароль доступа к ней.

Все. Компилите и шьете. Все заработало с первого раза. При условии использования облачного сервиса в интернет должен иметь доступ как мобильный телефон, так и NodeMCU.

Создание приложения в App Inventor .

App Inventor - среда визуальной разработки android-приложений, требующая от пользователя минимальных знаний программирования. Первоначально разработана в Google Labs, после закрытия этой лаборатории была передана Массачусетскому технологическому институту. Для программирования в App Inventor используется графический интерфейс, визуальный язык программирования очень похожий на язык Scratch и StarLogo TNG. Разобраться с написанием приложения не так сложно. Полезной документации на русском я не нашел, а вот видео на ютубе очень много.

У сервиса две основных вкладки. Первая - это «Designer», здесь в визуальном редакторе размещаются компоненты. Скорость разработки интерфейса очень высока благодаря одной особенности сервиса App Inventor. На мобильный девайс необходимо установить приложение MIT App Inventor 2 Companion. Запустить его. На сайте выбрать Connect - AI Companion. Будет сгенерирован и выведен на экран QR код. В приложении надо нажать «scan QR code» и отсканировать код. Через пару секунд приложение появится на экране мобильного девайса. Новые элементы или любые измененные данные буквально через секунду становятся доступными для проверки на мобильном устройстве.

На экране размещаются: поле ввода для ввода IP адреса, кнопка установки адреса и отправки тестового запроса. Ниже располагается компонент «WebViewer», в нем будет отображаться присланная в ответ от NodeMCU страница. Ниже идут 4 группы по две кнопки, которые включают и выключают реле. Также нужен компонент «TinyDB», в нем будем хранить переменную для построения запроса. Также я для пробы добавил компонент распознавания голоса, чтобы можно было управлять реле голосовыми командами. Описывать алгоритм действий при распознавании текста не буду, так как пользоваться этой функцией крайне неудобно. Сначала нужно нажать на кнопку, потом выводится окошко от гугла с надписью «говорите», потом произносится команда. Причем после окончания произношения команды система распознавания ждет некоторое время, потом соображает, что все уже сказано. Затем идет распознавание речи и приходит текстовый ответ. Его надо сравнить с заранее заготовленными фразами. И только после этого команда будет выполнена. Проще тапнуть кнопку.

Вторая вкладка называется «Blocks». Здесь в виде блоков задается вся «программная» часть приложения.

Здесь из блоков составляется алгоритм работы программы. Основная часть алгоритма есть на скрине. Опишу, что здесь происходит.

  • When SET.Click - когда нажата кнопка «сет», вызвать функцию IP
  • Далее идет сама функция IP. Она сохраняет в TinyDB IP адрес из поля ввода, дописывая вначале «http://». Потом WebViewer.GoToUrl берет адрес из TinyDB, дописывает «/test» в конце и переходит по этому адресу. У меня получается «http://192.168.0.1/test». В WebViewer на экране загружается информация о том, что тест пройден, и выводится время непрерывной работы NodeMCU. Если IP адрес был введен неверно, то получаем сообщение о невозможности открыть страницу.
  • When ON1.Click (ON1 это название кнопки) вызывает функцию ON1.
  • Функция ON1 берет адрес из TinyDB, дописывает к нему «/D1/0», получается «http://192.168.0.1/D1/0», и посылает запрос. NodeMCU, получив данный запрос, соображает, что на пин D1 нужно установить 0. Выполняет и отсылает ответ «GPIO set OK», который мы и видим в WebViewer.
  • Следующая кнопка OFF1 проделывает то же самое, только в конце дописывает «/D1/1». Устанавливает логическую 1 на пин D1. Реле выключается.

Остальные кнопки действуют аналогично, меняя в запросе номера пинов и необходимое состояние.

После того, как все проверено и работает, нажимаете Build - App (save .apk to my computer). Идет компиляция и скачивание apk-файла приложения. Его необходимо установить на мобильное устройство, предварительно в настройках разрешив установку приложений из сторонних источников. Теперь приложение запускается самостоятельно. AI Companion уже не нужен и связь с интернетом тоже.

Вот так можно без особых усилий создать приложение для Android-устройства для управления нагрузкой по сети WiFi.

NodeMCU и мобильный телефон подключены к домашнему роутеру. Там, где нет точки доступа WiFi, NodeMCU может выполнять функции точки доступа для подключения мобильного устройства напрямую к ESP8266. Например, управление открытием гаражной двери и включением света в гараже.

P.S. Поднять точку доступа на платформе мне пока не удалось. Пример, идущий с библиотеками, не компилируется. Arduino IDE просто виснет в процессе компиляции. С этим мне еще предстоит разобраться.

P.P.S. Точку на платформа поднял, но адекватной работы пока не добился. Команды выполнялись или с задержкой в пару секунд либо не выполнялись совсем. Пока исследование модуля приостановлено. Занят обслуживанием авто.