Умная новогодняя ёлка

Мечтали ли вы когда-нибудь о том, чтобы включать и выключать гирлянду на новогодней ёлке, просто произнеся некие волшебные слова? Если так оно и есть — значит — эта статья написана специально для вас. Её автор хочет рассказать о том, как оснастить новогоднюю ёлку системой голосового управления.


Материалы

Аппаратные компоненты и инструменты:

  • Реле.
  • Espressif ESP8266 ESP-01.
  • Arduino UNO.
  • Макетная плата.
  • Блок питания для макетной платы.
  • Гирлянда для ёлки.
  • Соединительные провода.
  • Отвёртка.

Программы:

Обзор проекта

Это — мой первый проект такого рода. Он посвящён созданию системы, которая позволяет, используя Google Assistant, включать и выключать ёлочную гирлянду. 

Вот схема проекта.

Схема проекта

Вот как выглядят компоненты проекта в сборе.

Система голосового управления ёлочной гирляндой

В ходе работы над проектом надо сначала собрать его аппаратную часть, а потом заняться настройкой программного обеспечения и подготовкой кода. Поговорим о настройке Blynk.

Настройка Blynk

Возможно, у вас уже есть опыт использования Blynk. Тогда тут для вас не будет ничего нового. Но я, в расчёте на тех, кто раньше Blynk не пользовался, приведу здесь достаточно подробное описание настроек соответствующего проекта.

Загрузим приложение Blynk на мобильное устройство (из Apple Store или из Google Play).

Войдём в приложение (для этого понадобится учётная запись; войти в приложение можно и с использованием Facebook-аккаунта).

Вход в приложение

Создадим новый проект (токен аутентификации будет отправлен на тот адрес электронной почты, который был использован для входа в систему).

Создание нового проекта

Выберем имя для проекта, укажем, в качестве устройства, Arduino Uno, а в качестве метода подключения — WiFi.

Настройка основных свойств проекта

Теперь, касанием экрана, вызовем меню. Нас интересует элемент Text Input.

Выбор элемента Text Input

Теперь надо коснуться элемента Text Input — появится экран, показанный ниже.

Настройка элемента Text Input

В поле Title можно ввести всё что угодно. В поле OUTPUT надо записать V0. Поле HINT оставим пустым, в поле CHARACTER LIMIT установим ограничение на количество символов, равное 20. 

На этом настройка Blynk завершена.

Теперь займёмся IFTTT.

Настройка IFTTT

Загрузите мобильное приложение IFTTT и войдите в него. Коснитесь кнопки Create. Теперь коснитесь кнопки Add в поле If This и найдите Google Assistant. Коснитесь соответствующего значка и выберите в появившемся списке первый пункт — Say a phrase with text ingredient — он позволяет настроить реакцию систему на фразу, содержащую ключевое слово.

В поле What do you want to say? я ввёл Google turn $ the lights. Символ $ — это ключевое слово. Если хотите — можете задать тут дополнительную фразу, но ключевое слово всегда должно быть одним и тем же. Затем надо указать ответ, который даст Google Assistant.

Далее, нужно выбрать язык (этот материал написан на английском — поэтому я выбрал тут English). Теперь коснёмся Continue и на появившемся после этого экране, в поле Then That, коснёмся Add и выполним поиск по ключевому слову Webhooks. Далее, коснёмся соответствующего значка и займёмся настройками раздела Make a web request.

Прежде чем это сделать — надо открыть командную строку на компьютере, который подключён к интернету, и ввести такую команду:

ping blynk-cloud.com 

Далее, надо записать IP-адрес, который появится в выходных данных этой команды. Он, например, может выглядеть как 188.166.206.43. Это — адрес Blynk-сервера для вашей страны.

Теперь возвращаемся к настройкам приложения IFTTT. Здесь, в разделе Make a web request, в поле URL, нужно ввести такую конструкцию:

http://только что полученный IP-адрес/Токен аутентификации проекта Blynk/pin/V0 

В поле Method надо выбрать PUT.

В поле Content Type надо выбрать application/json.

В поле Body надо поместить следующую конструкцию:

["{{TextField}}"] 

Теперь надо коснуться кнопки Continue, задать заголовок действия и завершить настройку. После этого IFTTT будет готов к работе.

Код

Вот код нашего проекта, предназначенный для Arduino:

#define BLYNK_PRINT Serial #define EspSerial Serial1  #include <SoftwareSerial.h> #include <SPI.h> #include <ESP8266_Lib.h> #include <BlynkSimpleShieldEsp8266.h>  // Токен аутентификации надо получить в приложении Blynk. char auth[] = "yourAuthToken";  // Данные для подключения к WiFi. // Установите пароль в "" для открытых сетей. char ssid[] = "YourSSID"; char pass[] = "YourPassword";  SoftwareSerial EspSerial(2, 3); // RX, TX ESP8266  String s;    // для хранения получаемых ключевых слов  BLYNK_WRITE(V0)     // будет запускаться каждый раз, когда приложение Blynk отправляет строку {   s=param.asStr();   Serial.print(s); //Строка, отправленная приложением Blynk, будет выведена в Serial Monitor    if(s=="on")   {     digitalWrite(7, HIGH);       //Пин 7 установлен в setup()   }   else if(s=="off")   {     digitalWrite(7, LOW);   }   else{     Serial.print("Say on or off");   } } // Скорость ESP8266 в бодах: #define ESP8266_BAUD 9600  ESP8266 wifi(&EspSerial);  void setup() {   // Отладочная консоль   Serial.begin(9600);   pinMode(7, OUTPUT);       //Pin 7 установлен в режим вывода данных   // Установим скорость в бодах для ESP8266   EspSerial.begin(ESP8266_BAUD);   delay(10);     Blynk.begin(auth, wifi, ssid, pass); }  void loop() {   Blynk.run(); } 

Обратите внимание на этот фрагмент кода:

if(s=="on") …  else if(s=="off") … 

Если изменить фразу (и ключевое слово) — нужно поменять и текстовые значения, используемые в этом фрагменте. А именно, ключевое слово, включающее гирлянду, надо поместить туда, где сейчас находится строка on, а выключающее — туда, где сейчас находится строка off.

Поясню это на примере. Предположим, я решил использовать для управления гирляндой такую фразу:

I am $ 

Для включения гирлянды решено использовать слово happy, для выключения — слово sad. Это значит, что вышеприведённый код нужно будет переписать так:

if(s=="happy") …  else if(s=="sad") … 

Код нужно загрузить на Arduino UNO, запустить проект Blynk, открыть Google Assistant и попросить его включить гирлянду.

Планируете ли вы воспользоваться Blynk, IFTTT и Google Assistant в своих проектах?

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий