Code:
#define BLYNK_PRINT Serial #include
#include
char auth[] = “90e6fc3ed332435587af6799fb58de88”; // Your WiFi credentials. // Set password to “” for open networks. char ssid[] = “CAFE GALAXY_2.4G”; char pass[] = “xxxxxx”; void setup() { // Debug console Serial.begin(9600); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); }
Step 3: Connecting to Google Assistant Through IFTTT
In this last step, we’ll connect our Google Assistant to the Adafruit IO MQTT Broker to allow us to control the lights with voice commands. To do this, we’ll use the IFTTT (If This Then That) platform, which allows hundreds of different services to trigger actions in a variety of other services.
After you’ve set up your account and taken a look around, you’ll need to go to the Maker’s Platform to start making your own applets. Select “Private” from the left hand menu, then click the blue “New Applet” button. This will take you to the applet editor, where you choose triggers (“If This”) and the subsequent actions (“Then That”).
For your trigger, choose “Google Assistant” as the service, then select “Say a simple phrase” from the drop down menu of specific triggers. This will bring up a new list of fields to fill in, including variations of the activation phrase, the Google Assistant’s response, and the language. For my activation phrases, I chose “Turn the light on,” “Turn on the light,” and “Switch the light on”.
The next section is the filter, which allows your applet to do different things based on either global variables, like time of day, or manipulate user input with a simple Javascript-like language. This is a more advanced feature that I may come back to in a later tutorial, but for now you don’t need to worry about it.
The final part of your applet is the Action, what your applet does in response to the Trigger. For the service, choose “Adafruit”, and for the specific Action, choose “Send data to Adafruit IO”. This will bring up two fields that you need to fill in. The first should be replaced with the name of the Adafruit IO feed you want to send data to, in this case “onoff”. The second field is the data to send. For this applet, we’ll send “ON”, which is the string our ESP8266 is waiting for.
Now all that’s left is to add the title and description. Since this is a private applet, they don’t really matter that much, but the IOFTTT standard is to have the title be a brief description of what the applet does while the description is a more in depth look at how the applet works.
Once you have that applet finished, create a second one for turning the lights “OFF”. You should now see two applets on your IFTTT Platform page. To activate them, go to the My Applets page on the main IFTTT site, click on the applet card, and click set the on-off toggle switch to “On”. If you haven’t already, IFTTT will ask to connect to your Adafruit IO and Google Assistant accounts. Allow the accounts to be linked, then turn on the second applet as well.
Once both applets are turned on, the setup should be complete!
Step 4: Testing and Troubleshooting
Now all that’s left is to test the system. To do this, you’ll need a device with the Google Assistant enabled. This is built into the latest versions of the Android operating system, as well as the Google Home series of devices. If you don’t have either of these, the Google Allo messaging app, available for Android and iOS, also includes the Google Assistant. Start up the assistant, make sure it’s logged into the proper account, and say the activation phrase you used in the previous step. After a 2-5 second delay, the light on your ESP8266 board should switch on or off. Try the other phrase, and make sure it works too.
Congratulations! You’ve just made a internet-connected, voice controlled light! Hopefully this tutorial has provided enough of a foundation that you can start making your own variety of voice-controlled IOT projects. Have fun!
Troubleshooting
There are a number of places that the connection between your voice and the light can break down. If the light isn’t changing when your speak, there are a few things you should check.
- Does the light change when you toggle the switch on the Adafruit IO dashboard? If not, your ESP8266 is either not connecting to the server, not subscribing to the feed, or not checking for the correct string values. Check the Serial Monitor output of your ESP8266 device to find out which.
- Is the Google Assistant hearing you properly? If you use the Google Allo app, you can see what the Assistant heard, or you can directly type the phrase you want it to interpret.
- Is the Google Assistant responding with the correct phrase? If not, then your Google account and your IFTTT account aren’t connected. Make sure you’re using the same Google accounts for the assistant and IFTTT.
- Is the Adafruit IO dashboard not updating when the IFTTT applet triggers? If not, then your Adafruit IO account and your IFTTT account aren’t connected. Double check on IFTTT to make sure that your accounts have been linked.
Participated in the Wireless Contest
Introduction: ESP8266 Voice Control With Google Assistant and Adafruit IO
This is a simple tutorial showing how to control your ESP8266 based projects using voice commands and the Google Assistant. For the purposes of this tutorial, I’ll simply be turning the LED built in to my ESP8266 breakout board on and off, but this could be used to trigger any number of events. If it can be controlled by an Arduino, it can now be controlled by you voice!
Materials:
The only physical materials required are:
- An ESP8266 breakout board (I used the ESP-12E from Acrobotics)
- A Google Assistant enabled device (Apps available for Android and iPhone, or Google Home)
- A computer with access to the Internet
While these are the only physical materials required, this tutorial also requires that you set up accounts on various websites, and install the Arduino IDE.
- Adafruit IO – Create a free account.
- IFTTT – Create a free (“Maker”) account.
- Google – The same account you’re using the Google Assistant for.
Setup:
Before starting, you should set up the Arduino IDE to program the ESP8266. There are already a ton of tutorials for this, so I won’t repeat all the steps here. This is the one I used to set up my IDE.
Đặt câu lệnh thực thi trên Google Assistant
Chọn thẻ “Say a simple phrase.”
- 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”.
- 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.
Bạn sẽ học được gì
- Có kiến thức cơ bản về Robotics
- Chế tạo Robot dò đường thông minh
- Đánh thức nhà khoa học bên trong bạn
- Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
- Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
- Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế
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 | Shopee |
NodeMCU ESP8266 | Mua ngay | |
Dây cắm (Cái – Cái) | Mua ngay | |
Relay 5V/ 1 kênh | Mua ngay |
Tutorial video on Smart Home with Google & Alexa
In the tutorial video, I have covered the following steps in detail.
- Control 3 relays with Google Assistant, Alexa, and switches.
- Create an account and add devices in Sinric Pro
- Programming the NodeMCU with Arduino IDE
- Connect Sinric Pro and add IoT devices with Amazon Alexa App.
- Connect Sinric Pro and add IoT devices with Google Home App.
PCB for the NodeMCU Smart Home
If you want, you can also use this PCB to make the circuit compact and give the project a professional look.
I hope you like this Smart house IoT projects idea with the NodeMCU ESP8266.
Click Here for more such ESP8266 projects.
Please do share your feedback on this IoT project. Thank you for your time.
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.
Step 1: FTDI Cable to ESP8266
To communicate between ESP8266 and your PC, wou will have to make a FTDI to ESP8266 adapter.
- You will have to build the circuit shown in the linked image if you have a 5V FTDI cable:
- If you have a 3.3V FTDI cable, you can avoid the 78xxl chip, and plug 3.3V directly to ESP8266.
- The left button is the “programing” button and the right one is the “reset” button
- When you want to put it in “programing” mode, you have to keep the two buttons pressed and first release the reset button, and after that, the second one.
- The program button will be used in this project to turn on and off the built-in LED manually.
Lời kết
Thật thú vị phải không các bạn, qua bài hôm nay các bạn có thể thực hiện cho mình một dự án nhỏ ngay trong ngôi nhà của mình bằng việc sử dụng Google Assistant và trong chuỗi bài viết về ESP8266 với Google Assistant bằng ngôn ngữ Tiếng Việt trong bài tiếp theo mình sẽ hướng dẫn các bạn các thực hiện trên Web Server của Adafruit các bạn chờ xem nhé.
Trong quá trình thực hiện mọi thắc mắc các bạn nhớ Comment bên dưới bài viết mình sẽ trả lời trong thời gian sớm nhấ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ớ Like và Share cho mọi người cùng học nhé. |
Chúc các bạn thành công.
Trân trọng.
Đ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é.
- 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
- 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.
- Đă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.
- 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:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
//———————–TAPIT – 06/2018————————— #include #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 😀
- 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!Xem thêm: Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32Người viết: Huỳnh Tấn Lĩnh
Điều khiển thiết bị bằng giọng nói thông qua Google Assitant sử dụng ESP8266, Adafruit, IFTTT
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é.
Step 1: Setting Up Adafruit IO
Adafruit IO is an IOT platform built around the Message Queue Telemetry Transport (MQTT) Protocol. MQTT is a lightweight protocol that allows multiple devices to connect to a shared server, called the MQTT Broker, and subscribe or write to user defined topics. When a device is subscribed to a topic, the broker will send it a notification whenever that topic changes. MQTT is best suited for applications with low data rates, strict power constraints, or slow Internet connections.
In addition to providing the MQTT Broker service, Adafruit IO also allows you to set up dashboards that let you directly manipulate or view the current value of each topic. Since it can be accessed from a web browser, it makes it the ideal hub for monitoring and controlling all of your various IOT projects.
After creating your Adafruit IO account, you should be taken to the homescreen. Select “Feeds” from the left-hand menu. Click the Actions drop-down menu, and create a new feed. I called mine “onoff”.
Next, go to Dashboards in the left-hand menu. Click the Actions drop-down menu, and create a new dashboard. I called mine “LightSwitch”. Open the new dashboard, and you should be taken to a mostly blank page. Pressing the blue + button will let you add new UI components to the dashboard. For now, all we’ll need is a toggle button, which should the first option. When prompted to choose a feed, select the one you just made, and keep the defaults for the rest of the settings.
That’s all for now on the Adafruit IO end of things. Next step is connecting your ESP8266 to the MQTT Broker.
Step 3: Setting Up GBridge
- Go to https://about.gbridge.io/
- Register an account
- Login to your account
- Create a new device
- Press Add.
-
In your device list, you should have your new device listed.
-
You will need the two feeds address for later.
-
To connect Google Assistant, you can follow the guide available in gBridge documentation: https://doc.gbridge.io/firstSteps/gettingStarted.html
Code:
#include
#includeWiFiClient 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.
Đăng nhập và kết nối với IFTTT
Việc kết nối và điều khiển các thiết bị từ ESP8266 với Blynk thật sự dễ dàng. Nhưng câu hỏi đặt ra ở đây làm sao để Blynk hiểu được những câu lệnh như bật đèn, tắt đèn… để truyền đến NodeMCU ESP8266 và thực thi hành động. Vì thế để giải quyêt vấn đề này chúng ta cần có một trang Web làm trung gian và IFTTT là một lựa chọn tốt cho dự án này.
Bước đầu tiên chúng ta đăng nhập vào Web IFTTT để đăng ký tài khoản ở đây mình đăng ký bằng tài khoản Google các bạn có thể đăng ký bằng Facebook.
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 kiếm đến Google Assistant và bấm kết nối.
Tạo tài khoản IFTTT
Trong bài viết Điều khiển thiết bị bằng giọng nói thông qua Google Assistant Tiếng Viết sử dụng ESP8266, Blynk và IFTTT 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.
Điều khiển thiết bị bằng giọng nói thông qua Google Assistant Tiếng Viết sử dụng ESP8266, Blynk và IFTTT
Trong bài viết hôm nay mình sẽ hướng dẫn các bạn cách sử dụng trợ lý ảo Google Assistant Tiếng Việt để bật/tắt các thiết bị trong gia đình và điều khiển trực tiếp thông qua App Blynk.
Để thực hiện dự án chúng ta cần một NodeMCU ESP8266 các bạn có thể tìm mua ở đây nhé. Xem ngay
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ớ Like và Share cho mọi người cùng học nhé. |
Chúc các bạn thành công.
Trân trọng.
Sau khi đã xây dựng thành công Fulfilment ở phần trước và triển khai lên Cloud Functions, trong phần này mình sẽ hướng dẫn các bạn cách liên kết Google Assistant với Fulfilment, sau đó mình sẽ hướng dẫn các bạn lập trình ESP8266 để kết nối Firebase Realtime Database, xử lý chuỗi JSON để nhận dữ liệu điều khiển từ Google Assistant.
Phần 4: Liên kết Actions với Fulfillment và lập trình ESP8266
1. Cấu hình Fulfillment và Account linking
-
Đầu tiên truy cập vào Firebase Console sau đó chọn project đã tạo ở Google Console (sẽ được tự đồng bộ qua) và chọn Functions để vào danh sách địa chỉ các function đã deploy ở phần trước để chuẩn bị cho các bước liên kết bên dưới. Các địa chỉ nằm ở cột Trigger có dạng:
-
https://us-central1-
.cloudfunctions.net/fakeauth -
https://us-central1-
.cloudfunctions.net/faketoken -
https://us-central1-
.cloudfunctions.net/smarthome
-
https://us-central1-
- Mở một tab trình duyệt khác, truy cập vào Google Actions Console và chọn project đã tạo.
-
Chọn Develop -> Actions, điền vào ô Fulfillment địa chỉ của server smarthome có dạng https://us-central1-
.cloudfunctions.net/smarthome và chọn Save.
-
Chọn Develop -> Account linking và làm theo trình tự:
- Mục Account creation, tick chọn No và bấm Next
- Mục Linking type, chọn OAuth và Authorization code sau đó bấm Next
- Mục OAuth Client information điền như sau và chọn Next:
- Mục Configure your client để trống và chọn Next.
- Mục Testing instruction, điền No authentication và chọn Save để lưu các cấu hình
- Mục Account creation, tick chọn No và bấm Next
- Chọn Test để kích hoạt chức năng test project, sau đó rê chuột vào icon laptop như để chắc chắn đã kích hoạt thành công sẽ hiện thông báo Enabled:
2. Liên kết với Google Assistant
- Đầu tiên, hãy chắc chắn là điện thoại của bạn đã được hỗ trơ Google Assistant bằng cách thử gọi: “OK Google hoặc Hey Google!“
- Tải ứng dụng Google Home từ cửa hàng CH Play và mở ứng dụng.
- Chọn Add (+) -> Set up device -> Have something already set up
- Ở danh sách các hãng thiết bị ở mục Add new, sẽ tìm thấy project của chúng ta với tên chính là Invocation đã đặt, sau đó kick chọn và đợi vài giây để ứng dụng liên kết, nếu thành công sẽ thấy xuất hiện ở mục linked services.
- Sau khi liên kết thành công, quay trở về giao diện chính sẽ thấy có thiết bị tên “tapit light” xuất hiện.
3. Chạy ứng dụng:
Sau khi đã hoàn thành các bước trên, bây giờ sử dụng Google Assistant lần lượt truy vấn các câu lệnh:
“OK Google, turn on smart light”
“OK Google, changing smart light to 75%”
“OK Google, changing smart light to blue”
Các câu lệnh truy vấn thành công, dữ liệu sẽ được cập nhật lên Firebase Realtime Database theo thời gian thực, có thể quan sát bằng cách mở Firebase Console và chọn Database.
4. Lập trình ESP8266
ESP8266 sẽ kết nối đến Firebase Realtime Database và sử dụng phương thức Stream để đợi dữ liệu điều khiển từ người dùng theo thời gian thực. Các bạn tải chương trình mẫu trong thư mục ESP8266 ở đây, ESP8266 sẽ nhận được dữ liệu khi người dùng điều khiển: on/off, đổi độ sáng và đổi màu sắc. Dữ liệu nhận được sẽ in ra Serial, nếu là on/off thì sẽ điều khiển LED GPIO16.
Chương trình gồm hai quá trình chính đó là:
- Khi kết nối đến firebase lần đầu, sẽ nhận tất cả dữ liệu cuối cùng để thực hiện quá trình đồng bộ ban đầu:
- Khi có dữ liệu mới là /Color hoặc /OnOff, sẽ nhận được dữ liệu:
Nhóm TAPIT IoTs
Xem thêm: Video youtube hướng dẫn thực hiện ứng dụng
Xem thêm: Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
In this IoT project, I have explained how to make Smart Home with Google Assistant and Alexa using NodeMCU ESP8266 and Sinric Pro. With this NodeMCU ESP8266 project, you can control 3 home appliances with Google Assistant, Alexa, and manual switches. You can also control the relays from Google Home and Amazon Alexa App from anywhere in the world. You can control the relay module from the manual switches if there is no internet available.
And you don’t need any Google Nest or Amazon Echo Dot devices for this voice control home automation project.
With this home automation project, you can control & monitor the real-time feedback of the relays in the Google Home and Alexa App from anywhere in the world. If the WiFi is available, the NodeMCU will automatically connect with the Wi-Fi.
For this project, I have used all the FREE tools. So if you follow all steps, you can easily make this Smart Home System with Google Home and Amazon Alexa to control the appliances with voice commands.
Table of Contents
Code for NodeMCU home automation system
// Uncomment the following line to enable serial debug output //#define ENABLE_DEBUG #ifdef ENABLE_DEBUG #define DEBUG_ESP_PORT Serial #define NODEBUG_WEBSOCKETS #define NDEBUG #endif #include
#include
#include "SinricPro.h" #include "SinricProSwitch.h" #include
Enter the APP KEY and APP SECRET with Wi-Fi name and Wi-Fi password in the code.
You can get the APP KEY and APP SECRET under the Credentials menu in Sinric Pro
#define WIFI_SSID "YOUR-WIFI-NAME" #define WIFI_PASS "YOUR-WIFI-PASSWORD" #define APP_KEY "YOUR-APP-KEY" #define APP_SECRET "YOUR-APP-SECRET"
Also, enter the device id in the code. You will find the Device ID from the Devices menu.
//Enter the device IDs here #define device_ID_1 "SWITCH_ID_NO_1_HERE" #define device_ID_2 "SWITCH_ID_NO_2_HERE" #define device_ID_3 "SWITCH_ID_NO_3_HERE" #define device_ID_4 "SWITCH_ID_NO_4_HERE"
**When you add a device in Sinric Pro, a unique ID is assigned to that device. If you create 3 devices, then there will be 3 unique device IDs.
As I have used the free Sinric pro account, so I have entered the 3-device IDs. (Sinric Pro gives 3 devices for FREE)
Uncomment the following line if you use pushbuttons instead of toggle switches.
//#define TACTILE_BUTTON 1
After uploading the code to NodeMCU, please refer to the following articles for connecting the Sinric Pro Account with Amazon Alexa and Google Home App.
After doing all these steps, now you control the appliances with Google Assistant and Alexa.
Program NodeMCU with Arduino IDE
In the Tutorial video, I have explained all the steps to program the NodeMCU using Arduino IDE.
- Update the Preferences –> Aditional boards Manager URLs: https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Then install the ESP8266 board from the Board manager or Click Here to download the ESP8266 board.
- Download the required libraries from the following links:
- Sinric Pro by Boris Jaeger (Download Sinric Pro examples for ESP8266 & ESP32)
- WebSockets by Markus Sattler (minimum Version 2.3.5)
- ArduinoJson by Benoit Blanchon (minimum Version 6.12.0)
Click Here to visit the GitHub page of Sinric Pro for more details.
**Please download the latest version of the libraries from the given links. Then install the libraries at Arduino IDE – Sketch – Include Library – Add Zip Library.
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.
Step 4: Getting Adafruit MQTT Library to Work With GBridge
The Adafruit MQTT library will be used to communication between the ESP866 and gBridge.io
- In Arduino IDE, Go to Tools -> Library Manager
- Install Adafruit MQTT Library
- Enter informations in the first part of the code and upload it. You shoud be up and running.
/************************* WiFi Access Point *********************************/#define WLAN_SSID “Your SSID name”#define WLAN_PASS “Your SSID Password”/************************* Gbridge Setup *********************************/#define AIO_SERVER “mqtt.gbridge.kappelt.net”#define AIO_SERVERPORT 1883 // use 8883 for SSL#define AIO_USERNAME “your gBridge username”#define AIO_KEY “your gBridge password”/****************************** Feeds ***************************************/ Adafruit_MQTT_Publish onoffset = Adafruit_MQTT_Publish(&mqtt, “gBridge/u341/d984/onoff/set”); //Replace by your feedname Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, “gBridge/u341/d984/onoff”); //Replace by your feedname
Introduction: Control ESP8266 From Google Home Using GBridge.io
There are different ways to control ESP8266 from Google Home, but most of the solutions you can find on Internet use IFTT, which is not really user-friendly to setup.
gBridge.io allows to make the process easier and act seamlessly.
In this how-to guide, I’m gonna show you how I setup my ESP01 module to answer to commands such as “Turn the lamp on” and “Is the lamp turned on?”. The project only turn on and off the built-in LED, but it easy to go further after that.
Materials needed:
- 1 * ESP8266 module (https://www.sparkfun.com/products/13678)
- 2 * push-buttons (https://www.sparkfun.com/products/97)
- 1 * 10k resistor
- 1 * FTDI cable 3.3V (https://www.sparkfun.com/products/14909)
Step 2: Programing ESP8266 With Arduino IDE
The second step is to be able to program ESP01 module with Arduino IDE. This will make it easy after that to use the MQTT Library from Adafruit. I was inspired by this guide for these steps: http://www.whatimade.today/esp8266-easiest-way-to-program-so-far/
- Install the latest Arduino IDE version. In my case it was v1.8.8.
- Go to File –> Preferences and add the link http://arduino.esp8266.com/stable/package_esp8266com_index.json to the Additional Boards Manager URLS.
- Go to Tools –> Board –> Boards manager
- You should now have the esp8266 as an option there since you’ve added it to the Additional Boards.
- Select it and press Install.
- You should now have ESP8266 module listed as “Generic ESP8266” module.
- In my case, I had to choose some parameters as shown in the linked image.
- Choose the Port where your FTDI cable is plugged.
- You can test the “Blink example” (File –> Examples –> ESP8266 –> Blink).
- Put your ESP8266 in “programing” mode by keeping the two buttons pressed and first release the reset button, and after that, the second one.
Circuit of the NodeMCU Home Automation
The circuit is very simple, I have used D1, D2, D5 & D6 GPIO to control the 4-channel relay module.
And the GPIO SD3, D3, D7 & RX are connected with manual switches to control the relay module manually.
I have used the INPUT_PULLUP function in Arduino IDE instead of using the pull-up resistors with each switch.
As per the source code, when the control pins of the relay module receive the LOW signal the respective relay will turn on and the relay will turn off for the HIGH signal in the control pin.
I have used a 5V 2Amp mobile charger to supply the circuit.
**The Boot will fail if SD3 and D3 are grounded during the Boot process. So manual switch-S1 and switch-S2 must be OFF during NodeMCU Boot.
Now, if you want to use pushbuttons then just connect the pushbuttons across the GPIO pins and GND pin instead of switches.
Lưu ý:
Ở phần chọn chân để điều khiển thiết bị, các bạn chọn pin “GPIO” để khi IFTTT truyền các lệnh xuống ESP8266 có thể hiểu được.
Ví dụ: Trong bài viết hôm nay mình chọn chân “GPIO16” thì mình sẽ điền là D16.
Tên linh kiện | Số lượng | Shopee |
NodeMCU ESP8266 | Mua ngay |
Step 2: Connecting the ESP8266
Connecting the ESP8266 to the Adafruit IO system is relatively straightforward. Before you get started with the code, you’ll need to install the Adafruit MQTT Client library, which can be found under the Arduino Library Manager (Sketch > Include Library > Library Manager…). Even though this library is produced and maintained by Adafruit, it can be used to connect to any MQTT server.
There are three libraries you’ll want to include at the start of your program:
#include
#include “Adafruit_MQTT.h”#include “Adafruit_MQTT_Client.h”
The first library controls the ESP8266’s wifi connections, and the other two control connections to the MQTT server.
You’ll also want to #define several strings:
#define WIFI_SSID ”
” #define WIFI_PASS ”
” #define MQTT_SERV “io.adafruit.com” #define MQTT_PORT 1883 #define MQTT_NAME ”
” #define MQTT_PASS ”
These are the settings for connecting to your Adafruit IO Account. Your Adafruit IO Key is a string of characters that can be found by pressing the gold key button on your dashboard, or “View AIO Key” on the left-hand menu of Adafruit IO.
Next, create WiFiClient and Adafruit_MQTT_Client objects as global variables, and instantiate the feed for your light switch:
WiFiClient client; Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS); Adafruit_MQTT_Subscribe onoff = Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME “/f/onoff”);
Now, in the setup, we’ll connect to the WiFi and the MQTT server:
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 topic mqtt.subscribe(&onoff); pinMode(LED_BUILTIN, OUTPUT); }
This will connect you to WiFi and the MQTT server, and subscribe to the onoff topic. We also set the led to be an output.
Now, in the main loop, we need to check to see if our subscription has been updated, and act accordingly. We’ll also occasionally ping the server to make sure we stay connected.
void loop() { //Connect/Reconnect to MQTT 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 monitorSerial.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(); }}
Finally, add the MQTT_connect function, which was part of one of the Adafruit_MQTT examples:
/***************************************************Adafruit MQTT Library ESP8266 ExampleMust use ESP8266 Arduino from: https://github.com/esp8266/ArduinoWorks great with Adafruit’s Huzzah ESP board & Feather—-> https://github.com/esp8266/Arduino—-> https://github.com/esp8266/ArduinoAdafruit invests time and resources providing this open source code,please support Adafruit and open-source hardware by purchasingproducts from Adafruit!Written by Tony DiCola for Adafruit Industries.MIT license, all text above must be included in any redistribution****************************************************/
void MQTT_connect() { int8_t ret; // Stop if already connectedif (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 secondsretries–;if (retries == 0){// basically die and wait for WDT to reset mewhile (1);}}Serial.println(“MQTT Connected!”);}
And that should be it! Load it onto your device, start up the serial monitor, and flip the switch in your dashboard a few times to make sure that it’s connected! Now, we just need to connect it to our Google Assistant.
Attachments
Cấu hình Webhooks
Tiếp theo ta chọn + that
Và chọn Webhooks nhé.
Nhấn vào “Connect” và chọn “Make a Web request”.
Chúng ta điền đầy đủ các thông tin trên trường hiển thị.
-
URL: Nhập URL theo cú pháp sau: http://188.166.206.43/YourAuthTokenHere/update/DigitalPinToBeUpdateHere
- http://188.166.206.43: Đây là URL của Blynk Server.
- YourAuthTokenHere: Mã Token được cấp khi chúng ta tạo một dự án mới trên App Blynk.
- DigitalPinToBeUpdateHere: Chân được cấu hình để điều khiển thiết bị.
- Method: Chọn PUT.
- Content Type: Chọn application/json.
- Body: Chúng ta điền vào [“1”], nghĩa là đang bật thiết bị.
Sau khi đã điền đầy đủ thông tin nhấn “Create action” để hoàn tất nhé.
Tương tự các bạn tự làm cho phần “tắt đèn” nhé.
Kết quả khi đã làm xong.
Keywords searched by users: esp8266 with google assistant
Categories: Có được 67 Esp8266 With Google Assistant
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/