Управление с андроида по wifi. Системы дистанционного управления освещением

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

Вы помните «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

Многие не раз слышали про умную электронику, способную управлять освещением через пульт или смартфон. Чтобы наши читатели смогли узнать больше информации об этом оборудовании, мы подготовили статью с его подробным описанием. В статье вы сможете узнать о системах управления светом, которые можно собрать своими руками. Кроме систем умного освещения мы расскажем о люстрах с дистанционным управлением и об умных лампочках, управляемых через Wi–Fi. Также мы расскажем нашим читателям, что собой представляет протокол DMX 512 и где его применяют.

Системы управления светом

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

Эта система представляет собой набор компонентов, в которые входят такие устройства, как специальные пульты и силовые блоки радиокоммутаторы . На основе nooLite каждый может собрать систему освещения своими руками. Принцип управления этой системой показан на схеме ниже.


На схеме видно, что управление освещением производится с помощью пультов, которые передают радиосигнал к силовым блокам. Силовые блоки радиокоммутаторы в свою очередь при поступлении к ним команды с пульта отключают или включают свет светильника или лампы, а также регулируют уровень яркости. Сам силовой блок радиокоммутатор представляет собой небольшую пластиковую коробку, которая подключается с помощью двух проводов к сети 220 В и остальных двух проводов к самой лампочке или светильнику . Небольшой размер радиокоммутатора позволяет его крепить в любом месте квартиры или дома. Пятый же провод представляет собой антенну, на которую поступает радиосигнал с пульта .


Сам пульт представляет собой четырех кнопочный блок, который можно наклеить в любом месте в помещении . Например, таким местом может быть свободное место под выключателем.

В пульт встроен литий-ионный аккумулятор, который обеспечивает срок работы более одного года без подзарядки . На этом функционал системы nooLite не оканчивается. Сама система продается в виде комплектов, в которые кроме двух или трех пультов, а также двух или трех силовых блоков еще входят такие компоненты:

  • Ethernet-шлюз PR1132;
  • Датчик движения PM111;
  • Датчик влажности и температуры PT111.

Ethernet-шлюз PR1132 представляет собой устройство, которое можно подключить к беспроводному роутеру или ethernet коммутатору . Такое подключение позволяет осуществлять включение силовых блоков, а также датчиков движения и температуры с помощью смартфона и интернет браузера через сеть Wi-Fi. Кроме браузерного управления или управления через смартфон по сети Wi-Fi для Ethernet-шлюз PR1132 можно разрабатывать свои приложения, благодаря поддержке для него своего API. Например, благодаря «Гугловскому Speech API»‎ и API для шлюза можно организовать голосовое управление светом.

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

Китайские системы управления освещением

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


Если сравнивать эту систему с nooLite, то эта система будет намного проще.

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

Эта простейшая система годится лучше всего для загородного дома или дачи. Ее основное достоинство перед системой nooLite - это цена. Например, начальная цена за набор компонентов nooLite начинается с 225 долларов. Систему управления светом Jd211a1n5 можно приобрести за 25 долларов. Исходя из такого ценообразования, если вам не нужна продвинутая система управления светом, то Jd211a1n5 будет идеальным вариантом. Теперь вернемся к системе Jd211a1n5 и опишем ее характеристики:

  • Имеет 15 каналов;
  • Работает на дистанции 100 метров;
  • Батарея в пульте работает один год;
  • Блоки радиокоммутаторов подключаются к сети 80V-245V 50/60Hz;
  • Контроль светом с помощью алфавитных кнопок «A.B.C.D.E.F.G»;
  • Небольшой размер радиокоммутаторов 51 мм на 38 мм позволяет их крепить в разных местах.

Схема подключения реле Jd211a1n5 имеет такой вид.


На схеме видно, что мы можем подключить блок реле к сети 220 В параллельно с обычным переключателем света.

Место подключения лучше всего выбирать рядом с переключателем. Лучшим местом для блока будет сам переключатель.

