Перейти к содержанию

Алиса, Ардуино и Blynk - делаем собственное устройство

Материал из Wiki yaboard

На данной странице будет приведен пример простейшего подключения ардуиноподобных устройств имеющих доступ к сети. Данный обзор будет полезен:

  • Для тех, кто любит "дешево и сердито";
  • Для тех, кто не любит готовые решения, а предпочитает мозговой штурм и пайку;
  • Для тех, кто еще продумал концепцию УД (можно использовать как пример);
  • Для тех кто уже "в теме", но имеет сложности с подключением своих наработок к УДЯ.

Итак, начнем...

Что такое blynk?

Blynk - это облачное решение, созданное украинскими разработчиками, для управления различными микроконтроллерами удаленно с помощью мобильных устройств. Список поддерживаемых устройств обширен. Вариантов управления множество, за счет широкого набора инструментов. Огромным плюсом blynk является Example Code Builder, который позволяет сгенерировать нужный по функционалу код с минимальным редактированием и минимальными знаниями программирования. Для того, чтобы понять принцип работы с Blynk, а также рассмотреть принцип подключения нашего устройства к УДЯ соберем пример управляемого реле, которое по сути сможет заменить ни что иное, как Яндекс.Розетку.

Собираем "умный" выключатель

Нам понадобится (Ссылки на товары указаны из учета того, что закупалось и использовалось):

  1. NodeMcu V3 (или люой другой микроконтроллер из перечисленного в списке поддерживаемых устройств);
  2. Одноканальное реле;
  3. Возможно паяльник (работает и с простым соединением проводами для пинов);
  4. Немного тонкого провода;
  5. Прямые руки, конечно (без них никуда).

Собираем все по схеме:

Пин 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

На данном этапе управление пином на котором находится наше реле возможно:

  • С помощью вебхуков:

http://blynk-cloud.com/<ваш_токен>/update/V0?value=1 - для замыкания реле http://blynk-cloud.com/<ваш_токен>/update/V0?value=0 - для размыкания реле

  • С помощью приложения blynk:

Для этого вернемся к нашему созданному ранее проекту и добавим простую кнопку с помощью иконки "+", находящейся в верхнем правом углу приложения. Выберем в открывшемся меню "Button" и разместим ее, где нам удобней. Теперь для кнопки надо задать виртуальный пин, изменение которого мы будем регулировать данной кнопкой. Для этого просто тапнем по созданной кнопке.
Также можно ввести название кнопки, задать цвет и текст, который будет отображаться во вкл./выкл. состоянии.
Переключатель Push<>Switch задает реакцию кнопки. Push - нажали, отпустили, пин выключится. Switch - нажали, отпустили, пин останется включенным и наоборот (принцип выключателя).

Подключаем умный выключатель к УДЯ с помощью webhooks

Для подключения нашего выключателя будем использовать уже имеющийся навык УД "Домовенок Кузя".
Для этого переходим на сайт автора навыка и авторизируемся с помощью учетной записи Яндекс.
Выбираем кнопку "Добавить правило GET".
Заполняем "по вкусу". При этом не забываем в поле "URL управления устройством, доступный из интернета" вставить ссылку на наш вебхук: