- Cerințe hardware
- Flux de proiect pentru LED controlat vocal Alexa
- Configurarea unui cont Adafruit pentru comunicare
- Conectați Alexa la Adafruit IO utilizând IFTTT
- Explicația codului ESP12
- Lucru:
În tutoriale anterioare am văzut cum putem construi un difuzor Amazon Echo și apoi cum putem controla orice Raspberry Pi GPIO folosind Alexa Voice. Acum realizăm un proiect IoT pentru a controla aparatele electrocasnice de oriunde din lume folosind AlexaPi și ESP-12E (sau orice placă ESP).
Cerințe hardware
- Raspberry Pi cu AVS instalat
- Microfon USB 2.0 / Cameră web
- ESP-12E
- Modul releu
- Bec LED / AC
Ar trebui să aveți Raspberry Pi gata cu serviciul de voce Alexa instalat în acesta cu un cont de dezvoltator Amazon configurat corespunzător. Deci, parcurgeți tutorialul de mai jos pentru a pregăti serviciile Alexa.
- Construiți-vă propriul Amazon Echo folosind un Raspberry Pi
Flux de proiect pentru LED controlat vocal Alexa
Vom urmări această diagramă pentru acest proiect cu LED controlat de IoT:
Deci, procesul este ceva de genul acesta. În primul rând, intrarea este dată Raspberry Pi prin microfonul USB. Acum, această înregistrare este trimisă serviciilor de voce Alexa și, după recunoașterea vocii, AVS a trimis datele către IFTTT și declanșează starea în IFTTT. Conform rețetei, IFTTT va trimite comanda către Adafruit IO, care este brokerul MQTT pentru a efectua o acțiune. Apoi ESP 12e va primi datele de la Adafruit IO prin protocolul MQTT și LED-ul se va aprinde / opri conform comenzii.
Aici am folosit o cameră web USB pentru microfon. Am folosit deja serviciul Alexa Voice pentru a porni un bec, dar acesta poate gestiona numai aparatele conectate local.
Deoarece presupunem că aveți deja Raspberry Pi cu serviciile Alexa Voice instalate, așa că rămânem cu mai puțin de doi pași, pe care îi vom explica unul câte unul:
- Configurarea unui cont Adafruit pentru comunicare
- Conectați Alexa la Adafruit IO utilizând IFTTT
- Încărcați codul în ESP12
Configurarea unui cont Adafruit pentru comunicare
În primul rând, vom crea un feed în Adafruit IO. Feedul stochează datele trimise de IFTTT. Pentru a crea feed, urmați acești pași:
Pasul 1: - Conectați - vă la Adafruit IO cu acreditările dvs. sau Înscrieți-vă dacă nu aveți un cont.
Pasul 2: - Faceți clic pe Contul meu -> Tablou de bord
Pasul 3: - Faceți clic pe Acțiuni și creați un tablou de bord nou .
Pasul 4: - Dați numele și descrierea fluxului dvs. și faceți clic pe Creați .
Pasul 5: - Faceți clic pe butonul Cheie și notați tastele AIO, vom folosi această cheie în codul nostru.
Pasul 6: - Faceți clic pe butonul '+' pentru a crea un bloc nou și faceți clic pe butonul Comutare.
Pasul 7: - Acum, introduceți numele feedului și faceți clic pe Creați . Apoi selectați fluxul și faceți clic pe Pasul următor.
Pasul 8: - În setările blocului, scrieți „1” în câmpul de text Buton ON și „0” în câmpul Buton OFF Text .
Pasul 9: - Feed-ul dvs. este creat cu succes.
Conectați Alexa la Adafruit IO utilizând IFTTT
Urmați acești pași pentru a crea un applet / rețetă în IFTTT:
Pasul 1: - Conectați - vă la IFTTT cu acreditările dvs. sau Înscrieți-vă dacă nu aveți un cont pe acesta.
Pasul 2: - Pe Appletele mele, faceți clic pe Applet nou
Pasul 3: - Faceți clic pe + acest lucru
Pasul 4: - Căutați Amazon Alexa și faceți clic pe acesta, conectați-vă cu detaliile contului de dezvoltator Amazon.
Pasul 5: - Alegeți declanșatorul, Rostiți o frază specifică
Pasul 6: - Furnizați „ aprindeți lumina” ca expresie, faceți clic pe Creați declanșatorul.
Pasul 7: - Faceți clic pe + că
Pasul 8: - Căutați Adafruit și faceți clic pe el.
Pasul 9: - Conectați - vă la contul Adafruit folosind acreditările dvs. Faceți clic pe Trimiteți datele către Adafruit .
Selectați numele feedului pe care tocmai l-ați creat în Adafruit IO. Acum, dați „1” în date pentru a le salva, aceasta înseamnă că LED-ul va fi aprins. Faceți clic pe Creare acțiune .
Pasul 10: - Urmați aceiași pași pentru a face applets pentru a opri LED-ul . Doar puneți „0” în câmpul Date pentru a salva. Toți pașii rămân aceiași.
Ai făcut jumătate din munca ta. Acum, este timpul să vă programați ESP-12E.
Explicația codului ESP12
Vom programa ESP12 cu Arduino IDE. Codul complet este dat la sfârșitul acestui tutorial.
În primul rând, avem nevoie de o bibliotecă Adafruit Mqtt care poate fi descărcată de pe acest link. Doar deschideți Arduino IDE. Mergeți la exemple -> biblioteca mqtt adafruit -> mqtt_esp8266
Vom edita acest cod în conformitate cu cheile noastre AIO și acreditările Wi-Fi.
În primul rând, am inclus toate bibliotecile pentru ESP8266WIFI și Adafruit MQTT .
#include
Am definit SSID-ul și parola pentru Wi-Fi-ul dvs., de la care doriți să vă conectați ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Această secțiune definește serverul Adafruit și portul serverului care sunt fixate ca „ io.adafruit.com ” și respectiv „ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Înlocuiți câmpurile de mai jos cu numele dvs. de utilizator și cheile AIO pe care le-ați copiat de pe site-ul Adafruit în timp ce creați feedul.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Apoi creați o clasă ESP8266 WiFiClient pentru a vă conecta la serverul MQTT.
Client WiFiClient;
Configurați clasa de client MQTT trecând clientul WiFi și serverul MQTT și detaliile de conectare.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Configurați un flux numit „lumină” pentru abonarea la modificări.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
În funcția de configurare, declarăm codul PIN al ESP-12e pe care doriți să obțineți ieșire. Folosesc pinul D0 ca ieșire. Apoi, conectăm ESP-12e la punctul de acces Wi-Fi.
void setup () { Serial.begin (115200); întârziere (10); pinMode (D0, OUTPUT); Serial.println (F ("Demo Adafruit MQTT")); // Conectați-vă la punctul de acces WiFi. Serial.println (); Serial.println (); Serial.print („Conectarea la”); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. …. ...
Configurați abonamentul MQTT pentru alimentare ușoară.
mqtt.subscribe (& light); }
În funcția de buclă , ne vom asigura că conexiunea la serverul MQTT este activă utilizând MQTT_connect (); funcţie.
bucla void () { MQTT_connect ();
Acum, ne abonăm la fluxul nostru „ușor” și obținem șirul de la adafruit IO și convertim acest șir la număr folosind atoi (); funcționează și scrie acest număr la PIND0 folosind digitalWrite (); funcţie.
Adafruit_MQTT_Subscribe * abonament; while ((abonament = mqtt.readSubscription (5000))) { if (abonament == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Lucru:
Conectați-vă ESP-12E la laptop și încărcați codul de mai jos (nu uitați să vă editați acreditările în cod).
Conectați un LED sau un releu la pinul D0. Acum, asigurați-vă că serviciul dvs. Alexa rulează pe RPi.
Pentru a da orice comandă, trebuie să treziți serviciul Alexa apelând „Alexa” de fiecare dată când doriți să trimiteți o comandă. Veți auzi un sunet sonor. După ce auziți un semnal sonor, spuneți „ Alexa Trigger Porniți lumina. ”Puteți vedea lumina aprinsă într-un moment. Și apoi dacă spuneți „ Alexa Trigger Opriți lumina ”, lumina ar trebui să se stingă.
Asta e…. Puteți adăuga mai multe aparate în codul de mai sus adăugând pinii GPIO ai ESP-12E și realizând diferite applet-uri cu fraze diferite în IFTTT.
Verificați codul complet și videoclipul demonstrativ de mai jos. De asemenea, verificați toate proiectele noastre de automatizare la domiciliu aici