- Hardwarevereisten
- Projectstroom voor Alexa Voice Controlled LED
- Een Adafruit-account opzetten voor communicatie
- Koppel Alexa aan Adafruit IO met behulp van IFTTT
- ESP12 Code Uitleg
- Werken:
In eerdere tutorials hebben we gezien hoe we een Amazon Echo-luidspreker kunnen bouwen en hoe we een Raspberry Pi GPIO kunnen besturen met Alexa Voice. Nu maken we een IoT-project om huishoudelijke apparaten overal ter wereld te bedienen met AlexaPi en ESP-12E (of een ander ESP-bord).
Hardwarevereisten
- Raspberry Pi met AVS erin geïnstalleerd
- USB 2.0-microfoon / webcam
- ESP-12E
- Relaismodule
- LED / AC-lamp
Je moet je Raspberry Pi gereed hebben met Alexa-spraakservice erin geïnstalleerd met een correct geconfigureerd Amazon-ontwikkelaarsaccount. Dus volg onderstaande tutorial om Alexa-services klaar te maken.
- Bouw je eigen Amazon Echo met een Raspberry Pi
Projectstroom voor Alexa Voice Controlled LED
We zullen dit stroomschema volgen voor dit IoT-gestuurde LED-project:
Het proces is dus ongeveer zo. Ten eerste wordt input gegeven aan Raspberry Pi via de USB Mic. Nu wordt deze opname verzonden naar Alexa-spraakservices en na spraakherkenning stuurde AVS de gegevens naar IFTTT en activeert het de toestand in IFTTT. Volgens het recept stuurt IFTTT het commando naar Adafruit IO, de MQTT-makelaar om een actie uit te voeren. Vervolgens ontvangt ESP 12e de gegevens van Adafruit IO via het MQTT-protocol en gaat de LED AAN / UIT volgens het commando.
Hier hebben we een USB-webcam voor microfoon gebruikt. We hebben de Alexa Voice-service al gebruikt om een lamp in te schakelen, maar deze kan alleen apparaten verwerken die lokaal zijn aangesloten.
Omdat we aannemen dat je Raspberry Pi al met Alexa Voice-services hebt geïnstalleerd, blijven we verder met onderstaande twee stappen, die we een voor een zullen uitleggen:
- Een Adafruit-account opzetten voor communicatie
- Koppel Alexa aan Adafruit IO met behulp van IFTTT
- Upload code in ESP12
Een Adafruit-account opzetten voor communicatie
Eerst maken we een feed in Adafruit IO. Feed slaat de gegevens op die door IFTTT zijn verzonden. Volg deze stappen om feed te maken:
Stap 1: - Log in op Adafruit IO met uw inloggegevens of meld u aan als u geen account heeft.
Stap 2: - Klik op Mijn account -> Dashboard
Stap 3: - Klik op Acties en maak een nieuw dashboard .
Stap 4: - Geef een naam en beschrijving aan uw feed en klik op Aanmaken .
Stap 5: - Klik op de Key- knop en noteer de AIO-sleutels, we gebruiken deze sleutel in onze code.
Stap 6: - Klik op de knop '+' om een nieuw blok te maken en klik op de knop Toggle.
Stap 7: - Voer nu de naam van de feed in en klik op Create . Selecteer vervolgens de feed en klik op Volgende stap.
Stap 8: - Schrijf in blokinstellingen '1' in het tekstveld Knop AAN en '0' in het tekstveld Knop UIT .
Stap 9: - Uw feed is succesvol aangemaakt.
Koppel Alexa aan Adafruit IO met behulp van IFTTT
Volg deze stappen om een applet / recept te maken in IFTTT:
Stap 1: - Log in op IFTTT met uw referenties of Aanmelden als u nog geen account op het hebben.
Stap 2: - Klik in Mijn applets op Nieuwe applet
Stap 3: - Klik op + dit
Stap 4: - Zoek in Amazon Alexa en klik erop, log in met de gegevens van je Amazon-ontwikkelaarsaccount.
Stap 5: - Kies de trigger, zeg een specifieke zin
Stap 6: - Geef " turn on the light" op als de zin, klik op Create Trigger.
Stap 7: - Klik op + dat
Stap 8: - Zoek Adafruit en klik erop.
Stap 9: - Log in op Adafruit-account met uw inloggegevens. Klik op Gegevens naar Adafruit verzenden .
Selecteer de feednaam die u zojuist in Adafruit IO heeft aangemaakt. Geef nu '1' aan gegevens om op te slaan, dit betekent dat de LED AAN zal zijn. Klik op Actie maken .
Stap 10: - Volg dezelfde stappen om applets te maken om de LED UIT te schakelen . Zet gewoon '0' in het veld Gegevens om op te slaan. Alle stappen blijven hetzelfde.
Je hebt de helft van je werk gedaan. Nu is het tijd om uw ESP-12E te programmeren.
ESP12 Code Uitleg
We zullen ESP12 programmeren met Arduino IDE. De volledige code wordt aan het einde van deze tutorial gegeven.
Ten eerste hebben we een Adafruit Mqtt-bibliotheek nodig die via deze link kan worden gedownload. Open gewoon Arduino IDE. Ga naar voorbeelden -> adafruit mqtt-bibliotheek -> mqtt_esp8266
We zullen deze code bewerken volgens onze AIO-sleutels en Wi-Fi-inloggegevens.
Ten eerste hebben we alle bibliotheken voor ESP8266WIFI en Adafruit MQTT opgenomen .
# omvatten
We hebben de SSID en het wachtwoord voor uw wifi gedefinieerd, waarmee u uw ESP-12e wilt verbinden.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Deze sectie definieert de Adafruit-server en serverpoort die zijn vastgesteld op respectievelijk “ io.adafruit.com ” en “ 1883 ”.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Vervang onderstaande velden door uw gebruikersnaam en AIO-sleutels die u tijdens het maken van de feed van de Adafruit-site hebt gekopieerd.
#define AIO_USERNAME "********" #define AIO_KEY "*******************************"
Maak vervolgens een ESP8266 WiFiClient-klasse om verbinding te maken met de MQTT-server.
WiFiClient-client;
Stel de MQTT-clientklasse in door de WiFi-client en MQTT-server en inloggegevens door te geven.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Stel een feed in met de naam 'light' om u te abonneren op wijzigingen.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
In de instelfunctie verklaren we de PIN van ESP-12e waarop u uitvoer wilt krijgen. Ik gebruik D0-pin als uitvoer. Vervolgens verbinden we de ESP-12e met een Wi-Fi-toegangspunt.
ongeldige setup () { Serial.begin (115200); vertraging (10); pinMode (D0, OUTPUT); Serial.println (F ("Adafruit MQTT demo")); // Maak verbinding met WiFi-toegangspunt. Serial.println (); Serial.println (); Serial.print ("Verbinden met"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. …. ...
MQTT-abonnement instellen voor lichte feed.
mqtt.subscribe (& light); }
In loop- functie zorgen we ervoor dat de verbinding met de MQTT-server actief is met behulp van MQTT_connect (); functie.
leegte lus () { MQTT_connect ();
Nu abonneren we onze 'light'-feed en halen de string van adafruit IO en converteren deze string naar een getal met atoi (); functie en schrijf dit nummer naar PIND0 met behulp van digitalWrite (); functie.
Adafruit_MQTT_Subscribe * abonnement; while ((abonnement = mqtt.readSubscription (5000))) { if (abonnement == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); digitalWrite (16, num); }
Werken:
Verbind uw ESP-12E met de laptop en upload onderstaande code (vergeet niet uw inloggegevens in de code te bewerken).
Sluit een LED of relais aan op pin D0. Zorg er nu voor dat uw Alexa-service op uw RPi draait.
Om een commando te geven, moet je de Alexa-service wakker maken door elke keer dat je een commando wilt verzenden "Alexa" te bellen. U hoort een pieptoon. Zodra je de piep hoort, zeg je ' Alexa Trigger Turn on the Light. ”Je kunt zien dat het licht binnen een oogwenk AAN gaat. En als je dan zegt " Alexa Trigger Turn off the Light ", zou het licht UIT moeten gaan.
Dat is het…. U kunt meer apparaten in de bovenstaande code toevoegen door de GPIO-pinnen van ESP-12E toe te voegen en door verschillende applets met verschillende zinnen in IFTTT te maken.
Bekijk de volledige code en demonstratievideo hieronder. Bekijk hier ook al onze Home Automation-projecten