- Hardvérové požiadavky
- Tok projektu pre LED ovládanú hlasom Alexa
- Nastavenie účtu Adafruit na komunikáciu
- Prepojte Alexa s Adafruit IO pomocou IFTTT
- Vysvetlenie kódu ESP12
- Pracovné:
V predchádzajúcich tutoriáloch sme videli, ako môžeme zostaviť reproduktor Amazon Echo a potom ako môžeme ovládať ľubovoľné GPIO Raspberry Pi pomocou Alexa Voice. Teraz robíme projekt IoT na riadenie domácich spotrebičov z ktoréhokoľvek miesta na svete pomocou AlexaPi a ESP-12E (alebo ľubovoľnej dosky ESP).
Hardvérové požiadavky
- Raspberry Pi s nainštalovaným AVS
- Mikrofón / webová kamera USB 2.0
- ESP-12E
- Reléový modul
- LED / AC žiarovka
Mali by ste mať pripravené svoje Raspberry Pi s nainštalovanou hlasovou službou Alexa so správne nakonfigurovaným účtom vývojára Amazon. Prejdite si teda nižšie uvedený tutoriál a pripravte služby Alexa.
- Vytvorte si svoje vlastné Amazon Echo pomocou Raspberry Pi
Tok projektu pre LED ovládanú hlasom Alexa
Budeme sledovať tento vývojový diagram pre tento projekt LED riadený IoT:
Proces je teda asi taký. Najprv sa vstupuje na Raspberry Pi cez USB Mic. Teraz sa tento záznam odosiela do hlasových služieb Alexa a po rozpoznaní hlasu AVS odoslala údaje do IFTTT a spustí stav v IFTTT. Podľa receptu IFTTT odošle príkaz spoločnosti Adafruit IO, ktorá je maklérom MQTT, ktorý vykoná akciu. Potom ESP 12e prijme údaje z Adafruit IO prostredníctvom protokolu MQTT a LED sa podľa príkazu rozsvieti / zhasne.
Tu sme použili USB webovú kameru pre mikrofón. Službu Alexa Voice sme už použili na zapnutie žiarovky, ale dokáže pracovať iba so zariadeniami, ktoré sú pripojené lokálne.
Pretože predpokladáme, že už máte Raspberry Pi so službami Alexa Voice nainštalované, zostávajú nám dva kroky, ktoré si po jednom vysvetlíme:
- Nastavenie účtu Adafruit na komunikáciu
- Prepojte Alexa s Adafruit IO pomocou IFTTT
- Nahrajte kód do ESP12
Nastavenie účtu Adafruit na komunikáciu
Najskôr urobíme krmivo v Adafruit IO. Informačný kanál ukladá údaje odoslané IFTTT. Ak chcete vytvoriť informačný kanál, postupujte takto:
Krok 1: - Prihláste sa do služby Adafruit IO pomocou svojich prihlasovacích údajov alebo sa zaregistrujte, ak nemáte účet.
Krok 2: - Kliknite na Môj účet -> Dashboard
Krok 3: - Kliknite na Akcie a Vytvorte nový informačný panel .
Krok 4: - Zadajte názov a popis svojho informačného kanála a kliknite na Vytvoriť .
Krok 5: - Kliknite na tlačidlo Kľúč a poznačte si klávesy AIO, tento kľúč použijeme v našom kóde.
Krok 6: - Kliknutím na tlačidlo „+“ vytvorte nový blok a kliknite na tlačidlo Prepnúť.
Krok 7: - Teraz zadajte Názov informačného kanála a kliknite na Vytvoriť . Potom vyberte zdroj a kliknite na Ďalší krok.
Krok 8: - V nastaveniach bloku napíšte „1“ do textového poľa Tlačidlo ZAPNUTÉ a „0“ do textového poľa Tlačidlo VYPNUTÉ .
Krok 9: - Váš informačný kanál bol úspešne vytvorený.
Prepojte Alexa s Adafruit IO pomocou IFTTT
Podľa týchto pokynov vytvoríte v IFTTT applet / recept:
Krok 1: - Prihláste sa do IFTTT pomocou svojich prihlasovacích údajov alebo sa zaregistrujte, ak na ňom nemáte účet.
Krok 2: - V časti Moje applety kliknite na položku Nový applet
Krok 3: - Kliknite na + toto
Krok 4: - Vyhľadajte Amazon Alexa a kliknite na ňu, prihláste sa pomocou podrobností účtu vývojára Amazon.
Krok 5: - Vyberte spúšťač, povedzte konkrétnu frázu
Krok 6: - Poskytnúť " rozsvietiť" , ako fráza, kliknite na Vytvoriť spúšť.
Krok 7: - Kliknite na + to
Krok 8: - Vyhľadajte Adafruit a kliknite na neho.
Krok 9: - Prihláste sa do účtu Adafruit pomocou svojich prihlasovacích údajov. Kliknite na možnosť Odoslať údaje do služby Adafruit .
Vyberte názov informačného kanála, ktorý ste práve vytvorili v Adafruit IO. Teraz uveďte údaj „1“ na uloženie, čo znamená, že LED bude svietiť. Kliknite na Vytvoriť akciu .
Krok 10: - Podľa rovnakých krokov urobte applety na vypnutie LED . Stačí vložiť „0“ do poľa Data to save. Všetky kroky zostávajú rovnaké.
Urobili ste polovicu svojej práce. Teraz je čas programovať váš ESP-12E.
Vysvetlenie kódu ESP12
Budeme programovať ESP12 s Arduino IDE. Celý kód je uvedený na konci tejto príručky.
Najskôr potrebujeme knižnicu Adafruit Mqtt, ktorú je možné stiahnuť z tohto odkazu. Stačí otvoriť Arduino IDE. Prejdite na príklady -> knižnica adafruit mqtt -> mqtt_esp8266
Budeme -Li upraviť tento kód v súlade s našimi kľúčmi AIO a Wi-Fi poverenia.
Najskôr sme zahrnuli všetky knižnice pre ESP8266WIFI a Adafruit MQTT .
#include
Definovali sme SSID a heslo pre vašu Wi-Fi, z ktorej chcete pripojiť váš ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Táto časť definuje server Adafruit a port servera, ktoré sú opravené ako „ io.adafruit.com “ a „ 1883 “.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Nahraďte nasledujúce polia svojím používateľským menom a kľúčmi AIO, ktoré ste skopírovali zo stránky Adafruit pri vytváraní informačného kanála.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Potom vytvorte triedu ESP8266 WiFiClient na pripojenie k serveru MQTT.
Klient WiFiClient;
Nastavením triedy klienta MQTT odovzdaním klienta WiFi a servera MQTT a prihlasovacích údajov.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Ak sa chcete prihlásiť na odber zmien, nastavte informačný kanál s názvom „light“.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
Vo funkcii nastavenia deklarujeme PIN ESP-12e, na ktorom chcete získať výstup. Ako výstup používam pin D0. Potom pripojíme ESP-12e k prístupovému bodu Wi-fi.
void setup () { Serial.begin (115200); oneskorenie (10); pinMode (D0, VÝSTUP); Serial.println (F ("Adafruit MQTT demo")); // Pripojenie k prístupovému bodu WiFi. Serial.println (); Serial.println (); Serial.print („pripája sa k“); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. …. …
Nastaviť predplatné MQTT pre svetelný kanál.
mqtt.subscribe (& light); }
Vo funkcii loop zabezpečíme, aby bolo pripojenie k serveru MQTT živé pomocou MQTT_connect (); funkcia.
void loop () { MQTT_connect ();
Teraz sa prihlásime na odber nášho „ľahkého“ zdroja, získame reťazec z adafruit IO a tento reťazec prevedieme na číslo pomocou atoi (); funkciu a toto číslo napíš na PIND0 pomocou digitalWrite (); funkcia.
Adafruit_MQTT_Subscribe * predplatné; while ((predplatné = mqtt.readSubscription (5000))) { if (predplatné == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, počet); }
Pracovné:
Pripojte svoj ESP-12E k notebooku a nahrajte pod kód (nezabudnite v kóde upraviť svoje poverenia).
Pripojte LED alebo relé na pin D0. Teraz sa uistite, či je služba Alexa spustená na vašom RPi.
Ak chcete dať ľubovoľný príkaz, musíte službu Alexa prebudiť volaním slova „Alexa“ zakaždým, keď chcete odoslať príkaz. Budete počuť pípnutie. Hneď ako začujete pípnutie, povedzte „ Alexa Trigger Turn on the Light. „Uvidíte, ako sa svetlo za chvíľu rozsvieti. A potom, keď poviete „ Alexa Trigger Turn off the Light “, svetlo by sa malo VYPNÚŤ.
To je všetko… Vo vyššie uvedenom kóde môžete pridať ďalšie zariadenia pridaním pinov GPIO ESP-12E a vytvorením rôznych appletov s rôznymi frázami v IFTTT.
Kompletný kód a demonštračné video nájdete nižšie. Tiež si tu pozrite všetky naše projekty domácej automatizácie