Голосовое включение компьютера с помощью Google Home

Этот проект использует библиотеку Blynk и проект IFTTT для подключения к умной колонке Google Home. В этой статье, вы можете узнать, что такое Blynk. Ниже приведен список комплектующих, которые необходимы для реализации данного проекта:

  • плата NodeMCU
  • релейный модуль
  • макетная плата (опционально)

Настройка Blynk

Следуем шагам со скриншотов выше. Сначала вы должны установить приложение на свой смартфон. Когда это приложение установлено, откройте его и создайте учетную запись. Если приложение спросит к какому серверу вы будете подключаться, выберите стандартный сервер Blynks. Когда ваша учетная запись будет создана, нажмите новый проект. Установите следующие настройки(1):

  • Project name: name
  • Choose device: NodeMCU
  • Connection type: WiFi
  • Theme: theme

Затем создайте проект. Теперь у вас есть большое рабочее пространство и три кнопки сверху. Нажмите на рабочую область, чтобы открыть окно виджета (widget box). Здесь вы должны выбрать кнопку. Вас автоматически перебросит обратно на рабочую область, и вы сможете увидеть виджет кнопки. Нажмите на виджет, чтобы открыть настройки кнопки. Настройте параметры следующим образом (2):

  • Name: D1
  • Output: Pin(D1) 1_0
  • Mode: Push
  • ON/OFF Labels: Standart settings

Когда вы закончите, нажмите кнопку ОК в верхнем правом углу. Снова, нажмите на рабочую область, чтобы открыть окно виджета, и выберите виджет кнопки. Нажмите на виджет, откройте кнопку настройки. Настройте параметры следующим образом (3):

  • Name: Start / Stop
  • Output: Pin(V1) 0_1
  • Mode: Switch
  • ON/OFF Labels: Standart settings

Когда вы закончите, нажмите кнопку ОК в правом верхнем углу. Снова нажмите на рабочую область, чтобы открыть окно виджета, и выберите виджет кнопки. Нажмите на виджет, откройте кнопку настройки. Настройте параметры следующим образом (4):

  • Name: Restart
  • Output: Pin(V2) 0_1
  • Mode: Switch
  • ON/OFF Labels: Standart settings

Когда вы закончите, нажмите кнопку ОК в правом верхнем углу. На этом мы закончили настройку, нажмите на кнопку Настройки (Settings, находится в верхнем правом углу рабочего пространства). Прокрутите вниз до Auth Token, здесь вы должны нажать E-Mail, и токен будет отправлен на ваш почтовый ящик. Затем нажмите кнопку ОК в верхнем правом углу. Затем справа от кнопки настроек вы должны нажать кнопку воспроизведения (Play), после чего появится сообщение «(Имя проекта) не в сети» (Project Name is offline).

Настройка IFTTT

Сначала мы идем на сайт IFTTT  https://ifttt.com/my_applets. Нажимаем на New applet (Новый апплет). Затем кликаем на +this. Ищем помощника Google — «Google Assistant«. Выбираем триггер «Say a Simple Phrase» (Скажи простую фразу) и устанавливаем фразы как на картинке ниже:

Затем кликните на +that и ищем веб-хуки webhooks:

Затем открываем приложение CMD на вашем компьютере и вводим «ping blynk-cloud.com» (без кавычек). Запоминаем указанный IP-адрес. Затем снова переходим в браузер и настраиваем апплет Webhook:

  • ***URL: http://IP:8080/TOKEN/update/V1?value=1
  • Method: GET
  • Content type: Application/json
  • Body: Nothing

***вместо IP пишем запомненный выше IP-адрес

Перед следующим шагом убедитесь, что у вас в Arduino IDE установлены библиотеки NodeMCU и Blynk. Если нет, то установите их. Пример установки можно взять из статьи Как подключить библиотеку к Arduino?

Затем, откройте программное обеспечение Arduino, а затем в верхнем углу перейдите в Инструменты -> Плата -> NodeMCU 1.0 (модуль ESP-12E). У кого английский вариант — переходим сюда: Tools -> Board -> NodeMCU 1.0 (ESP-12E Module).

