Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Как программировать и отлаживать ESP8266 через Android
Микросхема ESP8266 наделала много шума в области Интернета вещей, сделав это перспективное явление реальностью. Сегодня уже довольно много электронных устройств (как радиолюбительских, так и коммерческих) на основе ESP8266 выходят в Интернет с помощью этого Wi-Fi модуля.
ESP8266 довольно легко программируется и с ним удобно работать. Более того, сегодня доступно большое количество разнообразных плат с ESP8266 на борту, например, NodeMCU или Wemos D1. Единственное, до недавних пор не было инструмента для программирования и отладки ESP8266 через операционную систему Android, которой оснащены многие одноплатные компьютеры, планшеты и смартфоны. И вот теперь такой инструмент появился.
Речь идет о загрузчике ESP8266 Loader под авторством Bluino Electronics, который можно скачать с Google Play (https://play.google.com/store/apps/details?id=com.bluino.esploader). Это недавно выпущенное приложение позволяет вам не только загружать двоичные файлы с прошивкой на любую плату ESP8266, где используются USB-UART чипсеты FTDI, PL2303, CH34X и CP210X, но также имеет последовательный монитор для отладки функционирования микросхемы на ходу.
Вам понадобится кабель USB OTG, чтобы подключить плату ESP к вашему устройству на базе Android, но вам не нужно право доступа root с настройками разработки. На сегодняшний день большинство устройств Android могут работать с ESP8266 с помощью этого приложения. Все из них, по крайней мере, могут открыть последовательный монитор и прочитать, что передает запрограммированный ESP8266, но, к сожалению, некоторые из них не могут успешно запрограммировать плату.
Впрочем, даже на устройствах, где функция программирования работает, сама работа может быть медленной. Но, тем не менее, это демонстрирует много перспектив для управления, программирования и отладки устройств в полевых условиях, особенно если у в вашем коде не предусматривается прошивка «по воздуху».
В особенности хорошим моментом является то, что в ESP8266 Loader уже загружено немало примеров двоичных файлов, многие из которых могут быть полезны. Среди них имеются программы для переключения различных контактов GPIO на плате, создания точек доступа Wi-Fi и даже базового веб-сервера. С их помощью можно было бы провести некоторые тесты и диагностику прямо с вашего мобильного устройства, благодаря чему значительно возрастает уровень мобильности и удобства работы с популярным ESP8266.
Источник
esp8266 — Сообщество разработчиков
ESP8266 — Управляем со смартфона через Blynk
Еэспэшники — вливайтесь в ряды блинкеров!
Сегодня мы за 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 управление через интернет по протоколу MQTT
Всем привет! В этой статье будет подробно рассказано и показано как буквально за 20 минут свободного времени настроить дистанционное управление модулем esp8266 с помощью приложения на Android по протоколу MQTT.
Идея дистанционного управления и мониторинга всегда будоражила умы увлеченных в электронике и программировании людей. Ведь возможность в любой момент времени получить или отправить нужные данные, не зависимо от своего местоположения, дает широкие возможности. В своих прошлых статьях ( Статья 1 и Статья 2) я пытался рассмотреть несколько доступных и относительно простых вариантах реализации дистанционного управления микроконтроллерами через интернет. Однако время и весь мир не стоит на месте – прогресс продолжает свое неумолимое движение вперед. За это небольшое время приобрел широкую популярность модуль esp8266 который благодаря низкой цене и встроенному wi-fi стал одним из основных составляющих «Умного дома».
На данный момент MQTT является передовым и наиболее популярным протоколом передачи данных между отдельными устройствами в рамках систем «Умного дома». Он обладает рядом преимуществ по отношению к другим протоколам:
— низкое потребление трафика;
— соединение между клиентом и сервером всегда открыто;
— не нагружает интернет канал;
— отсутствие задержек в передаче данных;
— удобная система подписок на топики;
Всё это дает возможность мониторинга и управления в режиме реального времени. Однако MQTT требует наличие своего собственного сервера, который выполняет роль посредника между клиентами сети. Тут есть два выхода либо создавать свой сервер либо использовать сторонние сервисы.
Описываемая система управления состоит из двух основных частей: сервера MQTT (он как правило один) и клиентов, которых может быть довольно много. В нашем случае в качестве клиентов будут выступать приложение на Android и сам модуль esp8266.
Алгоритм работы системы следующий. Клиенты подключаются к серверу и сразу после подключения каждый из них осуществляет подписку на и интересующие его топики. Всё общение между клиентами проходит транзитом через сервер, который перенаправляет данные другим клиентам с учетом их подписок.
В нашем случае мы будем использовать крайне удобный сервис www.cloudmqtt.com у которого есть бесплатный тарифный план (Cute Cat), который полностью покроет потребности для реализации небольшой собственной системы «умного дома».
Пройдём регистрацию на сайте и получаем необходимые данные для доступа к серверу. При настройке клиентов необходимо использовать обычный Порт ( без SSL и TLS).
Приложение на Android.
Наше приложение будет выступать в качестве пульта управления для микроконтроллера, а так же будет принимать и отображать всю получаемую информацию от esp8266.
Приложение называется IoT MQTT Dashboard и представляет собой готовый mqtt клиент с небольшим количеством очень удобных виджетов. Более подробно о работе с приложением можно посмотреть на видео.
Модуль прошивается в среде программирования Arduino, однако хочу заметить что у модуля проблемы с прошивкой в последних версиях Arduino, поэтому рекомендую использовать версию 1.6.4.
Для примера к esp8266 подключены светодиод (5 пин) и датчик температуры ds18b20 (2 пин).
Так как для управления светодиода необходимо получать данные, то esp после подключения должно оформить подписку на соответствующий топик «test/led» иначе все отправленные данные пройдут мимо нашего микроконтроллера.
Для отправки данных температуры подписка не нужно, но при передаче значений температуры необходимо указывать топик в который эти данные пойдут.
Ниже приведен скетч с подробными комментариями.
// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const char *ssid = «AIRPORT»; // Имя вайфай точки доступа
const char *pass = «PASSWORD»; // Пароль от точки доступа
const char *mqtt_server = «server»; // Имя сервера MQTT
const int mqtt_port = 11140; // Порт для подключения к серверу MQTT
const char *mqtt_user = «Login»; // Логи от сервер
const char *mqtt_pass = «Pass»; // Пароль от сервера
#define BUFFER_SIZE 100
bool LedState = false;
int tm=300;
float temp=0;
// Функция получения данных от сервера
void callback(const MQTT::Publish& pub)
<
Serial.print(pub.topic()); // выводим в сериал порт название топика
Serial.print(» => «);
Serial.print(pub.payload_string()); // выводим в сериал порт значение полученных данных
String payload = pub.payload_string();
if(String(pub.topic()) == «test/led») // проверяем из нужного ли нам топика пришли данные
<
int stled = payload.toInt(); // преобразуем полученные данные в тип integer
digitalWrite(5,stled); // включаем или выключаем светодиод в зависимоти от полученных значений данных
>
>
WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);
sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
>
void loop() <
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) <
Serial.print(«Connecting to «);
Serial.print(ssid);
Serial.println(«. «);
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println(«WiFi connected»);
>
// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) <
if (!client.connected()) <
Serial.println(«Connecting to MQTT server»);
if (client.connect(MQTT::Connect(«arduinoClient2»)
.set_auth(mqtt_user, mqtt_pass))) <
Serial.println(«Connected to MQTT server»);
client.set_callback(callback);
client.subscribe(«test/led»); // подписывааемся по топик с данными для светодиода
> else <
Serial.println(«Could not connect to MQTT server»);
>
>
if (client.connected()) <
client.loop();
TempSend();
>
>
> // конец основного цикла
// Функция отправки показаний с термодатчика
void TempSend() <
if (tm==0)
<
sensors.requestTemperatures(); // от датчика получаем значение температуры
float temp = sensors.getTempCByIndex(0);
client.publish(«test/temp»,String(temp)); // отправляем в топик для термодатчика значение температуры
Serial.println(temp);
tm = 300; // пауза меду отправками значений температуры коло 3 секунд
>
tm—;
delay(10);
>
В результате мы получаем удобный инструмент для дистанционного управления и мониторинга данных, который довольно прост в освоении и будет по силу даже начинающим.
Видео с демонстрацией работы системы управления
Подробная видеоинструкция по настройке системы
Один из вариантов применения управления esp8266 через MQTT протокол
Управление светодиодной лентой через интернет
Если у вас возникли вопросы по данному материалу, то рекомендую посмотреть вторую часть видео, где материал изложен более наглядно.
В архиве находятся скетч и все необходимые библиотеки для прошивки микроконтроллера скетчем из примера.
Обращаю ваше внимание, что библиотека ESP8266WiFi.h не входит в данный архив, она устанавливается через Boards manager в среде Arduino.
Источник