- Requisitos de hardware
- Flujo de proyecto para LED controlado por voz de Alexa
- Configurar una cuenta de Adafruit para la comunicación
- Vincular Alexa a Adafruit IO usando IFTTT
- Explicación del código ESP12
- Trabajando:
En tutoriales anteriores, hemos visto Cómo podemos construir un Amazon Echo Speaker y luego cómo podemos controlar cualquier Raspberry Pi GPIO usando Alexa Voice. Ahora estamos haciendo un proyecto de IoT para controlar electrodomésticos desde cualquier parte del mundo utilizando AlexaPi y ESP-12E (o cualquier placa ESP).
Requisitos de hardware
- Raspberry Pi con AVS instalado
- Cámara web / micrófono USB 2.0
- ESP-12E
- Módulo de relé
- Bombilla LED / AC
Debe tener su Raspberry Pi lista con el servicio de voz Alexa instalado con una cuenta de desarrollador de Amazon correctamente configurada. Así que sigue el tutorial a continuación para preparar los servicios de Alexa.
- Construye tu propio Amazon Echo usando una Raspberry Pi
Flujo de proyecto para LED controlado por voz de Alexa
Seguiremos este diagrama de flujo para este proyecto de LED controlado por IoT:
Entonces, el proceso es algo como esto. Primero, se le da entrada a Raspberry Pi a través del micrófono USB. Ahora, esta grabación se envía a los servicios de voz de Alexa y, después del reconocimiento de voz, AVS envió los datos a IFTTT y activa la condición en IFTTT. De acuerdo con la receta, IFTTT enviará el comando a Adafruit IO, que es el intermediario MQTT para realizar una acción. Luego, ESP 12e recibirá los datos de Adafruit IO a través del protocolo MQTT y el LED se encenderá / apagará de acuerdo con el comando.
Aquí hemos utilizado una WebCam USB para micrófono. Ya hemos utilizado el servicio Alexa Voice para encender una bombilla, pero solo puede manejar dispositivos que están conectados localmente.
Como suponemos que ya tiene Raspberry Pi con los servicios de Alexa Voice instalados, nos quedamos con dos pasos a continuación, que explicaremos uno por uno:
- Configurar una cuenta de Adafruit para la comunicación
- Vincular Alexa a Adafruit IO usando IFTTT
- Cargar código en ESP12
Configurar una cuenta de Adafruit para la comunicación
Primero, haremos un pienso en Adafruit IO. Feed almacena los datos enviados por IFTTT. Para hacer la alimentación siga estos pasos:
Paso 1: - Inicie sesión en Adafruit IO con sus credenciales o regístrese si no tiene una cuenta.
Paso 2: - Haga clic en Mi cuenta -> Panel de control
Paso 3: - Haga clic en Acciones y cree un nuevo tablero .
Paso 4: - Da nombre y descripción a tu feed y haz clic en Crear .
Paso 5: - Haga clic en el botón Clave y anote las teclas AIO, usaremos esta clave en nuestro código.
Paso 6: - Haga clic en el botón '+' para crear un nuevo bloque y haga clic en el botón Alternar.
Paso 7: - Ahora, ingrese el nombre de la fuente y haga clic en Crear . Luego seleccione la fuente y haga clic en Siguiente paso.
Paso 8: - En la configuración del bloque, escriba '1' en el campo de texto Botón ON y '0' en el campo de texto Botón OFF .
Paso 9: - Su feed se ha creado correctamente.
Vincular Alexa a Adafruit IO usando IFTTT
Siga estos pasos para hacer un applet / receta en IFTTT:
Paso 1: - Acceso a IFTTT con sus credenciales o Registrarse si no tiene una cuenta en él.
Paso 2: - En Mis subprogramas, haga clic en Nuevo subprograma
Paso 3: - Haga clic en + este
Paso 4: - Busque Amazon Alexa y haga clic en él, inicie sesión con los detalles de su cuenta de desarrollador de Amazon.
Paso 5: - Elija el disparador, diga una frase específica
Paso 6: - Proporcione " encender la luz" como frase, haga clic en Crear disparador.
Paso 7: - Haga clic en + que
Paso 8: - Busque Adafruit y haga clic en él.
Paso 9: - Inicie sesión en la cuenta Adafruit con sus credenciales. Haga clic en Enviar datos a Adafruit .
Seleccione el nombre de la fuente que acaba de crear en Adafruit IO. Ahora, ingrese '1' en datos para guardar, esto implica que el LED estará ENCENDIDO. Haga clic en Crear acción .
Paso 10: - Siga los mismos pasos para hacer applets para apagar el LED . Simplemente ponga '0' en el campo Datos para guardar. Todos los pasos siguen siendo los mismos.
Has hecho la mitad de tu trabajo. Ahora es el momento de programar su ESP-12E.
Explicación del código ESP12
Programaremos ESP12 con Arduino IDE. El código completo se proporciona al final de este tutorial.
Primero, necesitamos una biblioteca Adafruit Mqtt que se puede descargar desde este enlace. Simplemente abra Arduino IDE. Vaya a ejemplos -> biblioteca adafruit mqtt -> mqtt_esp8266
Vamos a editar el código de acuerdo con las llaves de la AIO y credenciales de Wi-Fi.
Primero, incluimos todas las bibliotecas para ESP8266WIFI y Adafruit MQTT .
#incluir
Nosotros definimos el SSID y la contraseña para su red Wi-Fi, de la que desea conectar el ESP-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Esta sección define el servidor Adafruit y el puerto del servidor, que se fija como " io.adafruit.com " y " 1883 " respectivamente.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Reemplace los campos a continuación con su nombre de usuario y claves AIO que ha copiado del sitio de Adafruit mientras realizaba el Feed.
#define AIO_USERNAME "********" #define AIO_KEY "****************************"
Luego, cree una clase ESP8266 WiFiClient para conectarse al servidor MQTT.
Cliente WiFiClient;
Configure la clase de cliente MQTT pasando el cliente WiFi y el servidor MQTT y los detalles de inicio de sesión.
Adafruit_MQTT_Client mqtt (& cliente, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Configure un feed llamado 'light' para suscribirse a los cambios.
Adafruit_MQTT_Subscribe light = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / light");
En la función de configuración, declaramos el PIN de ESP-12e en el que desea obtener la salida. Estoy usando el pin D0 como salida. Luego, conectamos el ESP-12e al punto de acceso Wi-Fi.
configuración vacía () { Serial.begin (115200); retraso (10); pinMode (D0, SALIDA); Serial.println (F ("Demo de Adafruit MQTT")); // Conéctese al punto de acceso WiFi. Serial.println (); Serial.println (); Serial.print ("Conectando a"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); while (WiFi.status ()! = WL_CONNECTED) { …. …. ...
Configure la suscripción MQTT para alimentación ligera.
mqtt.subscribe (& light); }
En la función de bucle , nos aseguraremos de que la conexión al servidor MQTT esté activa usando MQTT_connect (); función.
bucle vacío () { MQTT_connect ();
Ahora, suscribimos nuestro feed 'ligero' y obtenemos la cadena de adafruit IO y convertimos esta cadena en un número usando atoi (); funciona y escribe este número en PIND0 usando digitalWrite (); función.
Suscripción Adafruit_MQTT_Subscribe *; while ((suscripción = mqtt.readSubscription (5000))) { if (suscripción == & light) { Serial.print (F ("Got_light:")); Serial.println ((char *) light.lastread); uint16_t num = atoi ((char *) light.lastread); escritura digital (16, núm); }
Trabajando:
Conecte su ESP-12E con la computadora portátil y cargue el siguiente código (no olvide editar sus credenciales en el código).
Conecte un LED o relé al pin D0. Ahora, asegúrese de que su servicio Alexa se esté ejecutando en su RPi.
Para dar cualquier comando, debe activar el servicio de Alexa llamando a "Alexa" cada vez que desee enviar un comando. Oirá un pitido. Una vez que escuche el pitido, diga “ Alexa Trigger Enciende la luz. ”Puede ver que la luz se enciende en un momento. Y luego, si dices " Alexa Trigger apaga la luz ", la luz debería apagarse.
Eso es…. Puede agregar más dispositivos en el código anterior agregando los pines GPIO de ESP-12E y haciendo diferentes Applets con diferentes frases en IFTTT.
Consulte el código completo y el video de demostración a continuación. Consulte también todos nuestros proyectos de automatización del hogar aquí