- ข้อกำหนดฮาร์ดแวร์
- Project Flow สำหรับ Alexa Voice Controlled LED
- การตั้งค่าบัญชี Adafruit เพื่อการสื่อสาร
- เชื่อมโยง Alexa กับ Adafruit IO โดยใช้ IFTTT
- คำอธิบายรหัส ESP12
- การทำงาน:
ในบทช่วยสอนก่อนหน้านี้เราได้เห็นว่าเราจะสร้างลำโพง Amazon Echo ได้อย่างไรแล้วเราจะควบคุม Raspberry Pi GPIO โดยใช้ Alexa Voice ได้อย่างไร ตอนนี้เรากำลังทำโครงการ IoT เพื่อ ควบคุมเครื่องใช้ในบ้านจากทุกที่ในโลกโดยใช้ AlexaPi และ ESP-12E (หรือบอร์ด ESP ใด ๆ)
ข้อกำหนดฮาร์ดแวร์
- Raspberry Pi พร้อม AVS ติดตั้งอยู่
- ไมค์ USB 2.0 / เว็บแคม
- ESP-12E
- โมดูลรีเลย์
- หลอด LED / AC
คุณควรเตรียม Raspberry Pi ของคุณพร้อมกับบริการเสียงของ Alexa ที่ติดตั้งด้วยบัญชี Amazon Developer ที่กำหนดค่าไว้อย่างเหมาะสม ดังนั้นอ่านบทช่วยสอนด้านล่างเพื่อเตรียมบริการ Alexa ให้พร้อม
- สร้าง Amazon Echo ของคุณเองโดยใช้ Raspberry Pi
Project Flow สำหรับ Alexa Voice Controlled LED
เราจะทำตามผังงานสำหรับโครงการ LED ที่ควบคุมด้วย IoT นี้:
ดังนั้นกระบวนการเป็นอย่างนี้ แรกเข้าจะได้รับการ Raspberry Pi ผ่านUSB Micตอนนี้การบันทึกนี้จะถูกส่งไปยังบริการเสียงของ Alexa และหลังจากการจดจำเสียง AVS จะส่งข้อมูลไปยังIFTTTและเรียกใช้เงื่อนไขใน IFTTT ตามสูตรอาหาร IFTTT จะส่งคำสั่งไปยังAdafruit IOซึ่งเป็นโบรกเกอร์ MQTT เพื่อดำเนินการ จากนั้นESP 12eจะรับข้อมูลจาก Adafruit IO ผ่านโปรโตคอล MQTT และ LED จะเปิด / ปิดตามคำสั่ง
ที่นี่เราได้ใช้เว็บแคม USB สำหรับไมโครโฟน เราได้ใช้บริการ Alexa Voice เพื่อเปิดหลอดไฟแล้ว แต่สามารถจัดการได้เฉพาะเครื่องใช้ไฟฟ้าที่เชื่อมต่อในเครื่องเท่านั้น
เนื่องจากเราสมมติว่าคุณมี Raspberry Pi พร้อมบริการ Alexa Voice ติดตั้งอยู่แล้วดังนั้นเราจึงเหลืออีกสองขั้นตอนด้านล่างซึ่งเราจะอธิบายทีละขั้นตอน:
- การตั้งค่าบัญชี Adafruit เพื่อการสื่อสาร
- เชื่อมโยง Alexa กับ Adafruit IO โดยใช้ IFTTT
- อัปโหลดรหัสใน ESP12
การตั้งค่าบัญชี Adafruit เพื่อการสื่อสาร
ครั้งแรกที่เราจะทำให้ฟีดในAdafruit IO ฟีดเก็บข้อมูลที่ส่งโดย IFTTT ในการสร้างฟีดให้ทำตามขั้นตอนเหล่านี้:
ขั้นตอนที่ 1: -เข้าสู่ระบบ Adafruit IO ด้วยข้อมูลประจำตัวของคุณหรือลงทะเบียนหากคุณไม่มีบัญชี
ขั้นตอนที่ 2: -คลิกที่ บัญชีของฉัน -> แดชบอร์ด
ขั้นตอนที่ 3: -คลิกที่ การดำเนินการ และการสร้างแดชบอร์ดใหม่
ขั้นตอนที่ 4: -ให้ชื่อและคำอธิบายฟีดของคุณและคลิกที่สร้าง
ขั้นตอนที่ 5: -คลิกที่ปุ่ม คีย์ และจดบันทึกคีย์ AIO เราจะใช้คีย์นี้ในรหัสของเรา
ขั้นตอนที่ 6: -คลิกที่ปุ่ม '+' เพื่อสร้างบล็อกใหม่และคลิกที่ปุ่มสลับ
ขั้นตอนที่ 7: -ตอนนี้ใส่ชื่อของฟีดและคลิกที่สร้าง จากนั้นเลือกฟีดและคลิกที่ขั้นตอนต่อไป
ขั้นตอนที่ 8: -ในการตั้งค่าบล็อกเขียน '1' ในช่อง ข้อความปุ่มเปิด และ '0' ในช่อง ข้อความปุ่มปิด
ขั้นตอนที่ 9: -สร้างฟีดของคุณสำเร็จแล้ว
เชื่อมโยง Alexa กับ Adafruit IO โดยใช้ IFTTT
ทำตามขั้นตอนเหล่านี้เพื่อสร้าง Applet / Recipe ใน IFTTT:
ขั้นตอนที่ 1: -เข้าสู่ IFTTT ด้วยข้อมูลประจำตัวของคุณหรือลง ทะเบียน หากคุณไม่มีบัญชีอยู่
ขั้นตอนที่ 2: - ในแอปเพล็ตของฉันคลิกที่ แอพเพล็ตใหม่
ขั้นตอนที่ 3: - คลิกที่ + นี่
ขั้นตอนที่ 4: - ค้นหา Amazon Alexa และคลิกที่มันลงชื่อเข้าใช้ด้วยรายละเอียดบัญชีผู้พัฒนา amazon ของคุณ
ขั้นตอนที่ 5: - เลือกทริกเกอร์ พูดวลีเฉพาะ
ขั้นตอนที่ 6: - ให้ “ เปิดไฟ” เป็นวลีคลิกที่ สร้างทริกเกอร์
ขั้นตอนที่ 7: - คลิกที่ + นั่น
ขั้นตอนที่ 8: -ค้นหา Adafruit และคลิกที่มัน
ขั้นตอนที่ 9: -เข้าสู่ระบบบัญชี Adafruit โดยใช้ข้อมูลประจำตัวของคุณ คลิกที่ ข้อมูลที่ส่งให้ Adafruit
เลือกชื่อฟีดที่คุณเพิ่งสร้างใน Adafruit IO ตอนนี้ให้ข้อมูล '1' เพื่อบันทึกซึ่งหมายความว่า LED จะติด คลิกที่สร้างการกระทำ
ขั้นตอนที่ 10: -ทำตามขั้นตอนเดียวกันเพื่อ ให้แอปเพล็ที่จะเปิดไฟ LED OFF เพียงใส่ '0' ในช่องข้อมูลเพื่อบันทึก ขั้นตอนทั้งหมดยังคงเหมือนเดิม
คุณทำงานของคุณไปครึ่งหนึ่งแล้ว ถึงเวลาตั้งโปรแกรม ESP-12E ของคุณแล้ว
คำอธิบายรหัส ESP12
เราจะเขียนโปรแกรม ESP12 ด้วย Arduino IDE รหัสที่สมบูรณ์จะได้รับในตอนท้ายของบทช่วยสอนนี้
ขั้นแรกเราต้องมีไลบรารี Adafruit Mqttซึ่งสามารถดาวน์โหลดได้จากลิงค์นี้ เพียงแค่เปิด Arduino IDE ไปที่ ตัวอย่าง -> adafruit mqtt library -> mqtt_esp8266
เราจะแก้ไขรหัสนี้ตามคีย์ AIO และข้อมูลรับรอง Wi-Fi ของเรา
ครั้งแรกที่เรารวมทุก ห้องสมุด ESP8266WIFI และ Adafruit MQTT
# รวม
เรากำหนด SSID และรหัสผ่านสำหรับ Wi-Fi ของคุณซึ่งคุณต้องการเชื่อมต่อ ESP-12e ของคุณ
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
ส่วนนี้กำหนดเซิร์ฟเวอร์ Adafruit และพอร์ตเซิร์ฟเวอร์ซึ่งได้รับการแก้ไขเป็น“ io.adafruit.com ” และ“ 1883 ” ตามลำดับ
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
แทนที่ฟิลด์ด้านล่างด้วยชื่อผู้ใช้และคีย์ AIO ของคุณซึ่งคุณได้คัดลอกมาจากไซต์ Adafruit ขณะสร้างฟีด
#define AIO_USERNAME "********" # กำหนด AIO_KEY "******************************"
จากนั้นสร้างคลาส ESP8266 WiFiClient เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MQTT
ไคลเอนต์ WiFiClient;
ตั้งค่าคลาสไคลเอนต์ MQTT โดยส่งผ่านไคลเอนต์ WiFi และเซิร์ฟเวอร์ MQTTและรายละเอียดการเข้าสู่ระบบ
Adafruit_MQTT_Client mqtt (& ลูกค้า, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
ตั้งค่าฟีดที่เรียกว่า 'light'เพื่อสมัครรับการเปลี่ยนแปลง
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
ในฟังก์ชั่นการตั้งค่าเราจะประกาศ PIN ของ ESP-12e ที่คุณต้องการรับเอาต์พุต ฉันใช้พิน D0 เป็นเอาต์พุต จากนั้นเราเชื่อมต่อ ESP-12e กับจุดเชื่อมต่อ Wi-Fi
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); ล่าช้า (10); pinMode (D0, เอาท์พุท); Serial.println (F ("Adafruit MQTT demo")); // เชื่อมต่อกับจุดเชื่อมต่อ WiFi Serial.println (); Serial.println (); Serial.print ("กำลังเชื่อมต่อกับ"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); ในขณะที่ (WiFi.status ()! = WL_CONNECTED) { …. …. …
ตั้งค่าการสมัครสมาชิก MQTT สำหรับฟีดแสง
mqtt.subscribe (& light); }
ในฟังก์ชัน ลูป เราจะตรวจสอบให้แน่ใจว่าการเชื่อมต่อกับเซิร์ฟเวอร์ MQTT นั้นยังมีชีวิตอยู่โดยใช้ MQTT_connect (); ฟังก์ชัน
ห่วงเป็นโมฆะ () { MQTT_connect ();
ตอนนี้เราสมัครฟีด 'light' ของเราและรับสตริงจาก adafruit IOและแปลงสตริงนี้เป็นตัวเลขโดยใช้atoi (); ฟังก์ชันและเขียนหมายเลขนี้เป็น PIND0 โดยใช้digitalWrite (); ฟังก์ชัน
Adafruit_MQTT_Subscribe * สมัครสมาชิก; ในขณะที่ ((สมัครสมาชิก = mqtt.readSubscription (5000))) { if (การสมัครสมาชิก == & light) { Serial.print (F ("Got_light:")); Serial.println ((ถ่าน *) light.lastread); uint16_t num = atoi ((ถ่าน *) light.lastread); digitalWrite (16, จำนวน); }
การทำงาน:
เชื่อมต่อ ESP-12E ของคุณกับแล็ปท็อปและอัปโหลดรหัสด้านล่าง (อย่าลืมแก้ไขข้อมูลประจำตัวของคุณในรหัส)
เชื่อมต่อ LED หรือรีเลย์เข้ากับขา D0 ตอนนี้ตรวจสอบให้แน่ใจว่าบริการ Alexa ของคุณทำงานบน RPi ของคุณ
หากต้องการให้คำสั่งใด ๆ คุณต้องปลุกบริการ Alexa โดยเรียก "Alexa" ทุกครั้งที่คุณต้องการส่งคำสั่ง คุณจะได้ยินเสียงบี๊บ เมื่อคุณได้ยินเสียงบี๊บให้พูดว่า“ Alexa Trigger Turn on the Light "คุณจะเห็นไฟเปิดขึ้นภายในชั่วครู่ แล้วถ้าคุณพูดว่า“ Alexa Trigger Turn off the Light ” ไฟควรจะดับลง
แค่นั้นแหละ…. คุณสามารถเพิ่มอุปกรณ์เพิ่มเติมในโค้ดด้านบนได้โดยการเพิ่มพิน GPIO ของ ESP-12E และโดยการสร้าง Applets ที่แตกต่างกันด้วยวลีที่แตกต่างกันใน IFTTT
ตรวจสอบโค้ดและวิดีโอสาธิตด้านล่าง ตรวจสอบโครงการ Home Automation ทั้งหมดของเราได้ที่นี่