Blynk представляет собой платформу интернета вещей (IoT), в которой вы можете достаточно просто создать графический интерфейс для своих проектов используя уже готовые виджеты из данной платформы. Но у данной платформы есть и определенные недостатки: задержка (latency) и ограниченное количество энергии. Эти недостатки можно преодолеть при помощи установки локального сервера (local server) Blynk, который обеспечивает неограниченное количество энергии и уменьшает задержку.
В данной статье мы рассмотрим установку локального сервера Blynk на плату Raspberry Pi (была использована плата Raspberry Pi 4) и взаимодействие с ним с помощью платы NodeMCU ESP8266.
Необходимые компоненты
- NodeMCU ESP8266 (купить на AliExpress).
- Плата Raspberry Pi (купить на AliExpress).
- Светодиод (купить на AliExpress).
Установка локального сервера Blynk на Raspberry Pi
Сервер Blynk разработан на Java, поэтому первую вещь, которую мы должны сделать – это проверить что на вашей Raspberry Pi установлена Java 8. Сделать это можно с помощью команды:
1 |
java -version |
Если на вашей плате Raspberry Pi не установлена данная версия Java, то тогда ее необходимо установить с помощью команды:
1 |
sudo apt install openjdk-8-jdk openjdk-8-jre |
После этого скачайте JAR файл сервера Blynk с помощью команды:
1 |
wget "https://github.com/blynkkk/blynk-server/releases/download/v0.41.12/server-0.41.12-java8.jar" |
Затем нам необходимо запустить сервер в работу с помощью команды:
1 |
java -jar server-0.41.13-java8.jar -dataFolder /home/pi/Blynk |
После этого вы на экране должны увидеть примерно следующую картину:
Либо же вы можете запускать данный сервер в работу при каждой загрузке системы. Для этого используйте следующую команду чтобы открыть crontab:
1 |
crontab –e |
После этого добавьте следующую команду в конец файла. Измените путь чтобы он соответствовал каталогу установки Blynk.
1 |
@reboot java -jar /home/pi/server-0.23.0.jar -dataFolder /home/pi/Blynk & |
Сохраните изменения нажав CTRL+X, затем Y, затем ENTER.
Конфигурация файла электронной почты (mail)
Сервер Blynk передает email с токеном аутентификации (authentication token) каждый раз когда вы создаете новый проект. Вам необходимо сконфигурировать настройки отправки электронных писем. Для этого создайте новый файл с именем mail.properties и сохраните его в том же самом каталоге, в котором у вас расположен сервер. Это можно сделать с помощью следующей команды:
1 |
sudo nano mail.properties |
Затем в этот файл mail.properties вам необходимо добавить следующие нижеприведенные строки. Не забудьте добавить свой Email id (имя почты) и пароль к ней (Password) в последние две строки.
1 2 3 4 5 6 |
mail.smtp.auth=true mail.smtp.starttls.enable=true mail.smtp.host=smtp.gmail.com mail.smtp.port=587 mail.smtp.username=Your EMAIL ID mail.smtp.password=Password |
Сохраните изменения нажав CTRL+X, затем Y, затем ENTER.
На этом установка сервера Blynk будет закончена. Перезагрузите плату Raspberry Pi с помощью команды:
1 |
sudo reboot |
Настройка приложения Blynk
Скачайте приложение Blynk из Play Store или App Store, установите его и создайте себе в нем новый аккаунт.
Затем нажмите на иконку внизу экрана. Нажмите кнопку чтобы активировать Custom mode (обычный режим). Введите IP адрес вашего локального сервера Blynk (в нашем случае это IP адрес платы Raspberry Pi) и нажмите OK.
На следующем экране введите правильный email и пароль к нему чтобы создать аккаунт на вашем локальном сервере.
После того как вы войдете в свой аккаунт нажмите на Create New Project (создать новый проект). Введите имя проекта. После этого в качестве устройства (device) выберите NodeMCU, а в типе соединения (connection type) — Wi-Fi.
После этого нажмите на кнопку ‘Create’ чтобы сформировать ваш проект. Как только окно проекта откроется нажмите на иконку с плюсом чтобы добавить в него новый виджет.
Затем нажмите на ‘Button’ чтобы добавить виджет кнопки в ваш проект.
После этого нажмите на иконку кнопки чтобы изменить настройки данного виджета. Введите имя для вашей кнопки и выберите D1 в качестве выходного контакта (output pin).
Схема проекта
Схема проекта управления светодиодом с помощью локального сервера Blynk и NodeMCU представлена на следующем рисунке.
Теперь, когда у нас локальный сервер настроен, мы будем с его помощью и NodeMCU управлять светодиодом, подключенным к контакту D1 платы NodeMCU ESP8266
Примечание: в приведенной схеме небольшая опечатка – светодиод подключен не к контакту D1, а к контакту D0.
Внешний вид собранной конструкции проекта показан на следующем рисунке.
Программирование NodeMCU ESP8266 для взаимодействия с сервером Blynk
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Библиотеку Blynk можно скачать и установить с помощью менеджера библиотек (Library Manager) в Arduino IDE. Для этого в Arduino IDE выберите пункт меню Sketch < Include Library < Manage Libraries. В открывшемся окне выполните поиск Blynk и установите библиотеку Blynk
Первым делом в начале программы подключим используемые библиотеки.
1 2 3 |
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> |
В следующей строчке кода введите токен аутентификации (Auth Token), который вы получили в электронном письме (mail) от Blynk.
1 |
char auth[] = "Your Auth Token"; |
Внутри функции setup инициализируем последовательную связь со скоростью 9600 бод (для целей отладки). Также убедитесь в том, что помещены в комментарии строки соединения с сервером Blynk по умолчанию поскольку мы используем локальный сервер Blynk – введите в параметрах функции Blynk.begin правильный IP адрес этого сервера.
1 2 3 4 5 6 7 |
void setup() { Serial.begin(9600); //Blynk.begin(auth, ssid, pass); //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80); Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,207), 8080); } |
Тестирование работы проекта
Запустите сервер Blynk на Raspberry Pi и загрузите код программы (скетч) в NodeMCU. Подождите пока она соединится с сетью Wi-Fi. После этого откройте приложение Blynk на своем смартфоне и нажмите на кнопку run. После этого вы сможете управлять состоянием светодиода с помощью созданной ранее кнопки в приложении Blynk.
Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.
Исходный код программы (скетча)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "5JpJGq5b8-hRskAtTTrJw_xIO3ArDu7R"; // Your WiFi credentials (параметры входа в вашу сеть WiFi – ее имя и пароль для доступа к ней) // Set password to "" for open networks. char ssid[] = "CircuitLoop1"; char pass[] = "cdfi19230@165"; void setup() { // Debug console Serial.begin(9600); //Blynk.begin(auth, ssid, pass); // You can also specify server: //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80); Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,207), 8080); } void loop() { Blynk.run(); } |