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

Материалы

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

  • Реле.
  • 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 в своих проектах?

Let’s block ads! (Why?)

Read More

Recent Posts

VK купила 40% билетной платформы Intickets.ru

VK объявляет о приобретении 40% компании Intickets.ru (Интикетс). Это облачный сервис для контроля и управления продажей билетов на мероприятия. Сумма…

13 часов ago

OpenAI готовится запустить поисковую систему на базе ChatGPT

OpenAI готовится запустить собственную поисковую систему на базе ChatGPT. Информацию об этом публикуют западные издания. Ожидается, что новый поисковик может…

22 часа ago

Роскомнадзор рекомендовал хостинг-провайдерам ограничить сбор данных с сайтов для иностранных ботов

Центр управления связью общего пользования (ЦМУ ССОП) Роскомнадзора рекомендовал компаниям из реестра провайдеров ограничить доступ поисковых ботов к информации на российских сайтах.…

2 дня ago

Apple возобновила переговоры с OpenAI и Google для интеграции ИИ в iPhone

Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…

7 дней ago

Российская «дочка» Google подготовила 23 иска к крупнейшим игрокам рекламного рынка

Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…

7 дней ago

Google завершил обновление основного алгоритма March 2024 Core Update

Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…

1 неделя ago