- yêu cầu phần cứng
- Luồng dự án cho đèn LED điều khiển bằng giọng nói Alexa
- Thiết lập tài khoản Adafruit để liên lạc
- Liên kết Alexa với Adafruit IO bằng IFTTT
- Giải thích mã ESP12
- Đang làm việc:
Trong các hướng dẫn trước, chúng ta đã xem Cách chúng ta có thể tạo Loa Amazon Echo và sau đó làm cách nào chúng ta có thể điều khiển bất kỳ GPIO Raspberry Pi nào bằng Alexa Voice. Giờ đây, chúng tôi đang thực hiện một dự án IoT để điều khiển các thiết bị gia dụng từ mọi nơi trên thế giới bằng AlexaPi và ESP-12E (hoặc bất kỳ bảng ESP nào).
yêu cầu phần cứng
- Raspberry Pi với AVS được cài đặt trong đó
- Micrô / Webcam USB 2.0
- ESP-12E
- Mô-đun chuyển tiếp
- Bóng đèn LED / AC
Bạn nên chuẩn bị sẵn Raspberry Pi của mình với dịch vụ thoại Alexa được cài đặt trong đó với Tài khoản nhà phát triển Amazon được định cấu hình đúng cách. Vì vậy, hãy xem qua hướng dẫn dưới đây để chuẩn bị sẵn sàng các dịch vụ Alexa.
- Tạo Amazon Echo của riêng bạn bằng Raspberry Pi
Luồng dự án cho đèn LED điều khiển bằng giọng nói Alexa
Chúng tôi sẽ theo dõi sơ đồ cho dự án đèn LED được điều khiển bằng IoT này:
Vì vậy, quá trình là một cái gì đó như thế này. Đầu tiên, đầu vào được cấp cho Raspberry Pi thông qua Mic USB. Bây giờ, bản ghi âm này được gửi đến các dịch vụ thoại của Alexa và sau khi nhận dạng giọng nói, AVS đã gửi dữ liệu đến IFTTT và nó kích hoạt điều kiện trong IFTTT. Theo công thức, IFTTT sẽ gửi lệnh đến Adafruit IO là nhà môi giới MQTT để thực hiện một hành động. Sau đó, ESP 12e sẽ nhận dữ liệu từ Adafruit IO thông qua giao thức MQTT và đèn LED sẽ BẬT / TẮT theo lệnh.
Ở đây chúng tôi đã sử dụng USB WebCam cho Micrô. Chúng tôi đã sử dụng dịch vụ Alexa Voice để bật bóng đèn, nhưng nó chỉ có thể xử lý các thiết bị được kết nối cục bộ.
Vì chúng tôi giả định rằng bạn đã cài đặt Raspberry Pi với các dịch vụ Alexa Voice, vì vậy chúng tôi sẽ thực hiện hai bước bên dưới, chúng tôi sẽ giải thích từng bước một:
- Thiết lập tài khoản Adafruit để liên lạc
- Liên kết Alexa với Adafruit IO bằng IFTTT
- Tải lên mã trong ESP12
Thiết lập tài khoản Adafruit để liên lạc
Đầu tiên, chúng tôi sẽ tạo nguồn cấp dữ liệu trong Adafruit IO. Nguồn cấp dữ liệu lưu trữ dữ liệu được gửi bởi IFTTT. Để tạo nguồn cấp dữ liệu, hãy làm theo các bước sau:
Bước 1: - Đăng nhập Adafruit IO bằng thông tin đăng nhập của bạn hoặc Đăng ký nếu bạn chưa có tài khoản.
Bước 2: - Nhấp vào Tài khoản của tôi -> Trang tổng quan
Bước 3: - Nhấp vào Hành động và Tạo một Trang tổng quan mới .
Bước 4: - Đặt tên và mô tả cho nguồn cấp dữ liệu của bạn và nhấp vào Tạo .
Bước 5: - Bấm vào nút Key và ghi lại AIO Keys, chúng ta sẽ sử dụng phím này trong mã của mình.
Bước 6: - Bấm vào nút '+' để tạo khối mới và bấm vào nút Toggle.
Bước 7: - Bây giờ, nhập Tên nguồn cấp dữ liệu và nhấp vào Tạo . Sau đó, Chọn nguồn cấp dữ liệu và nhấp vào Bước tiếp theo.
Bước 8: - Trong cài đặt khối, Viết '1' vào trường văn bản Nút BẬT và "0" trong trường Văn bản Nút TẮT .
Bước 9: - Nguồn cấp dữ liệu của bạn đã được tạo thành công.
Liên kết Alexa với Adafruit IO bằng IFTTT
Làm theo các bước sau để tạo Applet / Recipe trong IFTTT:
Bước 1: - Đăng nhập IFTTT bằng thông tin đăng nhập của bạn hoặc Đăng ký nếu bạn chưa có tài khoản trên đó.
Bước 2: - Trên Applet của tôi, nhấp vào New Applet
Bước 3: - Nhấp vào + cái này
Bước 4: - Tìm kiếm Amazon Alexa và nhấp vào nó, đăng nhập bằng chi tiết tài khoản nhà phát triển amazon của bạn.
Bước 5: - Chọn trình kích hoạt, Nói một cụm từ cụ thể
Bước 6: - Cung cấp cụm từ “ bật đèn” , nhấn vào Create Trigger.
Bước 7: - Nhấp vào + cái đó
Bước 8: - Tìm kiếm Adafruit và nhấp vào nó.
Bước 9: - Đăng nhập vào Tài khoản Adafruit bằng thông tin đăng nhập của bạn. Nhấp vào Gửi dữ liệu đến Adafruit .
Chọn tên nguồn cấp dữ liệu mà bạn vừa tạo trong Adafruit IO. Bây giờ, hãy nhập '1' vào dữ liệu để lưu, điều này có nghĩa là đèn LED sẽ BẬT. Nhấp vào Tạo hành động .
Bước 10: - Làm theo các bước tương tự để tạo các applet để TẮT LED . Chỉ cần đặt '0' vào trường Dữ liệu để lưu. Tất cả các bước vẫn như cũ.
Bạn đã hoàn thành một nửa công việc của mình. Bây giờ, đã đến lúc lập trình ESP-12E của bạn.
Giải thích mã ESP12
Chúng tôi sẽ lập trình ESP12 với Arduino IDE. Mã hoàn chỉnh được đưa ra ở cuối Hướng dẫn này.
Đầu tiên, chúng ta cần một thư viện Adafruit Mqtt có thể tải xuống từ liên kết này. Chỉ cần mở Arduino IDE. Đi tới ví dụ -> thư viện adafruit mqtt -> mqtt_esp8266
Chúng tôi sẽ chỉnh sửa mã này theo khóa AIO và thông tin đăng nhập Wi-Fi của chúng tôi.
Đầu tiên, chúng tôi bao gồm tất cả các thư viện cho ESP8266WIFI và Adafruit MQTT .
#include
Chúng tôi đã xác định SSID và Mật khẩu cho Wi-Fi của bạn, từ đó bạn muốn kết nối ESP-12e của mình.
# xác định WLAN_SSID "xxxxxxxx" # xác định WLAN_PASS "xxxxxxxxxxx"
Phần này xác định máy chủ Adafruit và cổng máy chủ được cố định tương ứng là “ io.adafruit.com ” và “ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Thay thế các trường bên dưới bằng tên người dùng và khóa AIO mà bạn đã sao chép từ trang Adafruit khi tạo Nguồn cấp dữ liệu.
# xác định AIO_USERNAME "********" # xác định AIO_KEY "******************************"
Sau đó, tạo một lớp ESP8266 WiFiClient để kết nối với máy chủ MQTT.
Máy khách WiFiClient;
Thiết lập lớp máy khách MQTT bằng cách chuyển vào máy khách WiFi và máy chủ MQTT và thông tin đăng nhập.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Thiết lập một nguồn cấp dữ liệu được gọi là 'ánh sáng' để đăng ký các thay đổi.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
Trong chức năng thiết lập, chúng tôi khai báo mã PIN của ESP-12e mà bạn muốn lấy đầu ra. Tôi đang sử dụng chân D0 làm đầu ra. Sau đó, chúng tôi kết nối ESP-12e với điểm truy cập Wi-fi.
void setup () { Serial.begin (115200); chậm trễ (10); pinMode (D0, OUTPUT); Serial.println (F ("Bản trình diễn Adafruit MQTT")); // Kết nối với điểm truy cập WiFi. Serial.println (); Serial.println (); Serial.print ("Đang kết nối với"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); trong khi (WiFi.status ()! = WL_CONNECTED) { …. …. …
Thiết lập đăng ký MQTT cho nguồn cấp dữ liệu nhẹ.
mqtt.subscribe (& light); }
Trong chức năng vòng lặp , chúng tôi sẽ đảm bảo rằng kết nối với máy chủ MQTT vẫn hoạt động bằng cách sử dụng MQTT_connect (); chức năng.
void loop () { MQTT_connect ();
Bây giờ, chúng tôi đăng ký nguồn cấp dữ liệu 'light' của mình và lấy chuỗi từ adafruit IO và chuyển chuỗi này thành số bằng cách sử dụng atoi (); và ghi số này vào PIND0 bằng cách sử dụng digitalWrite (); chức năng.
Đăng ký Adafruit_MQTT_Subscribe *; while ((subscription = mqtt.readSubscription (5000))) { if (subscription == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Đang làm việc:
Kết nối ESP-12E của bạn với máy tính xách tay và tải lên mã bên dưới (đừng quên chỉnh sửa thông tin đăng nhập của bạn trong mã).
Kết nối đèn LED hoặc rơ le vào chân D0. Bây giờ, hãy đảm bảo rằng dịch vụ Alexa của bạn đang chạy trên RPi của bạn.
Để đưa ra bất kỳ lệnh nào, bạn cần đánh thức dịch vụ Alexa bằng cách gọi “Alexa” mỗi khi bạn muốn gửi lệnh. Bạn sẽ nghe thấy một âm thanh bíp. Khi bạn nghe thấy tiếng bíp, hãy nói “ Alexa Trigger Turn on the Light. ”Bạn có thể thấy đèn BẬT trong giây lát. Và sau đó nếu bạn nói “ Alexa Trigger Turn off the Light ”, đèn sẽ TẮT.
Đó là nó…. Bạn có thể thêm các thiết bị khác trong đoạn mã trên bằng cách thêm các chân GPIO của ESP-12E và bằng cách tạo các Applet khác nhau với các cụm từ khác nhau trong IFTTT.
Kiểm tra mã hoàn chỉnh và Video minh họa bên dưới. Ngoài ra, hãy xem tất cả các Dự án Tự động hóa Gia đình của chúng tôi tại đây