Еэспэшники — вливайтесь в ряды блинкеров! Сегодня мы за 5 минут настроим управление ESP8266 с вашего смартфона (iOS или Android) с помощью нового облачного сервиса Blink. Видео и подробности под катом.
Установите приложение Blynk на смартфон
Зарегистрируйтесь в приложении и создайте новый проект.
Создание нового проекта в Blynk
Введите название проекта, например ESP8266. В поле Hardware Model выберите ESP8266. (надеюсь, что вы заметите впечатляющий список поддерживаемого оборудования) Автоматически сгенерированный Auth Token отправьте на свой почтовый ящик.
После нажатия на кнопку Create вам станет доступно пустое поле для проектирования UI вашей панели управления ESP8266.
Пустой проект Blynk
Жмете на плюсик вверху справа — появится панель инструментов Widget Box для добавления виджетов на вашу панель управления. Стоит заметить, что список виджетов еще будет пополняться.
Для пробы выберем тип виджета Button — этот виджет сразу добавится на вашу панель. Отредактируйте его одним прикосновением. Название можно не заполнять, чуть правее можно выбрать цвет индикатора, в поле OUTPUT PIN выберите справа Digital, а слева любой свободный пин GPIO. Ниже переключите тип кнопки на Switch.
На моей отладочной плате к светодиодам разведено 10 GPIO — я все их подключу к панели Blynk.
Все, интерфейс готов, пока отложите смартфон в сторонку.
Если вы еще не знакомы с Arduino IDE для ESP8266 — почитайте здесь и здесь. Установите Arduino IDE, как описано здесь.
Далее установите библиотеку Blynk в Arduino IDE. В этом вам поможет официальная инструкция. Также можете взять библиотеку самую последнюю версию прямо из репозитария и установить вручную. Далее выбираем пример ESP8266_Standalone и прописываем в нем Auth Token, который мы получили по почте, SSID и пароль вашей WiFi сети. Компилируем и заливаем скетч в ESP8266.
Вот, собственно, и все.
Возвращаемся к нашему приложению на смартфоне, жмем маленький треугольничек, похожий на кнопку Play, в верхнем правом углу и переходим из режима редактирования проекта в режим управления ESP8266 и жмем созданные нами кнопочки и мигаем светодиодами, как на видео в начале статьи.
Замечания
1. Стоит отметить, что еще есть возможность использовать ESP8266 в качестве WiFi шилда для ардуино.
2. Облачный сервер Blynk — open source и может быть развернут в вашей локальной сети
P.S. Blynk на Kickstarter неплохо отработал — собрал почти 50k
Pasha Baiborodin — Founder and user experience design warrior
Dmytro Dumanskiy — Co-Founder and server side guru
Volodymyr Shymanskyy — embedded Yoda
Max Kareta — iOs ninja
Alex Kipar — Android samurai
Iryna Liashchuk — Communications princess
Не могу не сообщить, что создал этот суперклассный дизайн интерфейса Vitalii Kramar
Источник
Управляем esp8266 c android устройств
alexhi
Member
Решил поделиться своими приложениями под Андроид для тестирования и управления модулем esp8266 с Андроид. Они могут пригодиться когда комп по каким то причинам не очень удобно использовать или лень таскать как мне Управление модулем esp8266 по COM порту AT-командами Поддерживаются устройства и переходники USB-COM на чипах FT232RL(FTDI), CP2102(Silicon Lab), PL2303(PROLIFIC). Андроид планшет должен иметь USB-HOST и версию не ниже 3.1. и разрешенные пермишены. Если не работает,читаем что надо сделать. https://play.google.com/store/apps/details?id=ru.shipov.termusb&hl=ru
Управление по TCP (TCP клиент) Cоздаем на модуле TCP сервер подключаемся к модулю по WIFI сети и начинаем управлять модулем командами. https://play.google.com/store/search?q=TermTCP&c=apps&hl=ru
Управление по UDP (UDP клиент) Cоздаем на модуле UDP сервер подключаемся к модулю по WIFI сети и начинаем управлять модулем командами. https://play.google.com/store/search?q=TermUDP&c=apps&hl=ru
Новая версия UDP клиента с возможностью записи макросов. Прогу делал под недавний проект, если не сложно отпишитесь что и как. Внешний вид:
Рассмотрим применение программ относительно к моей задачи которую я недавно решал. (Прошивка с AT командами и 9600 бод) Нужно со смартфона по WIFI удаленно включать реле ,и получать данные о температуре с датчика DS18B20. На uart порт модуля подключаю контроллер atmega168(c реле и ds18b20) и at командами создаю UDP сервер
Создаем мост UDP COM на модуле: void init_wifi(void) <
> При этом создается мост между UDP портом 7777 модуля, и uart портом. Короче все что приходит по UDP попадает в контроллер, а что отсылается в uart отсылается по UDP. Далее все просто посылаем команду с Андроид терминала TepmUDP «!GetC» и получаем ответ на Андроид с температурой: «!TEMP +28» или включаем реле «!SetR1» ответ реле «RELEON»
Если Вы делаете покупки в интернет магазинах AliExpress, GearBest, Banggood, ASOS, Ozon, то вступайте в мою партнерскую программу. Таким образом поможете развитию моего сайта и скорейшему выходу новых статей. Ваша выгода —возврат до 18% потраченных средств. Кэшбэк проверенный. Деньги выводят быстро и без лишних проволочек.
Сегодня я буду рассматривать возможность управления 4 реле из приложения мобильного устройства с ОС Android по сети WiFi. В статье я рассмотрю три решения.
1. С помощью готовых библиотек aRest. 2. Написанной «руками» программы для NodeMCU. 3. С помощью облачного сервиса Blynk.
Для первых двух решений будет создано приложение в сервисе MIT App Inventor 2, работающее в ОС Android. Третье решение предусматривает использование готового приложения поставляемого сервисом Blynk.
ЧипESP8266
Чип ESP8266 разработан специально для «интернета вещей». Существует два варианта использования этого чипа. Первый – в качестве моста UART-WIFI для подключения к микроконтроллеру и управления АТ-командами. Второй вариант – чип сам исполняет роль управляющего контроллера. По моим оценкам в среде любителей электроники чип чаще используется как управляющий контроллер.
Чип является высокоинтегрированным решением для работы с 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. Для работы с платформой необходимо установить библиотеки. С библиотеками идет большое количество примеров программ.
Установка библиотек в средуArduinoIDEдля работы сNodeMCU.
Для установки библиотек необходимо зайти в настройки Arduino IDE и в поле «Additional board» ввести адрес http://arduino.esp8266.com/package_esp8266com_index.json
Далее «Инструменты» – «Плата» – «Boards Manager».
Пролистываете список вниз и находите ESP8266 by ESP8266 Community, и устанавливаете библиотеки.
Закройте «Boards Manager». Идите в «Инструменты» и выберите плату NodeMCU в соответствии с вашей версией.
Чтобы понять какой модуль у вас установлен и какую версию выбрать, посмотрите на модуль. Если контакты на нем расположены с трех сторон – это ESP-12E, если только с двух – это ESP-12.
Далее выбираете частоту модуля, размер памяти и порт, к которому подключена NodeMCU
Полное описание можно почитать здесь 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 выглядит вот так:
WiFiClient client = server.available();
return;
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. Устанавливаете и запускаете программу
Нажимаете «Create New Project»
Вписываете название проекта и выбираете NodeMCU в поле «Hardware model». Auth Token учите наизусть или записываете на бумажку, отсылаете себе на почту. Жмете «Create».
Жмете «+» в углу.
Выбираете «Button». Как вы уже обратили внимание, каждый элемент, добавляемый в проект, стоит энергию. По умолчанию вам ее дается 2000. По мере добавления виджетов энергия будет расходоваться. Если вам нужно будет разместить больше виджетов, то энергию придется покупать за деньги.
Вот и появилась наша кнопка. Нажмите на нее. Откроются ее настройки.
Выберите название, пин, на который она будет действовать, режим кнопки или переключателя, название для состояний «включено» и «выключено». В приложении инвертировать сигнал с кнопки нельзя. Для моих реле: кнопка выключена – 0 на выходе, реле включено и наоборот. Прописывать правила работы логики можно установив сервер на локальном компьютере.
Далее нажимаете треугольничек справа вверху. Программа переходит из режима редактирования в работу.
Кнопки работают. Что примечательно поддерживается мультитач. Я пробовал одновременно нажимать 6 кнопок. Все работает (у телефона по описанию 10 точек нажатия).
Вторая часть – это прошивка NodeMCU. Скачиваете и устанавливаете библиотеки Blynk https://github.com/blynkkk/blynk-library. Запускаете Arduino IDE – Файл – Образцы – Blynk – BoardsAndShields – ESP8266_Standalone.
Вписываете в пример Auth Token с секретной бумажки почты. А также SSID вашей сети WiFi и пароль доступа к ней.
Все. Компилите и шьете. Все заработало с первого раза. При условии использования облачного сервиса в интернет должен иметь доступ как мобильный телефон, так и NodeMCU.
Создание приложения вAppInventor.
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. Например, управление открытием гаражной двери и включением света в гараже.