Алиса, Ардуино и Blynk - делаем собственное устройство
На данной странице будет приведен пример простейшего подключения ардуиноподобных устройств имеющих доступ к сети. Данный обзор будет полезен:
- Для тех, кто любит "дешево и сердито";
- Для тех, кто не любит готовые решения, а предпочитает мозговой штурм и пайку;
- Для тех, кто еще продумал концепцию УД (можно использовать как пример);
- Для тех кто уже "в теме", но имеет сложности с подключением своих наработок к УДЯ.
Итак, начнем...
Что такое blynk?
Blynk - это облачное решение, созданное украинскими разработчиками, для управления различными микроконтроллерами удаленно с помощью мобильных устройств. Список поддерживаемых устройств обширен. Вариантов управления множество, за счет широкого набора инструментов. Огромным плюсом blynk является Example Code Builder, который позволяет сгенерировать нужный по функционалу код с минимальным редактированием и минимальными знаниями программирования. Для того, чтобы понять принцип работы с Blynk, а также рассмотреть принцип подключения нашего устройства к УДЯ соберем пример управляемого реле, которое по сути сможет заменить ни что иное, как Яндекс.Розетку.
Собираем "умный" выключатель
Нам понадобится (Ссылки на товары указаны из учета того, что закупалось и использовалось):
- NodeMcu V3 (или люой другой микроконтроллер из перечисленного в списке поддерживаемых устройств);
- Одноканальное реле;
- Возможно паяльник (работает и с простым соединением проводами для пинов);
- Немного тонкого провода;
- Прямые руки, конечно (без них никуда).
Собираем все по схеме:
-
Схема реле
| Пин NodeMcu | Пин реле |
|---|---|
| VCC | VCC |
| GND | GND |
| D4 | IN |
Не рекомендуется подключать Реле в разрыв питания L и L1 до момента полной сборки!
Телефон вызова экстренных служб - 112.
Итак, blynk...
Схема собрана. Можно перейти к прошивке. Но для начала стоит скачать официальное приложение blynk из GooglePlay или AppStore
После установки, потребуется зарегистрироваться в приложении. После регистрации (рис.1) будет предложено создать новый проект, с помощью которого мы сможем управлять нашим микроконтроллером.(рис.2) При создании важно правильно выбрать микроконтроллер. (рис.3) После создания проекта появится пустая страница для элементов управления (рис.4) на адрес электронной почты получим token от нашего текущего приложения в blynk, который в последующем будем использовать для управления пинами через webhook.
-
Регистрация
-
Создание проекта
-
Выбор устройства
-
Окно для элементов управления
Подготовка Arduino IDE и прошивка
Предположим, что среду разработки Ардуино мы уже загрузили. Для начала потребуется скачать и добавить библиотеки Blynk для работы с сервисом. Для этого загружаем данные библиотеки, и распаковываем их в папку с библиотеками Arduino IDE (по умолчанию: C:\Users\<Текущий пользователь>\Documents\Arduino\).
Отлично. Теперь мы готовы к работе с прошивкой.
Переходим к Example Blynk Bilder и выбираем микроконтроллер, способ подключения, вводим token и выбираем пример скетча (в данном случае Virtual Pin Read).
Копируем полученный код в Arduino IDE, где остается ввести название WiFi-сети и пароль.
Также в коде мы можем видеть подобную функцию:
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
// process received value
}
Где BLYNK_WRITE(V1) говорит о том, что функция выполняется при изменении виртуального пина 1, а int pinValue = param.asInt(); объявляет числовую переменную pinValue, которая содержит в себе текущее состояние виртуального пина. (может принимать 0 - пин выключен, 1 - пин включен).
Всего можно использовать 256 виртуальных пинов(V0-V255), т.е. это огромный запас для реакции на изменение их состояния.
Например: если виртуальный пин 1 принимает значение 1 - подать питание на физический пин NodeMcu питание и этим замкнуть реле, или виртуальный пин 2 принимает значение от 0 до 255 - подать шим-сигнал для изменения яркости (цвета RGB) диодной ленты в значении от 0 до 255.
-
Создаем код
-
Название сети и пароль
Заставим нашу функцию включать физический пин D4 NodeMcu (в данном случае, я передам функции значение виртуального пина 0, т.к. удобнее начинать с начального пина.)
BLYNK_WRITE(V0)
{
int pinValue = param.asInt();
digitalWrite(D4, pinValue);
}И чтобы функция сработала, когда мы изменим значение V0, назначим пин D4 пином выхода. Для этого в основной функции void setup() добавим pinMode(D4, OUTPUT);. В конечном итоге, получим следующий код для прошивки нашего устройства:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "Мой токен"; //тут токен из e-mail
char ssid[] = "YourNetworkName"; //Название WiFi-сети
char pass[] = "YourPassword"; //Пароль
BLYNK_WRITE(V0) //функция, отслеживающая изменение виртуального пина 0
{
int pinValue = param.asInt(); //переменная текущего состояния виртуального пина
digitalWrite(D4, pinValue); //задаем значение на физическом пине NodeMcu D4 равное значению виртуального пина 0
}
void setup() //основная функция, выполняется один раз при подаче питания на микроконтроллер
{
Serial.begin(9600); //открываем серийный порт, чтобы видеть как проходит подключение к серверу blynk
pinMode(D4, OUTPUT); //объявляем D4 "выходным" пином
Blynk.begin(auth, ssid, pass); //авторизируемся на сервере
}
void loop() //основная функция, которая выполняется постоянно по кругу
{
Blynk.run(); //запускаем работу blynk. В данном случае постоянную проверку виртуального пина 0
}
Заливаем прошивку в NodeMcu (Не заостряю внимания на нюансы настройки Arduino IDE для работы с NodeMcu, т.к. пример предполагает использование различных плат, подобную информацию всегда можно найти). Наш выключатель готов к работе.
Вебхуки и управление в интерфейсе Blynk
На данном этапе управление пином на котором находится наше реле