Программирование микроконтроллеров ещё не было таким простым пока не пришел Blynk. Blynk — это сервер написанный на языке java, Вы можете подключиться к нему через интернет или запустить его у себя на компьютере или локальном сервере домашней автоматизации. В этой статье я опишу как начать работать с Blynk. Скетчи для программы Arduino IDE, как подключить ESP8266 к Arduino IDE описано в статье Разрабатываем в одной среде для Ardiuino, ESP8266, STM32, так же можно найти в сети интернет подробные инструкции как это сделать.
Для работы приложения Blynk с вашим ESP8266 достаточно прописать в скетче параметры подключения к Вашему Wi-Fi и уникальный ключ AUTH TOKEN, этого достаточно, чтобы Blynk заработал.
Для начала устанавливаем на телефон или планшет приложение Blynk, запускаем.
Создаем проект, проектов может быть несколько для каждого Вашего устройства.
Пишем имя проекта, выбираем устройство, в нашем случае ESP8266, так же нам нужен ключ AUTH TOKEN, нажав на кнопку E-mail данный ключ может быть послан вам на электронную почту. Если Ваш ключ дискредитирован, то есть его знает кто то ещё (как у меня на данных примерах), то можно сгенерировать новый. Нажимаем кнопку «Create»
Теперь запускаем Arduino IDE и пишем наш скетч.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <BlynkSimpleEsp8266.h> //подключаем Blink библиотеку //переменные char auth[] = "AUTH TOKEN"; //Ключ проекта AUTH TOKEN в приложении Blynk char* ssid = "SSID"; //Имя точки доступа Wi-Fi char* pass = "PASS"; //Пароль точки доступа Wi-Fi void setup() //инициализация модуля { Blynk.begin(auth, ssid, pass); //подключение к Wi-Fi и к Blink проекту } void loop() //работа модуля { Blynk.run(); // запуск Blynk } |
На модуле ESP8266 светодиод подключен на вывод GPIO2
вот схемы некоторых популярных модулей ESP8266
ESP-12
NodeMCU
ESP-201
Скетч залит, включаем наш модуль и запускаем Blynk, заходим в проект и добавляем виджет на экран либо кнопкой (добавить виджет) либо тапом по свободному месту экрана.
выбираем виджет, для включения/выключения светодиода можно добавить виджет Button,
но мы добавим Slider, чтобы регулировать яркость светодиода.
Виджету надо задать номер пина, это может быть физический пин или виртуальный, пока виртуальные пины мы не используем, выбираем цифровой пин gp2
Обратите внимание, регулировку слайдером я задал от 1023 до 0 (1023 — логическая единица на GPIO, 0 — логический 0 на GPIO), это связано с тем, что светодиод подключен одной стороной к питанию, другой стороной к GPIO2 и загорается когда на GPIO2 логический 0, то есть состояние GPIO2 выключено соответствует включенному светодиоду.
Когда слайдер добавлен можно запускать наш проект (кнопка запустить проект) и регулировать яркость.
Из приложения с этим скетчем можно выполнять основные операции ввода-вывода digitalRead, digitalWrite, analogRead, analogWrite
Прошиваем по OTA.
Не очень удобно подключать модуль к компьютеру чтобы обновить прошивку, тем более если модуль стоит уже в устройстве, лучше это делать по воздуху, для обновления по воздуху надо прошить скетч.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include <ESP8266WiFi.h> #include <ESP8266mDNS.h> #include <WiFiUdp.h> #include <ArduinoOTA.h> const char* ssid = ".........."; //Имя точки доступа Wi-Fi const char* password = ".........."; //Пароль точки доступа Wi-Fi // Порт по умолчанию 8266 если следующую строку закомментировать //ArduinoOTA.setPort(8266); // Имя хоста по умолчанию esp8266-[ChipID] если следующая строка закомментирована //ArduinoOTA.setHostname("myesp8266"); // без аутентификации если следующая строка закомментирована // ArduinoOTA.setPassword((const char *)"123"); void setup() { Serial.begin(115200); Serial.println("Booting"); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("Connection Failed! Rebooting..."); delay(5000); ESP.restart(); } ArduinoOTA.onStart([]() { Serial.println("Start"); }); ArduinoOTA.onEnd([]() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); }); ArduinoOTA.begin(); Serial.println("Ready"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void loop() { ArduinoOTA.handle(); } |
Прошиваем, теперь можно отсоединить от компьютера и включить модуль, в Arduino IDE в портах должен появиться сетевой порт нашего модуля, если не появился, то надо перезагрузить ArduinoIDE, для прошивки из ArduinoIDE по OTA должен быть установлен Python 2.7
Теперь будем прошивать по воздуху.
Скетч Blynk с обновлением по OTA теперь будет выглядеть следующим образом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include <ArduinoOTA.h> //подключаем библиотеку OTA #include <BlynkSimpleEsp8266.h> //подключаем Blink библиотеку char auth[] = "AUTH TOKEN"; //Ключ проекта AUTH TOKEN в приложении Blynk char* ssid = "SSID"; //Имя точки доступа Wi-Fi char* pass = "PASS"; //Пароль точки доступа Wi-Fi // Порт по умолчанию 8266 если следующую строку закомментировать //ArduinoOTA.setPort(8266); // Имя хоста по умолчанию esp8266-[ChipID] если следующая строка закомментирована //ArduinoOTA.setHostname("myesp8266"); // без аутентификации если следующая строка закомментирована // ArduinoOTA.setPassword((const char *)"123"); void setup() { Blynk.begin(auth, ssid, pass); //подключение к Wi-Fi и к Blink проекту ArduinoOTA.onStart([]() { Serial.println("Start"); }); ArduinoOTA.onEnd([]() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); else if (error == OTA_END_ERROR) Serial.println("End Failed"); }); ArduinoOTA.begin(); } void loop() { ArduinoOTA.handle(); Blynk.run(); // запуск Blynk } |
Загружаем скетч по OTA.
Теперь можно дописывать свой скетч, добавляя функции и обработки.
Поделиться в соц. сетях
Понравилась статья? Подпишитесь на RSS .