Professional Documents
Culture Documents
Trên trang Genk.vn có giới thiệu giải pháp điều khiển bằng giọng nói sử dụng Raspberry Pi kết hợp với
Google Home, hoặc điện thoại. Tuy nhiên, sử dụng Raspberry Pi vẫn chưa thực sự kinh tế, nó chỉ phù
hợp để làm server điểu khiển nhiều thiết bị. Nếu chỉ điều khiển 1 thiết bị hoặc điều khiển nhiều lỗ cắm
điện trên cùng một hệ thống thì sử dụng chip ESP8266 kinh tế hơn.
Trong bài hướng dẫn này, tôi hướng dẫn các bước căn bản để điều khiển module ESP8266 bằng giọng
nói với sự giúp đỡ của Google Assistant, dịch vụ IFTTT, và Adafruit IO. Tôi điều khiển ESP8266 để tắt
hoặc mở 2 rờ le, tích hợp chúng vào ổ cắm điện với chi phí khoảng 200 ngàn.
http://dientunht.blogspot.com/2018/02/lap-trinh-esp8266-esp-12e-nodemcu-su-dung-arduino.html
Linh kiện:
Ổ cắm điện.
Cài app Google Assistant lên điện thoại (Có sẵn trên chợ ứng dụng Android và iPhone).
Để điều khiển được ESP8266, bạn cần đăng ký tài khoản ở 2 dịch vụ trực tuyến:
1. Dịch vụ adafruit, bạn chọn đăng ký gói miễn phí. Đăng ký tại link : https://io.adafruit.com
2. Đăng ký dịch IFTT tại link https://platform.ifttt.com/ . Bạn phải dùng tài khoản Google Assistant
chung với tài khoản IFTTT.
Trước khi nạp chương trình cho ESP8266, bạn cần cài đặt để Arduino có thể làm việc được với ESP8266.
Các bạn tham khảo bài viết sau đây:
http://dientunht.blogspot.com/2018/02/lap-trinh-esp8266-esp-12e-nodemcu-su-dung-arduino.html
Adafruit IO là nền tảng IOT xây dựng dựa theo giao thức Message Queue Telemetry Transport (MQTT).
Đây là một giao thức truyền thông điệp (message) theo mô hình publish/subscribe (xuất bản – theo dõi),
sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không
ổn định.
Trong Adafruit IO, sau khi đã tạo tài khoản tại Adafruit IO, bạn trở lại trang home, chọn menu "Feeds"
bên trái màn hình. Chọn Actions từ menu sổ xuống và tạo 1 feed mới gọi là "onoff".
Tiếp theo, vào Dashboards, menu bên trái. Chọn mục Actions từ menu sổ, vào tạo một bảng theo dõi
mới (dashboard), đặt tên là "LightSwitch". Mở bảng theo dõi mới, bắt đầu với 1 trang trống. Nhấn biểu
tượng dấu cộng (+) màu xanh sẽ cho bạn tạo mới linh kiện. Bây giờ, chúng ta sẽ tạo 1 nút nhấn toggle.
Khi được nhắc chọn 1 feed, bạn chọn feed đã tạo trước đó, và tất cả những thứ còn lại để theo mặc
định.
Tới đây là kết thúc mọi việc với Adafruit IO. Tiếp theo kết nối ESP8266 tới MQTT Broker.
Kế nối ESP8266
Trước khi lập trình, bạn sẽ cần cài đặt thư viện Adafruit MQTT Client, vào mục quản lý thư viện của
Arduino (Sketch > Include Library > Library Manager...). Tìm thư viện với từ khóa “Adafruit MQTT
Client” và cài vào chương trình.
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
Những khai báo này dùng kết nối tới tài khoản Adafruit IO. Khóa Adafruit IO là chuỗi ký tự bạn có
thể tìm thấy bằng cách nhấn vào menu "View AIO Key" bên trái của Adafruit IO.
Tiếp theo, tạo đối tượng WiFiClient và Adafruit_MQTT_Client như là các biến toàn cục:
WiFiClient client;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Bây giờ trong hàm setup, chúng ta sẽ kết nối tới WiFi và MQTT server:
void setup() {
Serial.begin(115200);
delay(10);
Serial.println(); Serial.println();
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
mqtt.subscribe(&onoffbutton);
Bước cuối cùng, chún ta sẽ kết nối Google Assistant tới Adafruit IO MQTT Broker để điều khiển tắt mở
bằng giọng nói. Chúng ta sử dụng nền tảng IFTTT (If This Then That) có hàng trăm dịch vụ khác nhau.
Địa chỉ truy cập https://ifttt.com/my_applets . Chọn nút "New Applet" để tạo Applet điều khiển bằng giọng nói.
Chọn ("If This") để cài đặt khẩu lệnh và chọn ("Then That") để chọn feed đã tạo trước đó. Mỗi Applet
chỉ phục vụ cho 1 khẩu lệnh, nên bạn có 2 lệnh tắt, mở thiết bị thì bạn cần tạo 2 applet.
Trong "Google Assistant" chọn "Say a simple phrase" để cài đặt câu lệnh ví dụ như "Turn the light on,"
"Turn on the light," và "Switch the light on". Hiện tại Google Assistant chưa hỗ trợ tiếng Việt, nên bạn
chỉ có thể sử dụng tiếng Anh.
Phần cuối của applet là Action, phản hồi tới Trigger. Trong phần dịch vụ chọn "Adafruit", và xác định
điều khiển Action, chọn "Send data to Adafruit IO". Chọn Adafruit IO feed bạn sẽ gửi dữ liệu, trong
trường hợp này là "onoff". Nhập dữ liệu sẽ gửi, ví dụ "ON", dữ liệu này sẽ được gửi tới chip ESP8266
trong khoảng 1 giây. Tương tự, bạn tạo thêm applet để gửi lệnh "OFF" tới ESP8266.
Chạy thử
Nếu không có Google Home, bạn có thể sử dụng điện thoại cài app Google Assistant. Mở app và đọc
khẩu lệnh như đã tạo trong các applet. Phần mềm sẽ tìm kiếm và trả về lệnh theo như đã khai báo ở trên.
Nếu mọi thứ đã suôn sẻ, thiết bị của bạn sẽ hoạt động như ý bạn mong muốn.
Có những nơi bạn điều khiển bằng giọng nói không được, thì bạn cần kiểm tra một vài thứ.
Trạng thái tắt mở có thể hiện trên bảng điều khiển Adafruit IO không? Nếu không, ESP8266 chưa kết nối
tới máy chủ, các feed. Kiểm tra ESP8266 trên Serial Monitor.
Google Assistant có trả lại dữ liệu không? Nếu không, bạn cần kiểm tra tài khoản Google và tài khoản
IFTTT có cùng 1 tài khoản hay không.
Bảng điều khiển Adafruit IO không cập nhật các applet IFTTT? Nếu không, kiểm tra tài khoản Adafruit
IO và tài khoản IFTTT có kết nối không.