Такое подключение системы делает систему Jd211a1n5 более универсальной.

Из рассмотренной главы становится ясно, что Jd211a1n5 может предоставить очень простое и недорогое дистанционное управление освещением в вашем доме или квартире, которое можно собрать своими руками.

Умные лампочки

Наверно, многие слышали про так называемые умные лампы . Основной особенностью таких лам является управление их параметрами через смартфон, подключенный к Wi-Fi сети . По сути, вы можете регулировать яркость этих ламп, включать и отключать их посредством программы вашего Android или iPhone телефона. Наиболее популярными умными лампами от именитых брендов являются:

  • LightFreq;
  • Nanoleaf Bloom;
  • BeON;
  • Vocca;
  • Philips Hue;
  • LIFX.

Теперь рассмотрим пример использования нашумевшей умной лампочки LIFX . Популярность эта лампочка приобрела, когда всего за шесть дней смогла набрать сумму более миллиона долларов на краудфандинговой площадке Kickstarter. Собрать такую внушительную сумму LIFX помогла ее простота подключения. Для этой лампочки не нужно дополнительных модулей , которые занимают дополнительное место в квартире. Чтобы заставить ее работать, достаточно вкрутить лампу в цоколь E27 светильника и включить переключатель для поиска сети Wi-Fi. После установки лампочки необходимо скачать официальную программу из магазина приложений для телефонов iPhone или Android. После установки программы необходимо найти подключенную лампу в сети Wi-Fi. В программе вы найдете четыре вкладки, которые позволяют управлять таким функционалом:

  • Colors - эта вкладка позволяет выставлять различные оттенки цветов, которых в этой лампе 16 миллионов ;
  • Whites - эта вкладка позволяет выставлять уровень яркости белого цвета, который мы используем в обычных лампах ;
  • Themes - множество предустановленных тем, которые активируют различные световые эффекты ;
  • Effects - это меню позволяет создавать свои собственные световые эффекты .

На сегодняшний день начальная цена на самую простую модификацию лампы LIFX составляет 30 долларов. Если вы будете приобретать комплекты от двух, трех или выше ламп, то вы сможете существенно сэкономить.

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

Управление с помощью DMX 512

В этой главе мы рассмотрим, что собой представляет протокол DMX 512 и для чего он нужен. Протокол DMX 512 специально создан для подключения от двух и больше световых устройств в единую систему . Сборка такой системы осуществляется с помощью специальных контроллеров DMX 512. На изображении ниже показана бюджетная модель контроллера DMX Chauvet Obey 3.


К контроллерам DMX 512 подключается разное световое оборудование, управление которым производится через него же. Чаще всего контроллеры DMX 512 используются в музыкальной индустрии. Например, контроллер DMX 512 просто незаменим в концертных залах, на дискотеках и на различных шоу-программах. К контроллеру DMX 512 можно подключить такое световое оборудование:

  • Светодиодный прожектор, позволяющий направлять световой луч в определенном направлении;
  • Групповые системы прожекторов, которые являются неотъемлемой частью концертных залов и дискотек;
  • Различные виды стробоскопов, используемые на вечеринках и дискотеках;
  • Световые комплексы, которые включают в свой состав от двух, трех или более светильников.

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

Благодаря бюджетным контроллерам DMX 512, сейчас у обычных людей есть возможность своими руками собрать свою систему управления светом на контроллере DMX 512. По сути, бюджетные контроллеры DMX 512 будут незаменимы для создания светового шоу для домашней дискотеки. Также эти контроллеры можно использовать для световых эффектов рождественского дома.

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


Цена такой люстры зависит от сложности самой люстры и ее системы управления. Принцип работы такой люстры основан на передачи радиосигнала с пульта на радиокоммутатор, который отключает или включает люстру, а также регулирует ее яркость. Если вы хотите существенно сэкономить на такой люстре, то советуем приобретать их в китайских интернет магазинах, например в www.aliexpress.com.

Кроме люстр еще можно встретить множество светодиодных светильников, которые также управляются посредством пульта и занимают меньше места. Ниже показан светильник Intelite SMT-005 63W 3000-6000K, который имеет большой функционал настройки освещения.


Подводим итог

В этой статье мы рассмотрели все основные методы дистанционного управления светом. Установив одно из устройств дистанционного управления светом, вы сможете еще на один шаг приблизиться к созданию умного дома, который вы создадите своими руками. Также такой тип освещения позволит его сделать удобным и сэкономит вам в будущем потребление электроэнергии.

Видео по теме

При создании бота ставились следующие задачи:

  • Управление ботом по беспроводной сети
  • Наличие онлайн камеры
  • Удобство программирования
Бортовой компьютер

Для бортового компьютера был выбрал двухъядерный андроидный миникомпьютер UG-802, который имелся под рукой. В качестве операционной системы - полноценный линукс дистрибутив, сборка Ubuntu от Linaro.

Для начала нужно было чтото сделать с проблемным встроенным wifi адаптером, который упорно не желал запускаться под пересобранным ядром. Кардинальным решением было выпаять его и установить второй USB хост коннектор, в который можно будет воткнуть нормальный usb wifi (или даже 3G модем). Сказано - сделано, плата встроенного wifi была отпаяна и вместо нее напаян второй хост.

Первая проверка внутреннего USB host-а:

Окончательный вид установленного USB host-а:


Колесная платформа

Когда-то я заказывал платформу Ardubot и колеса с моторами к ней, но руки до нее не доходили. Не долго думая, было решено ей воспользоваться. На нее была смонтирована плата преобразователя с 12 в 5 вольт, выдранная из специально купленной в магазине автомобильной зарядки (используемая в ней микросхема имеет более широкий диапазон входного напряжения). Литий-полимерный аккумулятор на 11.1В/1250мА уже имелся от разбитой, в прошлом, модели самолета. Плату Ardubot-а пришлось подвергнуть легкой модификации из-за особенностей платы управления (дорожка отрезана от D9 и запаяна на D7). Так же был установлен усб разъем, на который выведено только 5 вольтовое питание:


Сзади видны провода идущие от энкодеров колес:


Управление двигателями, светом

Изначально платформа Ardubot была расчитана на совместное использование с Arduino, почему бы этим не воспользоваться. Вместо Ардуино я взял OLIMEX PIC32-PINGUINO-MX220, совместимый по разъемам. Выяснилась неприятная мелочь - один из пинов управления мотором был использован для светодиода на плате PINGUINO. Все бы ничего, но этот светодиод мигал в режиме загрузки фирмвари, заодно проворачивая колесо. Поэтому пришлось перепаять дорожку, о чем было написано выше.

Для простоты отладки и универсальности, плата управления подключается через USB. Прошивка PINGUINO эмулирует CDC-ACM устройство, видимое для пользователя как последовательный порт /dev/ttyACM0. Отправляемые команды управления выглядят так:

Нумерация моторов: 0 - левый, 1 - правый.
Состояния: 0 - остановлен, 1 - вперед, -1 - назад.

Например, чтобы включить задний светодиод на платформе, достаточно из консоли отправить команды:
echo "LIGHT 1 1" > /dev/ttyACM0 echo "COMMIT" > /dev/ttyACM0

Чтобы поехать вперед:
echo "MOTOR 0 1" > /dev/ttyACM0 echo "MOTOR 1 1" > /dev/ttyACM0 echo "COMMIT" > /dev/ttyACM0

Камера и хаб

Один USB порт бортового (ботового) компьютера используется wifi адаптером, в другой плата управления платформой. Куда подключить камеру? Выход есть - использовать хаб. В одном из компьютерных магазинов была куплена одна из самых дешевых веб камер и USB хаб подозрительного вида.

Размещение электроники

