- Maskinvarekrav
- Prosjektflyt for Alexa Voice Controlled LED
- Sette opp en Adafruit-konto for kommunikasjon
- Koble Alexa til Adafruit IO ved hjelp av IFTTT
- ESP12 Kode Forklaring
- Jobber:
I tidligere veiledninger har vi sett hvordan vi kan bygge en Amazon Echo Speaker, og hvordan kan vi kontrollere hvilken som helst Raspberry Pi GPIO ved hjelp av Alexa Voice. Nå lager vi et IoT-prosjekt for å kontrollere husholdningsapparater fra hvor som helst i verden ved hjelp av AlexaPi og ESP-12E (eller et hvilket som helst ESP-kort).
Maskinvarekrav
- Raspberry Pi med AVS installert i den
- USB 2.0 mic / webkamera
- ESP-12E
- Relémodul
- LED / AC-pære
Du bør ha Raspberry Pi klar med Alexa taletjeneste installert i den med en riktig konfigurert Amazon Developer Account. Så gå gjennom opplæringen nedenfor for å gjøre Alexa-tjenester klare.
- Bygg ditt eget Amazon Echo ved hjelp av en Raspberry Pi
Prosjektflyt for Alexa Voice Controlled LED
Vi vil følge dette flytskjemaet for dette IoT-kontrollerte LED-prosjektet:
Så, prosessen er noe slikt. Først blir inngang gitt til Raspberry Pi gjennom USB- mikrofonen. Nå blir dette opptaket sendt til Alexa taletjenester, og etter stemmegjenkjenning sendte AVS dataene til IFTTT, og det utløser tilstanden i IFTTT. I henhold til oppskriften vil IFTTT sende kommandoen til Adafruit IO som er MQTT-megleren for å utføre en handling. Deretter vil ESP 12e motta dataene fra Adafruit IO via MQTT-protokollen, og LED vil slå PÅ / AV i henhold til kommandoen.
Her har vi brukt en USB WebCam for mikrofon. Vi har allerede brukt Alexa Voice-tjenesten til å slå på en pære, men den kan bare håndtere apparater som er koblet til lokalt.
Da vi antar at du allerede har Raspberry Pi med Alexa Voice-tjenester installert, så gjenstår vi med under to trinn, som vi vil forklare en etter en:
- Sette opp en Adafruit-konto for kommunikasjon
- Koble Alexa til Adafruit IO ved hjelp av IFTTT
- Last opp kode i ESP12
Sette opp en Adafruit-konto for kommunikasjon
Først skal vi lage en feed i Adafruit IO. Feed lagrer dataene som sendes av IFTTT. Følg disse trinnene for å lage feed:
Trinn 1: - Logg inn på Adafruit IO med din legitimasjon eller Registrer deg hvis du ikke har en konto.
Trinn 2: - Klikk på Min konto -> Dashbord
Trinn 3: - Klikk på Handlinger og Opprett et nytt dashbord .
Trinn 4: - Gi navn og beskrivelse til feeden din, og klikk på Opprett .
Trinn 5: - Klikk på Key knappen og noter AIO Keys, vil vi bruke denne nøkkelen i vår kode.
Trinn 6: - Klikk på '+' -knappen for å opprette en ny blokk, og klikk på Veksle-knappen.
Trinn 7: - Nå, skriv inn navn på feed og klikk på Create . Velg deretter feed og klikk på Neste trinn.
Trinn 8: - I blokkinnstillinger, skriv '1' i knapp PÅ tekstfelt og '0' i knapp AV Tekstfelt.
Trinn 9: - Strømmen din ble opprettet.
Koble Alexa til Adafruit IO ved hjelp av IFTTT
Følg disse trinnene for å lage en applet / oppskrift i IFTTT:
Trinn 1: - Logg inn på IFTTT med påloggingsinformasjonen eller Registrer deg hvis du ikke har en konto på den.
Trinn 2: - På Mine applets, klikk på New Applet
Trinn 3: - Klikk på + dette
Trinn 4: - Søk på Amazon Alexa og klikk på den, logg på med detaljer om Amazon-utviklerkontoen.
Trinn 5: - Velg utløseren, si en bestemt setning
Trinn 6: - Gi " slå på lyset" som uttrykk, klikk på Create Trigger.
Trinn 7: - Klikk på + det
Trinn 8: - Søk i Adafruit og klikk på den.
Trinn 9: - Logg inn på Adafruit-kontoen ved hjelp av legitimasjonen din. Klikk på Send data til Adafruit .
Velg feednavnet du nettopp opprettet i Adafruit IO. Nå, gi '1' i data for å lagre, dette innebærer at LED vil være PÅ. Klikk på Opprett handling .
Trinn 10: - Følg de samme trinnene for å lage appletter for å slå av LED-lampen . Bare sett '0' i feltet Data for å lagre. Alle trinn forblir de samme.
Du har gjort halvparten av arbeidet ditt. Nå er det på tide å programmere ESP-12E.
ESP12 Kode Forklaring
Vi programmerer ESP12 med Arduino IDE. Komplett kode er gitt på slutten av denne veiledningen.
Først trenger vi et Adafruit Mqtt-bibliotek som kan lastes ned fra denne lenken. Bare åpne Arduino IDE. Gå til eksempler -> adafruit mqtt-bibliotek -> mqtt_esp8266
Vi vil redigere denne koden i henhold til våre AIO-nøkler og Wi-Fi-legitimasjon.
Først inkluderte vi alle bibliotekene for ESP8266WIFI og Adafruit MQTT .
#inkludere
Vi definerte SSID og passord for Wi-Fi, som du vil koble til ESP-12e fra.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Denne delen definerer Adafruit-serveren og serverporten som er løst som henholdsvis “ io.adafruit.com ” og “ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Bytt ut feltene nedenfor med brukernavnet ditt og AIO-nøklene som du har kopiert fra Adafruit-nettstedet mens du lager feeden.
#define AIO_USERNAME "********" #define AIO_KEY "*****************************"
Opprett deretter en ESP8266 WiFiClient-klasse for å koble til MQTT-serveren.
WiFiClient-klient;
Sett opp MQTT-klientklassen ved å sende inn WiFi-klienten og MQTT-serveren og påloggingsinformasjonen.
Adafruit_MQTT_Client mqtt (& klient, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Sett opp en feed kalt 'light' for å abonnere på endringer.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
I oppsettfunksjonen erklærer vi PIN for ESP-12e som du vil få utgang på. Jeg bruker D0-pin som utgang. Deretter kobler vi ESP-12e til Wi-fi-tilgangspunktet.
ugyldig oppsett () { Serial.begin (115200); forsinkelse (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demo")); // Koble til WiFi tilgangspunkt. Serial.println (); Serial.println (); Serial.print ("Koble til"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); mens (WiFi.status ()! = WL_CONNECTED) { …. …. ...
Konfigurer MQTT-abonnement for lett feed.
mqtt. abonner (& lys); }
I loop- funksjon vil vi sikre at forbindelsen til MQTT-serveren er i live ved hjelp av MQTT_connect (); funksjon.
ugyldig sløyfe () { MQTT_connect ();
Nå abonnerer vi på vårt 'lette' feed og henter strengen fra adafruit IO og konverterer denne strengen til nummer ved hjelp av atoi (); funksjon og skriv dette nummeret til PIND0 ved hjelp av digitalWrite (); funksjon.
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); }
Jobber:
Koble ESP-12E til den bærbare datamaskinen og last opp koden nedenfor (ikke glem å redigere legitimasjonen din i koden).
Koble en LED eller relé til pin D0. Forsikre deg om at Alexa-tjenesten din kjører på RPi-en din.
For å gi en hvilken som helst kommando må du vekke Alexa-tjenesten ved å ringe "Alexa" hver gang du vil sende en kommando. Du vil høre en pipelyd. Når du hører pipet, si “ Alexa Trigger Slå på lyset. ”Du kan se at lyset slås PÅ i løpet av et øyeblikk. Og så hvis du sier " Alexa Trigger Slå av lyset ", skal lyset slås AV.
Det er det…. Du kan legge til flere apparater i koden ovenfor ved å legge til GPIO-pinnene til ESP-12E og ved å lage forskjellige applets med forskjellige setninger i IFTTT.
Sjekk den fullstendige koden og demonstrasjonsvideoen nedenfor. Sjekk også alle hjemmeautomatiseringsprosjektene her