Мини-кейс 5: Blynk [Устарело, не работает в России]

Познакомимся с сервисом Blynk и поуправляем RGB матрицей со смартфона.

Blynk — сервис для программирования приборов и удобного доступа к ним с панели управления на экране смартфона. Встроенный конструктор кода для различных задач и наглядный интерфейс панели управления сильно облегчают создание IoTприборов. Сервис совместим с кучей устройств — от Wi-Fi Troyka модуля до последней версии компьютера Raspberry Pi.

Для начала работы с Blynk прибор нужно прошить кодом с твоей программой и клиентской частью Blynk.

Затем понадобится смартфон с приложением Blynk — с него ты будешь контролировать свои умные устройства.

Оба устройства являются клиентами, связующим звеном между которыми выступает сервер Blynk.

ЧТО ДЕЛАЕМ?

  1. Зайди на blynk.cc и выбери пункт GETTING STARTED.

  2. Установи на смартфон приложение Blynk.

  3. Открой приложение на смартфоне.

  4. Заведи учётную запись.

  5. Нажми кнопку «New Project».

  6. Введи название проекта и выбери плату, с которой будешь работать: ESP8266. Тип соединения — Wi-Fi.

  7. Как только ты создашь проект, на указанную при регистрации почту придёт сообщение с уникальным токеном идентификации. Он потребуется в коде программы.

  8. Теперь нужно установить библиотеки в Arduino IDE. Их нельзя автоматически установить из архива, поэтому придётся сделать это вручную. Ниже на странице «GETTING STARTED» нажми на кнопку «Download Blynk Library».

  9. По ссылке в самом низу страницы находятся последние версии библиотек в .zip файле. Скачай этот архив.

  10. Добавьте скаченные библиотеки в Arduino IDE.

  11. Теперь собери устройство. Установи на Slot Shield в 8 пин RGB матрицу, а Slot Shield на Arduino.

  12. Загрузи код в Arduino UNO:

    #include <Adafruit_NeoPixel.h> // Библиотека для работы с RGB-матрицей
     
    #define MATRIX_PIN 8 // Номер пина, к которому подключена RGB-матрица
    #define LED_COUNT 16 // Количество светодиодов в матрице
    #define BRIGHTNESS 127 // Яркость матрицы
     
    Adafruit_NeoPixel rgbMatrix = Adafruit_NeoPixel(LED_COUNT, MATRIX_PIN, NEO_GRB + NEO_KHZ800); // создаём объект класса Adafruit_NeoPixel
    
    int ledR, ledG, ledB;
    
    void setup() 
    {
      Serial.begin(115200);
      rgbMatrix.begin(); // Инициализация RGB-матрицы
      rgbMatrix.setBrightness(BRIGHTNESS); // Устанавливаем яркость матрицы
    }
     
    void loop()
    {
      String command = Serial.readStringUntil('\n'); // Считываем из Serial строку до символа переноса на новую строку
      if (command.length() > 0) {
        // Проверяем первый символ переменной на значение R, G или B и записываем в переменные ledR, ledG, ledB.
        // С помощью функции substring вырезаем символ из строки
        // С помощью функции toInt - преобразовываем строку а число
        if (command[0] == 'R') ledR = command.substring(1).toInt();
        else if (command[0] == 'G') ledG = command.substring(1).toInt();
        else if (command[0] == 'B') ledB = command.substring(1).toInt();
      }
      colorWipe(rgbMatrix.Color(ledR, ledG, ledB), 50); // Заполняем RGB-матрицу
    }
     
    // Функция заполнения каждого сегмента
    void colorWipe(uint32_t colorCode, uint8_t wait)
    {
      for (uint16_t i = 0; i < rgbMatrix.numPixels(); i++) {
        // Заполняем текущий сегмент выбранным цветом
        rgbMatrix.setPixelColor(i, colorCode); // В пиксель i установить цвет
        rgbMatrix.show(); // Выполнить на матрице
        delay(wait); // Ждём
      }
    }
  13. Вернись к своему смартфону. Открой приложение Blynk и проект, который ты создал.

  14. Проведи пальцем по экрану влево. Ты увидишь панель виджетов.

  15. Выбери виджет «zeRGBa». Он появится на рабочем поле проекта.

  16. Щёлкни на виджете, чтобы увидеть его настройки. OUTPUT переведи в MERGE, установи диапазон значений от 0 до 255, а SEND ON RELEASE переведи в OFF.

    Для доступа к физическим пинам устройства через элементы управления в приложении Blynk используются «виртуальные пины».

    В коде, которым прошивается Arduino, можно назначить номера виртуальных пинов для любых доступных пинов устройства. А в самом приложении при выборе инструмента управления или наблюдения нужно указать номер виртуального пина. Виртуальный пин можно указать и для аппаратного UART — для этого в коде будет использоваться функция-обработчик.

  17. Подключи WI-FI модуль к Breadboard’у. Ты можешь перепрограммировать его, не разбирая схемы, — соедини модуль с Arduino в режиме USB-UART.

  18. Загрузи на Wi-Fi модуль управляющую прошивку Blynk. Как загружать?

    #include <ESP8266WiFi.h>
    #include <BlynkSimpleEsp8266.h>
    
    #define WIFI_SSID "freetime" // Указываем SSID и пароль Wi-Fi сети, с которой будем выходить в интернет
    #define WIFI_PASSWORD ""
    #define BLYNK_TOKEN "ТОКЕН_blynk" // Указываем токен blynk
    
    void setup() {
      Serial.begin(115200);
      Blynk.begin(BLYNK_TOKEN, WIFI_SSID, WIFI_PASSWORD);
    }
    
    // Циклично запрашиваем данные у Blynk.
    // Если от сервиса пришли новые данные для виртуального пина V1, вызываем функцию-обработчик
    void loop() {
      Blynk.run();
    }
    
    // Данные для пинов содержатся в переменной param.
    // Blynk отправляет сразу 3 значения, к каждому из них мы можем обратиться по индексу.
    // Функция asInt() преобразует входные данные в числовое значение.
    BLYNK_WRITE(V1) {
      int redValue = param[0].asInt();
      int greenValue = param[1].asInt();
      int blueValue = param[2].asInt();
      // Записываем в Serial три строки. По одной на каждый цвет: первый символ строки указывает цвет, а за ним следует число от 0 до 255.
      Serial.print("R");
      Serial.println(redValue);
      Serial.print("G");
      Serial.println(greenValue);
      Serial.print("B");
      Serial.println(blueValue);
    }
  19. Проверь работу программы. Сразу после загрузки кода на Wi-Fi модуль открой проект с zeRGBa на смартфоне. Нажми на кнопку с треугольником в правом верхнем углу экрана — это запустит работу проекта.

  20. Открой Serial Monitor. Убедись, что скорость выставлена на 115200 бод, и начни водить пальцем по зебре. Ты увидишь поток данных, которые пойдут через Serial. Данные должны приходить именно в том формате, для которого ты подготовил программу на Arduino, — убедись в этом перед финальным запуском.

  21. Теперь собери финальное устройство. Подключи правильно! Wi-Fi модуль: RX - 0, TX - 1.

Ура, ты прошёл весь набор! Теперь ты можешь создавать серьёзные устройства. Используй изученные сервисы для своих крутых проектов. Полив растений, кормушка для домашних животных и птиц, система умного дома — управление устройствами теперь доступно с твоего смартфона в любое время даже на другом конце Земли!

Дополнительное задание:

Добавь реле. Управляй реле через Blynk по нажатию кнопки.

Остальное по твоему усмотрению.

Last updated