Điều khiển thiết bị bằng giọng nói thông qua Google Assitant sử dụng ESP8266, Adafruit, IFTTT

25 Tháng 05 2019 | Đăng bởi: Cao Thanh Hùng

 

Như đã hứa hôm nay mình sẽ hướng dẫn các bạn cách sử dụng Google Assistant để điều khển thiết bị thông qua Web server io.adafruit.com.

Nếu bạn chưa biết cách cài đặt ESP8266 trên Arduino IDE thì các bạn xem bài viết bên dưới nhé.

Tạo tài khoản IFTTT

Trong bài viết  mình đã hướng dẫn chi tiết cách để tạo tài khoản trên IFTTT nên phần này các bạn xem lại bài trước để hiểu rõ hơn nhé.

  • Sau khi đăng nhập thành công các bạn Click vào "My Applets" và chọn "New Applet" để tạo một dự án mới.

  • Bấm vào  + this. 

  • Tìm đến Google Assistant và bấm kết nối. 

  • Chọn thẻ "Say a simple phrase" và các bạn điền đầy đủ các thông tin bên dưới nhé.

 

 

  • What do you want to say?: Chúng ta đặt tên câu lệnh cần nói ở đây mình đặt là "turn on fan".

  • Ngoài ra ở 2 mục tiếp theo các bạn có thể đặt thêm những câu lệnh khác để có thể bật/tắt thiết bị của mình.

  • What do you want the Assistant to say in the response?: Ở phần này là câu phản hồi từ Google Assistant khi mình thực hiện lệnh vừa nói.

Cấu hình Adafruit

Tiếp theo ta chọn  + That.

 

 

 

Tìm kiếm Adafruit và bấm vào kết nối.

 

 

Tiếp theo các bạn nhấn vào "Send data to Adafruit IO".

 

 

Tiếp theo các bạn vào website io.adafruit.com để tạo một dự án mới trên này đã nhé.

Sau khi đã đăng nhận thành công, các bạn vào "Feeds - Actions - Create a New Feed" để tạo một Feed mới nhé.

 

 

 

  • Name: Các bạn đặt tên cho dự án ở đây mình sẽ đặt là "điều khiển quạt".

  • Description: Phần mô tả thông tin dự án bạn đang thực hiện (phần này không bắt buộc) và nhấn Create để hoàn thành.

 

 

 

Bạn kích chọn vào điều khiển quạt để quản lý Feed nhé.

 

 

Bây giờ bạn quay lại trang IFTTT rồi bấm F5 thì sẽ được như thế này.

Nó tự nhận Feed "điều khiển quạt" mà ta vừa mới tạo trên Adafruit.

Các bạn điền số "1" vào ô "Data to save" ("1": trạng thái bật ) và bấm nút Create action.

 

Bạn nhấn Finish để hoàn thành.

 

 

 

Tương tự các bạn tiếp tục tạo thêm cho phần tắt quạt "turn off fan". Ở mục "Data to save" các bạn sẽ điền là "0" (trạng thái tắt) nhé.

Sau khi đã tạo thành công các bạn sẽ nhận được như hình bên dưới.

 

 

Để kiểm tra các bạn mở Google Assitant trên điện thoại và nói "Ok Google" ra lệnh bật quạt "turn on fan", nếu Google Assistant  phản hồi lại "ok quạt đã được bật" thì bạn đã thành công.

Giá trị được trả về khi chúng ta ra lệnh bật tắt thiết bị, giá trị này được lưu trên Adafruit IO.

 

 

Dashboards Adafruit

Bây giờ chúng ta sẽ tạo một Dashboards (bảng điều khiển) để điều khiển trực tiếp trên Adafruit IO.

Chọn Dashboards > Actions > Create a New Dashboard.

 

 

Chúng ta đặt tên cho bảng điều khiển và mô tả dự án đang thực hiện.

 

 

Tiếp theo bạn chọn vào Arduinokit.vn để đến phần quản lý.

 

 

Chọn dấu  để tạo Block mới và chọn Toggle như hình.

 

 

Tiếp theo vào Group/Feed đã tạo (Create a New Feed) và nhấn Next step.

 

Ở mục Block Title là Arduinokit.vn bạn ghi gì cũng được nhé.

  • Button On Text: 1 (trạng thái bật), các bạn lưu ý điền trùng với mục "Data to save" lúc nãy.

  • Button Off Text: 0 (trạng thái tắt).

Tiếp theo nhấn Create Block.

 

Sau khi tạo thành công Block sẽ hiện như thế này.

 

Active Key Adafruit

 Bạn chọn Dashboards/Arduinokit.vn chọn cái chìa khóa màu vàng.

 

 

 

 

Chúng ta quan tâm đến Username và Active Key.

Phần này chúng ta Copy và cho vào trong Code nhé.

 

 

Sơ đồ đấu nối

NodeMCU ESP8266

Relay

Vin

5V

GND

GND

D0

IN

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
NodeMCU ESP8266 1
Dây cắm 3
Relay 1
Bóng đèn 220V 1

 

Code:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client(espClient);
void callback(char* topic, byte* payload, unsigned int length) {
  if ((char)payload[0] == '1') {
    digitalWrite(D0, HIGH);
  } else {
    digitalWrite(D0, LOW);
  }
}
void setup() {
  digitalWrite(D0, LOW);
  pinMode(D0, OUTPUT);
  WiFi.begin("Nha Tro 4 ", "nguyennam");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  client.setServer("io.adafruit.com", 1883);
  client.setCallback(callback);
  client.connect("Arduinokit.vn", "hu123", "62fd797b121e4f2f89353f0711393257");
  client.subscribe("hu123/feeds/điều khiển quạt");
}
 
void loop() {
  client.loop();
}

Thư viện

Download thư viện "PubSubClient.h": Tải ngay

Giải thích Code

WiFi.begin("wifi router name", "wifi router pass");

  • "wifi router name "Tên Wifi.

  •  "wifi router pass"Mật khẩu Wifi.

 

client.connect("Arduinokit.vn", "hu123", "62fd797b121e4f2f89353f0711393257");

  • Tham số đầu tiên bạn đặt thế nào cũng được mình đặt là "Arduinokit.vn"

  • Username: "hu123" 

  • Active key: "62fd797b121e4f2f89353f07113xxxxx"

 

client.subscribe("hu123∕feeds∕điều khiển quạt");

Các bạn làm theo cú pháp: "username/feeds/feedname"

  • "username": Tên người dùng.

  • "feeds": cái này các bạn để mặc định.

  • "feedname": tên Feed mà bạn đã đặc cho dự án.

Video hướng dẫn

Lời kết

Tham gia cộng đồng Arduino KIT

  • Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé.

  • Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino.

Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

 

Chúc các bạn thành công.

Trân trọng.

Bài viết liên quan

Viết bình luận: