- Hårdvarukrav
- Projektflöde för Alexa röststyrd LED
- Skapa ett Adafruit-konto för kommunikation
- Länka Alexa till Adafruit IO med IFTTT
- ESP12-kodförklaring
- Arbetssätt:
I tidigare handledning har vi sett hur vi kan bygga en Amazon Echo-högtalare och sedan hur kan vi styra alla Raspberry Pi GPIO med Alexa Voice. Nu gör vi ett IoT-projekt för att styra hushållsapparater var som helst i världen med AlexaPi och ESP-12E (eller något ESP-kort).
Hårdvarukrav
- Raspberry Pi med AVS installerad i den
- USB 2.0 mikrofon / webbkamera
- ESP-12E
- Relämodul
- LED / AC-lampa
Du borde ha din Raspberry Pi redo med Alexa rösttjänst installerad i den med ett korrekt konfigurerat Amazon Developer-konto. Så gå igenom handledningen nedan för att göra Alexa-tjänster redo.
- Bygg ditt eget Amazon Echo med en Raspberry Pi
Projektflöde för Alexa röststyrd LED
Vi kommer att följa detta flödesschema för detta IoT-styrda LED-projekt:
Så processen är ungefär så här. Först ges ingång till Raspberry Pi via USB- mikrofonen. Nu skickas denna inspelning till Alexa rösttjänster och efter röstigenkänning skickade AVS data till IFTTT och det utlöser tillståndet i IFTTT. Enligt receptet kommer IFTTT att skicka kommandot till Adafruit IO som är MQTT-mäklaren för att utföra en åtgärd. Sedan kommer ESP 12e att ta emot data från Adafruit IO via MQTT-protokollet och lysdioden slås PÅ / AV enligt kommandot.
Här har vi använt en USB WebCam för mikrofon. Vi har redan använt Alexa Voice-tjänsten för att sätta på en lampa, men den kan bara hantera apparater som är anslutna lokalt.
Eftersom vi antar att du redan har Raspberry Pi med Alexa Voice-tjänster installerade, så återstår vi med nedanstående två steg, som vi kommer att förklara en efter en:
- Skapa ett Adafruit-konto för kommunikation
- Länka Alexa till Adafruit IO med IFTTT
- Ladda upp kod i ESP12
Skapa ett Adafruit-konto för kommunikation
Först kommer vi att göra ett flöde i Adafruit IO. Feed lagrar data som skickas av IFTTT. Följ dessa steg för att göra flöden:
Steg 1: - Logga in på Adafruit IO med dina referenser eller Registrera dig om du inte har ett konto.
Steg 2: - Klicka på Mitt konto -> Instrumentpanel
Steg 3: - Klicka på Åtgärder och skapa en ny instrumentpanel .
Steg 4: - Ge ditt flöde namn och beskrivning och klicka på Skapa .
Steg 5: - Klicka på knappen Nyckel och notera AIO-tangenterna, vi kommer att använda den här nyckeln i vår kod.
Steg 6: - Klicka på '+' för att skapa ett nytt block och klicka på växlingsknappen.
Steg 7: - Ange nu flödets namn och klicka på Skapa . Välj sedan flödet och klicka på Nästa steg.
Steg 8: - I blockinställningar, skriv '1' i knapp PÅ textfält och '0' i knapp AV Textfält .
Steg 9: - Ditt flöde har skapats.
Länka Alexa till Adafruit IO med IFTTT
Följ dessa steg för att skapa en applet / ett recept i IFTTT:
Steg 1: - Logga in till IFTTT med dina referenser eller Registrera dig om du inte har ett konto på det.
Steg 2: - Klicka på Ny applet på mina miniprogram
Steg 3: - Klicka på + detta
Steg 4: - Sök på Amazon Alexa och klicka på den, logga in med dina Amazon-utvecklare kontoinformation.
Steg 5: - Välj avtryckaren, säg en specifik fras
Steg 6: - Ange " tänd lampan" som frasen, klicka på Skapa utlösare.
Steg 7: - Klicka på + det
Steg 8: - Sök i Adafruit och klicka på det.
Steg 9: - Logga in på Adafruit-konto med dina uppgifter. Klicka på Skicka data till Adafruit .
Välj flödesnamn som du just skapade i Adafruit IO. Ge nu '1' i data för att spara, detta innebär att lysdioden lyser. Klicka på Skapa åtgärd .
Steg 10: - Följ samma steg för att skapa apparater för att stänga av LED-lampan . Sätt bara '0' i fältet Data för att spara. Alla steg förblir desamma.
Du har gjort hälften av ditt arbete. Nu är det dags att programmera din ESP-12E.
ESP12-kodförklaring
Vi kommer att programmera ESP12 med Arduino IDE. Komplett kod ges i slutet av denna handledning.
Först behöver vi ett Adafruit Mqtt-bibliotek som kan laddas ner från den här länken. Öppna bara Arduino IDE. Gå till exempel -> adafruit mqtt-bibliotek -> mqtt_esp8266
Vi kommer att redigera den här koden enligt våra AIO-nycklar och Wi-Fi-referenser.
Först inkluderade vi alla bibliotek för ESP8266WIFI och Adafruit MQTT .
#omfatta
Vi definierade SSID och lösenord för ditt Wi-Fi, från vilket du vill ansluta din ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Detta avsnitt definierar Adafruit-servern och serverporten som är fixerade som “ io.adafruit.com ” respektive “ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Byt ut fälten nedan med ditt användarnamn och AIO-nycklar som du har kopierat från Adafruit-webbplatsen när du skapade flödet.
#define AIO_USERNAME "********" #define AIO_KEY "*****************************"
Skapa sedan en ESP8266 WiFiClient-klass för att ansluta till MQTT-servern.
WiFiClient-klient;
Ställ in MQTT-klientklassen genom att skicka in WiFi-klienten och MQTT-servern och inloggningsinformation.
Adafruit_MQTT_Client mqtt (& klient, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Ställ in ett flöde som heter 'ljus' för att prenumerera på ändringar.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
I installationsfunktionen deklarerar vi PIN för ESP-12e som du vill få utdata på. Jag använder D0-stift som utgång. Sedan ansluter vi ESP-12e till Wi-Fi-åtkomstpunkten.
ogiltig installation () { Serial.begin (115200); fördröjning (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demo")); // Anslut till WiFi-åtkomstpunkt. Serial.println (); Serial.println (); Serial.print ("Ansluter till"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); medan (WiFi.status ()! = WL_CONNECTED) { …. …. ...
Ställ in MQTT-prenumeration för lättmatning.
mqtt.prenumerera (& ljus); }
I loop- funktion kommer vi att se till att anslutningen till MQTT-servern är vid liv med MQTT_connect (); fungera.
ogiltig slinga () { MQTT_connect ();
Nu prenumererar vi på vårt "lätta" flöde och hämtar strängen från adafruit IO och konverterar den här strängen till nummer med atoi (); funktion och skriv detta nummer till PIND0 med digitalWrite (); fungera.
Adafruit_MQTT_Prenumerera * prenumeration; medan ((prenumeration = mqtt.readSubscription (5000))) { if (prenumeration == & ljus) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Arbetssätt:
Anslut din ESP-12E till den bärbara datorn och ladda upp koden nedan (glöm inte att redigera dina referenser i koden).
Anslut en LED eller relä till stift D0. Se nu till att din Alexa-tjänst körs på din RPi.
För att ge något kommando måste du väcka Alexa-tjänsten genom att ringa "Alexa" varje gång du vill skicka ett kommando. Du hör ett pip. När du hör pipet, säg “ Alexa Trigger Slå på ljuset. ”Du kan se att ljuset tänds inom ett ögonblick. Och om du säger " Alexa Trigger Stäng av ljuset ", bör ljuset stängas AV.
Det är allt…. Du kan lägga till fler apparater i ovanstående kod genom att lägga till GPIO-stiften på ESP-12E och genom att skapa olika applets med olika fraser i IFTTT.
Kontrollera hela koden och demonstrationsvideo nedan. Kolla även in våra alla hemautomationsprojekt här