В процессе поиска из чего слепить бота, была удачно найдена пластиковая коробочка-упаковка из под IPOD TOUCH, в которую идеально влазил UG802 и разобранный USB хаб. Для трех коннекторов хаба в боку был сделан вырез. В четвертый (внутренний) коннектор воткнулась камера (с предварительно укороченным кабелем). В крышке также был сделан вырез под разъем USB на UG802, который не давал ей закрыться:


Все это дело прикрутилось сверху над PINGUINO-MX220 - платой управления платформой:


Окончательная сборка и тестирование

Наступило время собрать все в одно целое:


Все проводки были воткнуты куда им положено - PINGUINO в хаб, UG802 питание в USB коннектор на Ардуботе:


Бортовой компьютер настроен для доступа по ssh, весь нужный инструментарий для работы (компилятор, библиотеки, mc) установлены из репозитория Linaro. Заходи, пиши, компилируй и отлаживай прямо на нем. Красота!

Для тестирования разработана консоль управления, которая показывает онлайн изображение с камеры бота и отправляет ему команды куда ехать, какие лампы включить-выключить. Софт бота принимает команды и отправляет онлайн видео на консоль управления. Текущий статус - глубокая бета. Однако пользоваться системой уже можно!

Видео демонстрация

Необязательно использовать спаркфановский ардубот, есть более дешевые и лучшие варианты.
UG802 можно также заменить дешевыми аналогами (MK802, CX-01), но нужно смотреть, чтобы были доступны исходники ядра, работающие на конкретном девайсе-клоне. Иначе установка полноценного линукса будет проблематична либо вообще невозможна.

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

Чип 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. Точку на платформа поднял, но адекватной работы пока не добился. Команды выполнялись или с задержкой в пару секунд либо не выполнялись совсем. Пока исследование модуля приостановлено. Занят обслуживанием авто.

Доброго времени суток всем участникам Сообщества!

WiFi управление автомобилем.

Вроде громкое название у темы, из названия кажется что я собираюсь управлять авто дистанционно по WiFi, но, всё гораздо проще =)
Хотя как посмотреть. Фактически это замена базовой проводки .
А если ещё точнее, то добавление новых функций без троссировки проводов по всему авто. :-/

В общем опять-таки публикация на правах идеи, опять идея "украдена", и совмещена с другими похожими:-/

В чём суть? Суть проста:
Во все двери (у меня их 5), ставим по исполнительной Ардуинке с целью экономии на большом проекте будут использоваться самые дешёвые комплектующие, т.е. в данном случае это будет Ардуино Мини про за 100 р.

Под торпедой, как я неоднократно заявлял, у меня будет стоять Мега, которая будет управлять почти всем:-/
Кроме того под торпеду планируется воткнуть исполнительную Ардуинку, дабы не синхронизировать исполнительную логику с управляющей.
Также ещё одна управляющая Ардуинка планируется в водительскую дверь.

/ Возможно, но не факт ещё одна исполнительная Ардуинка будет где то в районе аккумулятора + там же блок предов и реле, которые будут управлять самыми главными нагрузками - фарами, ПТФ и т.п. /

В чём всё-таки суть?)))
Итак. Суть проста (повторяюсь;))
В авто будут установлены куча Ардуин, во все двери исполнительные Ардуинки (Slave), под торпеду и в водительскую дверь - управляющие (Master).
Все Ардуинки между собой будут общаться по радиоканалу!

Вопрос: Зачем всё это? Обычно все тянут провода!
Ответ: Тянуть провода по всему автомобилю сложнее, это занимает кучу времени и места. При этом большинство проводов "сигнально-силовые".

Сигнально силовые кабеля можно разделить. На собственно сигнальные (слаботочные, тоненькие) и толстые силовые, на которых будет постоянно +12. :-/

И тут я задался вопросом: Сигнальные провода … зачем они?
Всё ведь можно сделать по-современному - сигналы сделать беспроводными!
Ну вот собственно и подошли мы к самой сути идеи - передаче всех сигналов в авто по WiFi! Штатная проводка в дверях будет переключена на силвую часть, т.е. будет подавать в двери постоянные +12. :-/
Как вариант часть проводов может подавать "дополнительные" +12 при включении зажигания.