Теперь вы можете подключить NodeMCU к компьютеру (с помощью USB-кабеля). Затем откройте окно программы Device Manager и под портами найдите «Silicon Labs».

Затем снова откройте программное обеспечение Arduino и перейдите в: Tools -> Port -> Com port (выбор номер порта, соответствующий NodeMCU).

Листинг проекта

//links with Blynk Libaries for NodeMCU
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

//Authentication
char auth[] = "TOKEN";                              //Your blynk token
char ssid[] = "SSID";                               //Your wifi SSID
char pass[] = "PASS";                               //Your wifi password

//On startup
void setup()
{
  Serial.begin(9600);                               //starting the Debug com (Open it by clicking on Tools -> Serial Monitor)
  Blynk.begin(auth, ssid, pass);                    //Authentication with Blynk
  pinMode (D1, OUTPUT);                             //Enables Pin D1
  digitalWrite(D1, !digitalRead(D1));               //Sets state of Pin D1 to the opposite on start *Remove if Relay is on, on start*
  }


//Turn on script
BLYNK_WRITE(V1) {                                   //Start of Script
   if (param.asInt()==1){                           //Checks if Virtual port V1 is active, and if it is, it will run the script
    digitalWrite(D1, LOW);                          //Sets the state of port D1 to LOW
    delay(300);                                     //Delay for 3 miliseconds
    digitalWrite(D1, HIGH);                         //Sets the state of port D1 to HIGH
    Blynk.virtualWrite(V1, LOW);                    //Sets Virtual port V1 to be disabled
    }                                               //end of "if true" script
}                                                   //End of script

//Force turn off script
BLYNK_WRITE(V2) {                                   //Start of Script
   if (param.asInt()==1){                           //Checks if Virtual port V2 is active, and if it is, it will run the script
    digitalWrite(D1, LOW);                          //Sets the state of port D1 to LOW
    delay(6000);                                     //Delay for 3 miliseconds
    digitalWrite(D1, HIGH);                         //Sets the state of port D1 to HIGH
    Blynk.virtualWrite(V2, LOW);                    //Sets Virtual port V2 to be disabled
    }                                               //end of "if true" script
}                                                   //End of script

//When running
void loop()
{
  Blynk.run();                                      //Start blynk connection
}

Обратите внимание, что есть три переменные, которые вы должны заполнить:

Строка 7 — Auth Code (код авторизации): замените TOKEN токеном, который был отправлен на ваш E-Mail на одном из шагов выше.
Строка 8 — SSID: замените SSID на свой WiFi SSID.
Строка 9 — Password (пароль): замените PASS своим WiFi-паролем.

Когда вы изменили переменные, вы можете нажать кнопку загрузки в левом углу Arduino IDE. Теперь вам нужно просто подождать, пока программа загрузится.

Сборка устройства

Теперь мы готовы подключить реле к Arduino. Убедитесь, что вы отключили Arduino, подключая пины. На NodeMCU нам нужны три контакта:

  • Штырь 5 вольт — Vin
  • Штырь заземления — GND
  • Цифровой вывод — D1

Подключите контакт Vin к положительной клемме на реле (он, вероятно, будет помечен как VCC или +)
Подключите контакт GND к разъему заземления на реле (он, вероятно, будет помечен как GND или )
Подключите контакт D1 к управляющей клемме на реле (он, вероятно, будет помечен как IN)

Теперь вы можете подключить контакты к выходу. Подключите кнопку вашего компьютера к NC (нормально замкнутый или закрытый) и COM (общий).

Итог

Теперь нужно подождать около 12-24 часа, а затем можно попытаться сообщить Google Home вашу команду. Если вы хотите иметь возможность принудительно отключить компьютер (эмуляция удерживает кнопку нажатой в течение 6 секунд), то Вы должны сделать еще один апплет. Единственное, что вы меняете, — это фразы и URL-адрес веб-хука:

http://IP:8080/TOKEN/update/V2?value=1

Оцените статью
50 - столько SQL запросов к базе.
2,048532 - за столько сгенерировалась страница.