Hack day
0

Điều khiển thiết bị bằng giọng nói thông qua Google Assistant và ESP8266

           Điều khiển thiết bị từ xa bằng RF, bluetooth, hồng ngoại…thì quá bình thường, cảm thấy nó không công nghệ gì cao siêu lắm khi mà giờ wifi, smartphone android có khắp nơi. Chỉ cần với giọng nói của bạn với vài câu nói ra lệnh để bật hay tắt thiết bị thông qua Google Assistant có trên điện thoại Andoird, nghe có vẻ hấp dẫn hơn nhiều. Nếu bạn có Google Home thì vẫn nói câu lệnh như vậy sau khi đã làm với Google Assistant, bởi Google Home cũng chính là Google Assistant. Tuy nghiên Google Home có thể làm vài thứ khác đặc biệt chuyên dụng hơn so với Google Assistant trên điện thoại.

            Hiện tại Google chỉ hỗ trợ 1 số ngôn ngữ giao tiếp nhưng không có Tiếng Việt nhé. Nên chỉ sử dụng Tiếng Anh thôi đấy. Cụ thể thì bạn phải chuyển ngôn ngữ điện thoại sang English đi nhé, chứ để Tiếng Việt thì không thể kích hoạt được Google Assistant.
Theo như 1 số thông tin thì đến cuối năm 2018, Google mới ra bản hỗ trợ Tiếng Việt. Tuy nghiên cũng chỉ là hi vọng, còn sự thật hay không thì cứ chờ đợi nhé.

  1. Chuẩn bị:
  • 1 Kit ESP8266
  • 1 Smartphone đã bật Google Assitant (Bật cái này như thế nào thì nhờ bạn hỏi bác Google nhé)
  • 1 máy tính kết nối internet để chúng ta setup, cài đặt.
  • 1 tài khoản Adafruit IO, thằng này sẽ là server để Esp kết nối tới (Bạn tự tạo nhé)
  • 1 tài khoản IFTTT, thằng này là trung gian liên kết Google Assistant với Adafruit
  • Và bạn phải có tài khoản cho Google Assistant
  1. Cài đặt trên Adafruit

Sau khi đăng nhập, bạn phải tạo 1 Dashboard

Mình tạo 1 Dashboard tên “Demo Google Assistant

Sau khi có Dashboard, chúng ta vào Dashboard  add thêm Block. Và block chúng ta cần add đó là Toggle (như hình trên)

Sau đó chúng ta cần tạo 1 Feed mới (làm như trên hình thì mình tạo feed tên “onoff”). Tạo xong tích rồi Next.

Chúng ta cứ để mặc định là ON và OFF như vậy nhé.

Sau khi tạo Block xong thì sẽ như vậy.

Chú ý: Ở Tab VIEW AIO KEY, đây là USER mà KEY chúng ta sẽ sử dụng trong code IDE cho ESP8266 bên dưới. Nhớ để xíu nữa sử dụng.

  1. Đăng nhập và setup trên IFTTT

Bạn nhớ phải đăng nhập bằng tài khoản của Google Assistant như trên điện thoại nhé.
Cái của mình thì đăng nhập bằng Gmail của Google luôn.

Click NEW APPLET để tạo applet mới. Ở đây chúng ta sẽ tạo 2 Applet, 1 cái cho lệnh ON, 1 cái cho lệnh OFF. Mình sẽ hướng dẫn làm lệnh ON, còn lệnh OFF thì sẽ tương tự, chỉ khác vài câu lệnh.

Với mục THIS thì chúng ta sẽ chọn Google Assistant như hình dưới

Chọn “Say a simple phrase

Điền câu lệnh muốn nói như thế nào thì tùy, mình thì “turn on the light”. Điền xong thì Create Trigger.

Với mục THAT thì chọn “Adafruit” nhé

Chọn “Send data to Adafruit IO

Lúc này chúng ta chọn Feed “onoff” (Cái mà chúng ta đã tạo ở dashboard Adafruit), còn mục Data to save thì nhập “ON” nhé (Do đang làm lệnh ON thiết bị)

Tương tự, chúng ta tạo Applet mới cho lệnh OFF, thay vì “turn on the light” thì giờ sẽ là “turn off the light”. Rất dễ dàng.

Sau khi tạo 2 Applet cho 2 lệnh ON và OFF thì sẽ hiển thị như vậy.

  1. Cài đặt cho ESP8266

Đầu tiên chúng ta phải thêm thư viện của Adafruit vào IDE.

Vào Sketch->Include Library ->Library Manager,
Add thêm thư viện “Adafruit MQTT

Cấu hình chân điều khiển relay, mình sử dụng chân GPIO16 trên ESP8266 để điều khiển.

Link download: Test_GoogleAssistant_ESP8266.ino

Nội dung code:

//-----------------------TAPIT - 06/2018---------------------------
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
 
#define WIFI_SSID "Ten wifi"
#define WIFI_PASS "passwifi"
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "Username"
#define MQTT_PASS "Active Key"
 
//Set up MQTT and WiFi clients
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
 
//Set up the feed you're subscribing to
Adafruit_MQTT_Subscribe onoff = Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME "/f/onoff");
 
void setup()
{
  Serial.begin(9600);
  //Connect to WiFi
  Serial.print("\n\nConnecting Wifi... ");
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }
 
  Serial.println("OK!");
  //Subscribe to the onoff feed
  mqtt.subscribe(&onoff);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
}
 
void loop()
{
  MQTT_connect();
  //Read from our subscription queue until we run out, or
  //wait up to 5 seconds for subscription to update
  Adafruit_MQTT_Subscribe * subscription;
  while ((subscription = mqtt.readSubscription(5000)))
  {
    //If we're in here, a subscription updated...
    if (subscription == &onoff)
    {
      //Print the new value to the serial monitor
      Serial.print("onoff: ");
      Serial.println((char*) onoff.lastread);
     //If the new value is  "ON", turn the light on.
     //Otherwise, turn it off.
      if (!strcmp((char*) onoff.lastread, "ON"))
      {
        //Active low logic
        digitalWrite(LED_BUILTIN, LOW);
      }
      else
      {
        digitalWrite(LED_BUILTIN, HIGH);
      }
    }
  }
 
  // ping the server to keep the mqtt connection alive
  if (!mqtt.ping())
  {
    mqtt.disconnect();
  }
}
 
void MQTT_connect()
{
  int8_t ret;
  // Stop if already connected.
  if (mqtt.connected())
  {
    return;
  }
  Serial.print("Connecting to MQTT... ");
  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) // connect will return 0 for connected
  {
       Serial.println(mqtt.connectErrorString(ret));
       Serial.println("Retrying MQTT connection in 5 seconds...");
       mqtt.disconnect();
       delay(5000);  // wait 5 seconds
       retries--;
       if (retries == 0)
       {
         // basically die and wait for WDT to reset me
         while (1);
       }
  }
  Serial.println("MQTT Connected!");
} //END CODE

Sau khi chỉnh lại xong các thông số thì chúng ta build và nạp code cho ESP8266. Cuối cùng chạy thử thôi nào    

  1. Kết luận:

Trên đây là bài hướng dẫn để chúng ta kết hợp Google Assistant + Adafruit + ESP8266 để điều khiển thiết bị thông qua giọng nói, tuy còn đơn giản với 1 số câu nói quá quen thuộc. Do Google mới chỉ hỗ trợ tiếng Anh mà chưa có Tiếng Việt, nhưng cũng nhờ cái này các bạn có thể nâng cao luyện thêm tiếng anh, nói nhiều hơn, tự tin hơn. Nếu bạn có điều kiện mua được Google Home thì bạn nói trên Google Assistant hay Google Home đều như nhau cả nhé. Trong bài viết có gì sai sót mong các bạn bỏ qua hay có gì cần hỗ trợ thì cứ phản hồi cho mình biết nhé.

Video demo cho các bạn xem thử:

Cảm ơn các bạn đã xem bài viết này, chúc bạn thành công!

Nguồn: tapit.vn

Tags:

More Similar Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed

Check Featured Posts
Menu