Что планируется (какие функции) делать в дверях? Да что угодно, примерно так:
1. управление ЭСП, в т.ч. доводчики стёкол, автоматическое закрывание стёкол при постановке на охрану. / для этого надо всего 2 реле /
2. защита стёкол, "память" (автоматическое опускание стёкол при снятии с охраны) …
3. Всякого рода габариты (я считаю что двери при открытии должны светиться как космолёт, дабы всякие "дамы", объезжали их стороной) и подсветки (к сожалению грязи у нас хватает, а фонарных столбов - нет, Раша)
4. Всякого рода поворотники в зеркала, подогрев зеркал (тут ж-но реле), те же габы туда же и т.п.

В водительской двери скорее всего будет вторая "управляющая" Ардуинка, которая будет считывать команды с блока упарвления ЭСП, дверями, зеркалами, обычно находящегося у всех в водительской двери. Все команды будут передаваться "в эфир" (внутри авто), и исполняться исполнительными Ардуинками.

Вопрос: Что нам нужно для реализации? Проект вроде "серьёзный" и дорогой.
Ответ: кучка Ардуинок по 100р, модули WiFi по 50р. и релейные модули (пока вроде должно хватать по 4 канала). Это где то по 100-200р.

Вопрос: Не проще ли всё это проводами (пучками проводов)?
Ответ: Точно не проще, провода надо троссировать по всему авто, авто "постоянно" разбирать/собирать, проводить провода через гофры, втыкать их в различные разъёмы. Мне это уже порядком надоело.

Ну и главное, бюджет проекта
1. Ардуинки Миньки по 104р имха надо будет их с десяток - всего 1040 р.
Нанки 3.0 кучкой 10 штук - 1400 р

3. Релюхи / релейные модули - тут зависит от сильных нагрузок, таких как двигатели ЭСП, активаторы и т.д. Я пока планирую только по 2 реле на ЭСП во все двери (у меня вообще пока 2 только, но будет все 4).

4. Всякого рода транзисторы, резюки и т.д. :-/
Все цепи, не нуждающиеся в мощных токах (например, светодиодные поворотники) будут цепляться без реле, через транзисторы.

Как видим столь "грандиозный" по замыслу проект, укладывается в смешной бюджет в 2000 рублей! От силы 3000р. Что с текущим курсом доллара вообще смешные 50 баков!
Что мы сэкономим (экономическая выгода от проекта):
1. Экономим силы и время на троссировку проводов.
2. Экономия на проводах (рублей 20 метр, а их нужен километр) и разъёмах (от 100р колодка).

Резюмируя повествование: 2 вида Ардуинок, одни собирают сигналы, упаковывают ("шифруют") их, и расслылают по WiFi. Другие - исполнительные, получают сигналы, распаковывают ("дешифруют") их, ну и управляют конечными потребителями (ЭСП, зеркалами, фарами, ПТФ и т.д.). :-/
Любой "апгрейд" авто - это перепрограммирование одной-двух Ардуин + добавление каких то ключей/релюх, без изнуряещей трассировки проводов по всему авто (с его почти полной разборкой и сборкой)

Очень хочется услышать какую то конструктивную критику особенно от тех, кто уже развлекался с вайфай на Ардуинках:-/

P.S. Конечно же вряд ли есть смысл менять уже существующую проводку в авто, да ещё тратить на это деньги. Проект всё-же для того чтобы не вести новую проводку к потребителям, все новые функции реализовать "по новому".
У меня в этом плане раздолье - т.к. у меня нелюксовый ВАЗ =)

Бонусом к данному проекту может быть дополнительная дистанционная управляемость авто - можно к примеру с мобилы открыть дверь, опустить или закрыть любое стекло. :-/
Поморгать фарами))))