- Hardwarekrav
- Project Flow til Alexa Voice Controlled LED
- Oprettelse af en Adafruit-konto til kommunikation
- Link Alexa til Adafruit IO ved hjælp af IFTTT
- ESP12-kode Forklaring
- Arbejder:
I tidligere tutorials har vi set hvordan vi kan opbygge en Amazon Echo-højttaler, og hvordan kan vi styre enhver Raspberry Pi GPIO ved hjælp af Alexa Voice. Nu laver vi et IoT-projekt til styring af husholdningsapparater overalt i verden ved hjælp af AlexaPi og ESP-12E (eller et hvilket som helst ESP-kort).
Hardwarekrav
- Raspberry Pi med AVS installeret i den
- USB 2.0 mikrofon / webkamera
- ESP-12E
- Relæmodul
- LED / AC-pære
Du skal have din Raspberry Pi klar med Alexa-stemmetjeneste installeret i den med en korrekt konfigureret Amazon Developer-konto. Så gå gennem nedenstående vejledning for at gøre Alexa-tjenester klar.
- Byg dit eget Amazon Echo ved hjælp af en Raspberry Pi
Project Flow til Alexa Voice Controlled LED
Vi følger dette rutediagram for dette IoT-styrede LED-projekt:
Så processen er noget som dette. Først gives input til Raspberry Pi via USB- mikrofonen. Nu sendes denne optagelse til Alexa- stemmetjenester, og efter stemmegenkendelse sendte AVS dataene til IFTTT, og det udløser tilstanden i IFTTT. Ifølge opskriften sender IFTTT kommandoen til Adafruit IO, som er MQTT-mægleren til at udføre en handling. Derefter modtager ESP 12e dataene fra Adafruit IO via MQTT-protokollen, og LED tændes / slukkes i henhold til kommandoen.
Her har vi brugt en USB WebCam til mikrofon. Vi har allerede brugt Alexa Voice-tjenesten til at tænde en pære, men den kan kun håndtere apparater, der er tilsluttet lokalt.
Da vi antager, at du allerede har installeret Raspberry Pi med Alexa Voice-tjenester, er vi tilbage med under to trin, som vi forklarer en efter en:
- Oprettelse af en Adafruit-konto til kommunikation
- Link Alexa til Adafruit IO ved hjælp af IFTTT
- Upload kode i ESP12
Oprettelse af en Adafruit-konto til kommunikation
Først laver vi et feed i Adafruit IO. Feed gemmer de data, der sendes af IFTTT. Følg disse trin for at lave feed:
Trin 1: - Log ind på Adafruit IO med dine legitimationsoplysninger eller Tilmeld dig, hvis du ikke har en konto.
Trin 2: - Klik på Min konto -> Dashboard
Trin 3: - Klik på Handlinger, og opret et nyt instrumentbræt .
Trin 4: - Giv navn og beskrivelse til dit feed, og klik på Opret .
Trin 5: - Klik på nøgleknappen og noter AIO-tasterne, vi bruger denne nøgle i vores kode.
Trin 6: - Klik på knappen '+' for at oprette en ny blok, og klik på knappen Skift.
Trin 7: - Indtast nu navn på feed, og klik på Opret . Vælg derefter feedet, og klik på Næste trin.
Trin 8: - I blokindstillinger skal du skrive '1' i tekstfelt til knap TIL og '0' i tekstfelt for knap FRA .
Trin 9: - Dit feed er oprettet.
Link Alexa til Adafruit IO ved hjælp af IFTTT
Følg disse trin for at oprette en applet / opskrift i IFTTT:
Trin 1: - Log ind på IFTTT med dine legitimationsoplysninger eller Tilmeld dig, hvis du ikke har en konto på det.
Trin 2: - Klik på Ny applet på mine applets
Trin 3: - Klik på + dette
Trin 4: - Søg på Amazon Alexa og klik på den, log ind med dine Amazon-udvikler-kontooplysninger.
Trin 5: - Vælg udløseren, sig en bestemt sætning
Trin 6: - Angiv " tænd for lyset" som sætningen, klik på Opret udløser.
Trin 7: - Klik på + det
Trin 8: - Søg efter Adafruit og klik på det.
Trin 9: - Log ind på Adafruit-konto ved hjælp af dine legitimationsoplysninger. Klik på Send data til Adafruit .
Vælg det feednavn, du lige har oprettet i Adafruit IO. Giv nu '1' i data for at gemme, dette betyder, at LED vil være tændt. Klik på Opret handling .
Trin 10: - Følg de samme trin for at lave applets for at slukke for LED'en . Sæt bare '0' i feltet Data for at gemme. Alle trin forbliver de samme.
Du har gjort halvdelen af dit arbejde. Nu er det tid til at programmere din ESP-12E.
ESP12-kode Forklaring
Vi programmerer ESP12 med Arduino IDE. Komplet kode gives i slutningen af denne vejledning.
For det første har vi brug for et Adafruit Mqtt-bibliotek, som kan downloades fra dette link. Bare åbn Arduino IDE. Gå til eksempler -> adafruit mqtt-bibliotek -> mqtt_esp8266
Vi redigerer denne kode i henhold til vores AIO-nøgler og Wi-Fi-legitimationsoplysninger.
Først inkluderede vi alle bibliotekerne til ESP8266WIFI og Adafruit MQTT .
#omfatte
Vi definerede SSID og adgangskode til dit Wi-Fi, hvorfra du vil oprette forbindelse til din ESP-12e.
#definer WLAN_SSID "xxxxxxxx" #definer WLAN_PASS "xxxxxxxxxxx"
Dette afsnit definerer Adafruit-serveren og serverporten, der er rettet som henholdsvis “ io.adafruit.com ” og “ 1883 ”.
#definer AIO_SERVER "io.adafruit.com" #definer AIO_SERVERPORT 1883
Erstat nedenstående felter med dit brugernavn og AIO-nøgler, som du har kopieret fra Adafruit-webstedet, mens du opretter feedet.
#definer AIO_USERNAME "********" #definer AIO_KEY "*****************************"
Opret derefter en ESP8266 WiFiClient-klasse for at oprette forbindelse til MQTT-serveren.
WiFiClient-klient;
Opsæt MQTT-klientklassen ved at sende WiFi-klienten og MQTT-serveren og loginoplysninger.
Adafruit_MQTT_Client mqtt (& klient, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Opsæt et feed kaldet 'lys' til abonnement på ændringer.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
I opsætningsfunktionen erklærer vi PIN for ESP-12e, som du ønsker at få output på. Jeg bruger D0-pin som output. Derefter forbinder vi ESP-12e til Wi-fi-adgangspunktet.
ugyldig opsætning () { Serial.begin (115200); forsinkelse (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demo")); // Opret forbindelse til WiFi-adgangspunkt. Serial.println (); Serial.println (); Serial.print ("Opretter forbindelse til"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); mens (WiFi.status ()! = WL_CONNECTED) { …. …. ...
Opsæt MQTT-abonnement til let feed.
mqtt.subscribe (& lys); }
I loop- funktion vil vi sikre, at forbindelsen til MQTT-serveren er i live ved hjælp af MQTT_connect (); fungere.
ugyldig sløjfe () { MQTT_connect ();
Nu abonnerer vi på vores 'lette' feed og henter strengen fra adafruit IO og konverterer denne streng til nummer ved hjælp af atoi (); funktion og skriv dette nummer til PIND0 ved hjælp af digitalWrite (); fungere.
Adafruit_MQTT_Abonner * abonnement; while ((abonnement = mqtt.readSubscription (5000))) { if (abonnement == & lys) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Arbejder:
Forbind din ESP-12E med den bærbare computer, og upload nedenstående kode (glem ikke at redigere dine legitimationsoplysninger i koden).
Tilslut en LED eller relæ til pin D0. Sørg nu for, at din Alexa-tjeneste kører på din RPi.
For at give en kommando skal du vække Alexa-tjenesten ved at kalde "Alexa" hver gang du vil sende en kommando. Du vil høre en biplyd. Når du hører bip, skal du sige “ Alexa Trigger Tænd lyset. ”Du kan se, at lyset tændes inden for et øjeblik. Og så hvis du siger " Alexa Trigger Sluk for lyset ", skulle lyset slukke.
Det er det…. Du kan tilføje flere apparater i ovenstående kode ved at tilføje GPIO-benene på ESP-12E og ved at oprette forskellige applets med forskellige sætninger i IFTTT.
Tjek den komplette kode og demonstrationsvideo nedenfor. Tjek også vores alle Home Automation-projekter her