- Zahteve glede strojne opreme
- Projekt za LED z glasovnim nadzorom Alexa
- Nastavitev računa Adafruit za komunikacijo
- Povežite Alexa z Adafruit IO z uporabo IFTTT
- Pojasnilo kode ESP12
- Delo:
V prejšnjih vajah smo videli, kako lahko zgradimo zvočnik Amazon Echo in kako potem lahko nadzorujemo kateri koli Raspberry Pi GPIO s pomočjo Alexa Voice. Zdaj pripravljamo projekt IoT za nadzor gospodinjskih aparatov od koder koli na svetu s pomočjo AlexaPi in ESP-12E (ali katere koli plošče ESP).
Zahteve glede strojne opreme
- Raspberry Pi z nameščenim AVS
- USB 2.0 mikrofon / spletna kamera
- ESP-12E
- Relejni modul
- LED / AC žarnica
Vaš Raspberry Pi bi moral biti pripravljen, v njem pa mora biti nameščena glasovna storitev Alexa s pravilno konfiguriranim računom za razvijalce Amazon. Torej, pojdite skozi spodnjo vadnico, da pripravite storitve Alexa.
- Zgradite svoj Amazon Echo z uporabo Raspberry Pi
Projekt za LED z glasovnim nadzorom Alexa
Upoštevali bomo ta diagram poteka za ta LED projekt, ki ga nadzira IoT:
Torej, postopek je približno tak. Najprej je vhod v Raspberry Pi prek mikrofona USB. Zdaj je ta posnetek poslan glasovnim storitvam Alexa, po prepoznavanju glasu pa je AVS poslal podatke IFTTT in sproži stanje v IFTTT. V skladu z receptom bo IFTTT poslal ukaz Adafruit IO, ki je posrednik MQTT za izvedbo dejanja. Nato bo ESP 12e prejel podatke iz Adafruit IO prek protokola MQTT in LED se bo vklopila / izklopila v skladu z ukazom.
Tu smo uporabili spletno kamero USB za mikrofon. Storitev Alexa Voice smo že uporabljali za vklop žarnice, vendar lahko obvladuje samo naprave, ki so povezane lokalno.
Ker predvidevamo, da imate Raspberry Pi že nameščen s storitvami Alexa Voice, ostajamo pri spodnjih dveh korakih, ki jih bomo razložili posebej:
- Nastavitev računa Adafruit za komunikacijo
- Povežite Alexa z Adafruit IO z uporabo IFTTT
- Koda za nalaganje v ESP12
Nastavitev računa Adafruit za komunikacijo
Najprej bomo naredili vir v Adafruit IO. Vir hrani podatke, ki jih pošlje IFTTT. Če želite narediti vir, sledite tem korakom:
1. korak: - Prijavite se na Adafruit IO s svojimi poverilnicami ali se prijavite, če nimate računa.
2. korak: - Kliknite Moj račun -> Nadzorna plošča
3. korak: - Kliknite Dejanja in ustvarite novo nadzorno ploščo .
4. korak: - V viru dodajte ime in opis ter kliknite Ustvari .
5. korak: - Kliknite gumb Ključ in si zapišite tipke AIO, ta ključ bomo uporabili v naši kodi.
6. korak: - Kliknite gumb '+', da ustvarite nov blok, in kliknite gumb za preklop.
7. korak: - Zdaj vnesite ime vira in kliknite Ustvari . Nato izberite vir in kliknite Naslednji korak.
8. korak: - V nastavitvah bloka v besedilno polje Button ON vpišite »1«, v besedilno polje Button OFF pa »0«.
9. korak: - Vaš vir je uspešno ustvarjen.
Povežite Alexa z Adafruit IO z uporabo IFTTT
Sledite tem korakom, da v IFTTT pripravite programček / recept:
1. korak: - Prijavite se v IFTTT s svojimi poverilnicami ali se prijavite, če nimate računa.
2. korak: - V mojih apletih kliknite Nov programček
3. korak: - kliknite + to
4. korak: - Poiščite Amazon Alexa in kliknite nanjo, se prijavite s svojimi podatki o računu razvijalca za Amazon.
5. korak: - Izberite sprožilec, izgovorite določeno besedno zvezo
6. korak: - Kot stavek navedite » prižgite luč« , kliknite na Ustvari sprožilec.
7. korak: - kliknite + to
8. korak: - poiščite Adafruit in kliknite nanj.
9. korak: - Prijavite se v račun Adafruit s svojimi poverilnicami. Kliknite Pošlji podatke podjetju Adafruit .
Izberite ime vira, ki ste ga pravkar ustvarili v Adafruit IO. Zdaj vnesite 1 za podatke, ki jih želite shraniti, kar pomeni, da bo LED svetil. Kliknite Ustvari akcijo .
10. korak: - Sledite istim korakom, da izdelate aplete za izklop LED . V polje Podatki za shranjevanje preprosto vnesite 0. Vsi koraki ostanejo enaki.
Opravili ste polovico svojega dela. Zdaj je čas, da programirate svoj ESP-12E.
Pojasnilo kode ESP12
ESP12 bomo programirali z Arduino IDE. Popolna koda je podana na koncu te vadnice.
Najprej potrebujemo knjižnico Adafruit Mqtt, ki jo lahko prenesete s te povezave. Preprosto odprite Arduino IDE. Pojdite na primere -> knjižnica adafruit mqtt -> mqtt_esp8266
To kodo bomo urejali v skladu s ključi AIO in poverilnicami Wi-Fi.
Najprej smo vključili vse knjižnice za ESP8266WIFI in Adafruit MQTT .
#include
Določili smo SSID in geslo za vaš Wi-Fi, iz katerega želite povezati svoj ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Ta razdelek opredeljuje strežnik Adafruit in vrata strežnika, ki sta določena kot » io.adafruit.com « oziroma » 1883 «.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Spodnja polja zamenjajte z uporabniškim imenom in AIO ključi, ki ste jih kopirali s spletnega mesta Adafruit med ustvarjanjem vira.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Nato ustvarite razred ESP8266 WiFiClient za povezavo s strežnikom MQTT.
Odjemalec WiFiClient;
Nastavite razred odjemalca MQTT tako, da vnesete odjemalca WiFi in strežnik MQTT ter podatke za prijavo.
Adafruit_MQTT_Client mqtt (& odjemalec, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Nastavite vir, imenovan "lučka", da se naročite na spremembe.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
V nastavitveni funkciji prijavimo kodo PIN ESP-12e, za katero želite dobiti izhod. Kot izhod uporabljam pin D0. Nato ESP-12e povežemo z dostopno točko Wi-Fi.
void setup () { Serial.begin (115200); zamuda (10); pinMode (D0, IZHOD); Serial.println (F ("Demofruit MQTT demo")); // Povežite se z dostopno točko WiFi. Serial.println (); Serial.println (); Serial.print ("Povezovanje z"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); medtem ko (WiFi.status ()! = WL_CONNECTED) { …. ... ...
Nastavite naročnino na MQTT za lahki dovod.
mqtt.subscribe (& light); }
V funkciji zanke bomo s pomočjo MQTT_connect () zagotovili, da bo povezava s strežnikom MQTT živa; funkcijo.
void loop () { MQTT_connect ();
Zdaj se naročimo na 'lahki' vir in dobimo niz iz adafruit IO in pretvorimo ta niz v število s pomočjo atoi (); funkcijo in to številko napišite na PIND0 s pomočjo digitalWrite (); funkcijo.
Naročnina 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, število); }
Delo:
ESP-12E povežite s prenosnikom in naložite spodnjo kodo (v kodo ne pozabite urediti svojih poverilnic).
Na pin D0 priključite LED ali rele. Zdaj se prepričajte, da se vaša storitev Alexa izvaja na vašem RPi.
Če želite dati kateri koli ukaz, morate prebuditi storitev Alexa tako, da vsakič, ko želite poslati ukaz, pokličite »Alexa«. Slišali boste pisk. Ko zaslišite pisk, recite » Alexa Trigger Turn the Light. ”Lučko lahko vidite v trenutku. In če izgovorite » Alexa Trigger Turn off the Light «, se mora lučka ugasniti.
To je to… V zgornjo kodo lahko dodate več naprav, tako da dodate IFIO zatiče ESP-12E in v IFTTT izdelate različne programčke z različnimi besednimi zvezami.
Spodaj preverite celotno kodo in predstavitveni video. Tukaj preverite tudi vse naše projekte avtomatizacije domov