¡Descubre cómo controlar un relé con tu voz a través de Alexa utilizando ESP32 y ESP8266! En este artículo, te enseñaremos paso a paso cómo integrar estos dispositivos para crear un sistema domótico que responda a tus comandos de voz. ¡No te pierdas esta increíble oportunidad de convertir tu hogar en un lugar más inteligente y conectado!
En este proyecto aprenderás a controlar el ESP8266 o ESP32 con comandos de voz a través de Alexa (Amazon Echo Dot). Como ejemplo, controlamos dos lámparas de 12V conectadas a un módulo de relé. También agregamos dos interruptores de pared RF de 433 MHz para controlar físicamente las lámparas.
nota: Este tutorial es compatible con todas las generaciones de Echo Dot y con la última biblioteca fauxmoESP (3.1.0). Funciona con ESP32 y ESP8266.
Mira el vídeo demostrativo del proyecto.
Recomendamos los siguientes tutoriales como referencia:
- Primeros pasos con el transceptor Wi-Fi ESP8266
- Comenzando con el módulo de desarrollo ESP32
- Decodifica y envía señales RF de 433 MHz con Arduino
- Instrucciones para módulo de relé con Arduino.
Descripción del proyecto
Este proyecto funciona tanto con ESP8266 como con ESP32. Proporcionamos instrucciones para ambas placas de desarrollo. Antes de pasar directamente al proyecto, lea esta sección para ver qué logrará al final de este proyecto.
Controlar luces con Alexa
Al final de este proyecto, podrás controlar dos lámparas (Lámpara 1 y Lámpara 2) con comandos de voz a través de Alexa. La siguiente figura muestra una descripción general de cómo funciona el proyecto para controlar la Lámpara 1; funciona de manera similar para la Lámpara 2.
Alexa responde a los siguientes comandos:
- «Alexa, enciende la lámpara 1»
- «Alexa, apaga la lámpara 1»
- «Alexa, enciende la lámpara 2»
- «Alexa, enciende la lámpara 2»
- «Alexa, enciende las luces» enciende ambas luces
- «Alexa, apaga las luces» apaga ambas luces
Si dices algo como «Alexa, enciende la lámpara 1»el ESP8266 o ESP32 activará un relé para encender la lámpara 1. Si dices algo como «Alexa, apaga la lámpara 1»el ESP8266 o ESP32 envía una señal al relé para apagar la lámpara. Funciona de manera similar para la lámpara 2.
Lámparas de control con interruptores de pared de 433 MHz.
En este proyecto también agregaremos dos interruptores de pared de 433MHz para controlar físicamente las lámparas. Tienes un interruptor para cada lámpara. El interruptor cambia el estado de la lámpara al opuesto de su estado actual. Por ejemplo, si la lámpara está apagada, presione el interruptor de pared para encenderla. Para apagarlos, solo necesitas presionar el interruptor nuevamente. Eche un vistazo a la siguiente figura que ilustra cómo funciona.
Piezas requeridas
Aquí hay una lista completa de las piezas necesarias para este proyecto (haga clic en los enlaces a continuación para encontrar el mejor precio en Asesor de creadores):
- Placa ESP (puedes usar ESP32 o ESP8266):
- Alexa: Echo, Echo Show o Echo Dot (Lea la siguiente sección para más detalles)
- Interruptor de panel de pared RF de 433MHz
- Transmisor/receptor de 433 MHz
- Fuente de alimentación de 12V 2A
- convertidor de moneda
- módulo de relé
- lámpara de 12V
- portalámparas de 12V
- Conector cilíndrico CC de 2,1 mm
- tablero de tiras o tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Cómo comprar un Amazon Echo
Puede comprar un Amazon Echo utilizando los siguientes enlaces. Hay varios modelos disponibles; todos son compatibles con este proyecto.
Comprar un Amazon Echo a través de Amazon no es posible en todos los países. Proporcionamos enlaces para Amazon en el Reino Unido, EE. UU. y Alemania. Si Amazon Echo no se envía a tu país a través de Amazon, puedes comprarlo en eBay (disponible en todo el mundo).
Echo Dot (segunda generación)
- Estados Unidos – Amazon.com*
- Disponible en todo el mundo – eBay.com
- Reino Unido – Amazon.es*
- Alemania – Amazon.de*
Eco (segunda generación)
- Estados Unidos – Amazon.com*
- Disponible en todo el mundo – eBay.com
- Reino Unido – Amazon.es*
- Alemania – Amazon.de*
Espectáculo de eco
- Estados Unidos – Amazon.com*
- Disponible en todo el mundo – eBay.com
- Reino Unido – Amazon.es*
- Alemania – Amazon.de*
*Participamos en el Programa de Asociados de Amazon Services LLC, un programa de publicidad para afiliados diseñado para proporcionarnos un medio para ganar tarifas al vincularnos a Amazon.com y sitios afiliados.
Interruptor de panel de pared RF de 433MHz
El interruptor de panel de pared RF de 433MHz es una excelente manera de controlar dispositivos de forma remota. Se puede fijar fácilmente a la pared con cinta adhesiva sin tener que perforar agujeros en la pared. Además, es inalámbrico, por lo que no tendrás que preocuparte por cablear y luego esconder cables.
En este proyecto estamos utilizando dos interruptores de panel de pared. Alternativamente, puede utilizar un interruptor de panel de dos botones; también existe una versión de tres interruptores.
Este interruptor de pared tiene un pulsador en su circuito como se muestra en la siguiente imagen, que emite una señal de 433 MHz cuando se presiona. Puedes usar esta señal para controlar lo que quieras. Este interruptor de pared utiliza una batería de 27 A y 12 V (no incluida). Por lo tanto, es posible que desee comprar uno cuando obtenga su interruptor de pared.
Decodifica las señales RF de 433 MHz del interruptor del panel de pared.
Cuando presione el interruptor de pared de 433MHz, enviará una señal de 433MHz. Debe decodificar esta señal utilizando un receptor de 433 MHz. Para aprender a decodificar la señal de 433 MHz, lea la siguiente publicación: Decodificar y enviar señales RF de 433 MHz con Arduino – lea la parte «Boceto del decodificador». El boceto funciona con Arduino, ESP32 y ESP8266.
Escriba el código decimal (24 bits) para cada uno de sus conmutadores, ya que los necesitará más adelante.
En mi caso:
- Cambiar 1: 6819768
- Cambiar 2: 9463928
Deberías obtener valores diferentes. Luego utiliza estas señales en su boceto ESP8266 o ESP32. Cuando presionas el interruptor, envía una señal de 433MHz. Esta señal es detectada por el receptor conectado al ESP. De esta manera el ESP sabe que se ha presionado el interruptor e invierte el estado actual de la lámpara.
El falsomoESP
Para controlar su ESP8266 o ESP32 con Amazon Echo, necesita instalar la biblioteca FauxmoESP. Esta biblioteca emula un dispositivo Belkin Wemo y le permite controlar su ESP32 o ESP8266 usando este protocolo. Esto permite que Echo o Echo Dot reconozca el dispositivo inmediatamente después de cargar el código, sin necesidad de habilidades adicionales o servicios de terceros. Para más información, ver fauxmoESP aquí.
Instalación de la biblioteca FauxmoESP
- Haga clic aquí para descargar la biblioteca FauxmoESP. Deberías tener una carpeta .zip en tus descargas.
- Descomprime eso .Cremallera carpeta y deberías recibir xoseperez-fauxmoesp-50cbcf3087fd Carpeta
- Cambie el nombre de su carpeta de
xoseperez-fauxmoesp-50cbcf3087fdA xoseperez_fauxmoesp - Mueva la carpeta xoseperez_fauxmoesp a su instalación Arduino IDE Bibliotecas Carpeta
- Finalmente, vuelva a abrir su IDE de Arduino
Alexa – Echo Dot con ESP8266
Siga las siguientes instrucciones si está utilizando un ESP8266.
Instalación de la placa ESP8266 en el IDE de Arduino
Para cargar código a su ESP8266 usando Arduino IDE, debe instalar un complemento de Arduino IDE que le permita programar el ESP8266 usando Arduino IDE y su lenguaje de programación. Si no tienes instalado el complemento ESP8266 para Arduino IDE, sigue el siguiente tutorial:
- Cómo instalar la placa ESP8266 en Arduino IDE.
Instalación de la biblioteca ESPAsyncTCP
También necesitas instalar la biblioteca ESPAsyncTCP. Siga las siguientes instrucciones para instalarlo:
- Haga clic aquí para descargar la biblioteca ESPAsyncTCP. Deberías tener una carpeta .zip en tus descargas.
- Descomprime eso .Cremallera carpeta y deberías recibir Maestro ESPAsyncTCP Carpeta
- Cambie el nombre de su carpeta de
miMaestro SPAsyncTCPA ESPAsyncTCP - Mueva la carpeta ESPAsyncTCP a su instalación Arduino IDE Bibliotecas Carpeta
- Finalmente, vuelva a abrir su IDE de Arduino
Esquema
Si está utilizando una placa ESP8266, monte su circuito de acuerdo con el siguiente esquema; puede hacer clic en la imagen para ampliarla.
Si tiene dificultades para seguir el diagrama del circuito, puede utilizar la siguiente tabla como referencia:
ESP8266 | Adjunto a |
GPIO5 | Pin de datos del receptor de 433 MHz |
GPIO4 | Relé IN1 pin |
GPIO 14 | Pasador IN2 del relé |
NOTA IMPORTANTE: ¡Antes de encender, asegúrese de que el voltaje de salida de su convertidor reductor esté configurado en 5 V! De lo contrario, su ESP podría dañarse.
Alexa – Echo Dot con ESP32
Siga las siguientes instrucciones si está utilizando un ESP32.
Instalación de la placa ESP32 en el IDE de Arduino
Para cargar código a su ESP32 usando Arduino IDE, debe instalar un complemento de Arduino IDE que le permita programar el ESP32 usando Arduino IDE y su lenguaje de programación. Si no tienes instalado el complemento ESP32 para Arduino IDE, sigue el siguiente tutorial:
- instrucciones de Windows – Instalación de la placa ESP32 en Arduino IDE
- Instrucciones para Mac y Linux – Instalación de la placa ESP32 en Arduino IDE
Instalación de la biblioteca AsyncTCP
También necesita instalar la biblioteca AsyncTCP. Siga las siguientes instrucciones para instalarlo:
- Haga clic aquí para descargar la biblioteca AsyncTCP. Deberías tener una carpeta .zip en tus descargas.
- Descomprime eso .Cremallera carpeta y deberías recibir Maestro asíncrono TCP Carpeta
- Cambie el nombre de su carpeta de
Maestro asíncrono TCPA AsíncronoTCP - Mueva la carpeta AsyncTCP a su instalación Arduino IDE Bibliotecas Carpeta
- Finalmente, vuelva a abrir su IDE de Arduino
Esquema
Si está utilizando una placa ESP32, monte su circuito de acuerdo con el siguiente esquema; puede hacer clic en la imagen para ampliarla.
Si tiene dificultades para seguir el diagrama del circuito, puede utilizar la siguiente tabla como referencia:
ESP32 | Adjunto a |
GPIO 13 | Pin de datos del receptor de 433 MHz |
GPIO 14 | Relé IN1 pin |
GPIO 12 | Relé IN2 pin |
NOTA IMPORTANTE: ¡Antes de encender, asegúrese de que el voltaje de salida de su convertidor reductor esté configurado en 5 V! De lo contrario, su ESP podría dañarse.
código
Copie el siguiente código en su IDE de Arduino, ¡pero no lo cargue todavía! Deberá realizar algunos cambios para que funcione para usted.
/*
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#define RF_RECEIVER 13
#define RELAY_PIN_1 12
#define RELAY_PIN_2 14
#else
#include <ESP8266WiFi.h>
#define RF_RECEIVER 5
#define RELAY_PIN_1 4
#define RELAY_PIN_2 14
#endif
#include "fauxmoESP.h"
#include <RCSwitch.h>
#define SERIAL_BAUDRATE 115200
#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASS "REPLACE_WITH_YOUR_PASSWORD"
#define LAMP_1 "lamp one"
#define LAMP_2 "lamp two"
fauxmoESP fauxmo;
RCSwitch mySwitch = RCSwitch();
// Wi-Fi Connection
void wifiSetup() {
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %sn", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
void setup() {
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println();
// Wi-Fi connection
wifiSetup();
// LED
pinMode(RELAY_PIN_1, OUTPUT);
digitalWrite(RELAY_PIN_1, HIGH);
pinMode(RELAY_PIN_2, OUTPUT);
digitalWrite(RELAY_PIN_2, HIGH);
mySwitch.enableReceive(RF_RECEIVER); // Receiver on interrupt 0 => that is pin #2
// By default, fauxmoESP creates it's own webserver on the defined port
// The TCP port must be 80 for gen3 devices (default is 1901)
// This has to be done before the call to enable()
fauxmo.createServer(true); // not needed, this is the default value
fauxmo.setPort(80); // This is required for gen3 devices
// You have to call enable(true) once you have a WiFi connection
// You can enable or disable the library at any moment
// Disabling it will prevent the devices from being discovered and switched
fauxmo.enable(true);
// You can use different ways to invoke alexa to modify the devices state:
// "Alexa, turn lamp two on"
// Add virtual devices
fauxmo.addDevice(LAMP_1);
fauxmo.addDevice(LAMP_2);
fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {
// Callback when a command from Alexa is received.
// You can use device_id or device_name to choose the element to perform an action onto (relay, LED,...)
// State is a boolean (ON/OFF) and value a number from 0 to 255 (if you say "set kitchen light to 50%" you will receive a 128 here).
// Just remember not to delay too much here, this is a callback, exit as soon as possible.
// If you have to do something more involved here set a flag and process it in your main loop.
Serial.printf("[MAIN] Device #%d (%s) state: %s value: %dn", device_id, device_name, state ? "ON" : "OFF", value);
if ( (strcmp(device_name, LAMP_1) == 0) ) {
// this just sets a variable that the main loop() does something about
Serial.println("RELAY 1 switched by Alexa");
//digitalWrite(RELAY_PIN_1, !digitalRead(RELAY_PIN_1));
if (state) {
digitalWrite(RELAY_PIN_1, LOW);
} else {
digitalWrite(RELAY_PIN_1, HIGH);
}
}
if ( (strcmp(device_name, LAMP_2) == 0) ) {
// this just sets a variable that the main loop() does something about
Serial.println("RELAY 2 switched by Alexa");
if (state) {
digitalWrite(RELAY_PIN_2, LOW);
} else {
digitalWrite(RELAY_PIN_2, HIGH);
}
}
});
}
void loop() {
// fauxmoESP uses an async TCP server but a sync UDP server
// Therefore, we have to manually poll for UDP packets
fauxmo.handle();
static unsigned long last = millis();
if (millis() - last > 5000) {
last = millis();
Serial.printf("[MAIN] Free heap: %d bytesn", ESP.getFreeHeap());
}
if (mySwitch.available()) {
/*Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );*/
if (mySwitch.getReceivedValue()==6819768) {
digitalWrite(RELAY_PIN_1, !digitalRead(RELAY_PIN_1));
}
if (mySwitch.getReceivedValue()==9463928) {
digitalWrite(RELAY_PIN_2, !digitalRead(RELAY_PIN_2));
}
delay(600);
mySwitch.resetAvailable();
}
}
Elige la tabla adecuada
Este código funciona tanto con ESP32 como con ESP8266. Para que funcione en su placa, debe seleccionar la placa que está utilizando en Herramientas > tablón. Elija su modelo ESP8266 o ESP32.
Agregue sus credenciales de red
Debe cambiar las siguientes líneas para incluir sus credenciales de red.
#define WIFI_SSID "REPLACE_WITH_YOUR_SSID" #define WIFI_PASS "REPLACE_WITH_YOUR_PASSWORD"
Añade tus códigos de señal de 433 MHz
También deberá incluir las señales que decodificaste previamente para los interruptores de tu panel de pared.
Reemplace el valor resaltado en rojo con el valor que obtuvo para el interruptor que controla la lámpara 1:
if (mySwitch.getReceivedValue()==6819768) {
digitalWrite(RELAY_PIN_1, !digitalRead(RELAY_PIN_1));
}
Y el valor de la lámpara 2 a continuación:
if (mySwitch.getReceivedValue()==9463928) {
digitalWrite(RELAY_PIN_2, !digitalRead(RELAY_PIN_2));
}
Sube el código
Después de realizar todos los cambios necesarios, puede cargar el código en su ESP. Asegúrese de haber seleccionado el puerto COM correcto en Herramientas > Puerto. Para fines de demostración, puede abrir su monitor serie con una velocidad de baudios de 115200 mientras prepara su Echo Dot.
Alexa, descubre dispositivos
Cuando el circuito esté listo y el código se haya cargado en su ESP8266 o ESP32, deberá pedirle a Alexa que descubra los dispositivos.
Di «Alexa, descubre dispositivos». La respuesta debería ser como se muestra en la imagen a continuación.
Alternativamente, también puedes descubrir dispositivos usando la aplicación Amazon Alexa siguiendo los pasos que se muestran en la imagen a continuación.
Luego pídele a Alexa que encienda o apague las luces. También recibirá información sobre el estado de las lámparas en el monitor serie.
Después de asegurarte de que todo funciona correctamente, puedes convertir tu circuito en una solución permanente.
demostración
Para fines de demostración, construimos nuestro circuito en un prototipo de tablero y montamos todo en una tabla de madera, como se muestra en la siguiente imagen:
Ahora puedes pedirle a Alexa que controle tus luces usando los siguientes comandos de voz:
- «Alexa, enciende la lámpara 1»
- «Alexa, apaga la lámpara 1»
- «Alexa, enciende la lámpara 2»
- «Alexa, enciende la lámpara 2»
También puedes controlar ambas luces al mismo tiempo creando un grupo en la aplicación Amazon Alexa. Las llamábamos “lámparas”.
Ahora puedes controlar ambas lámparas al mismo tiempo usando los siguientes comandos de voz.
- «Alexa, enciende las luces»
- «Alexa, apaga las luces»
También puedes controlar físicamente tus luces usando los interruptores de pared de 433MHz.
Envolver
En este proyecto, hemos mostrado cómo controlar su ESP8266 y ESP32 usando comandos de voz a través de Amazon Echo. Como ejemplo, controlamos dos lámparas de 12 V mediante un relé. En lugar de lámparas de 12 V, también puedes controlar cualquier otro dispositivo electrónico. También le mostramos cómo controlar sus luces de forma remota utilizando un interruptor de pared de 433MHz.
Esperamos que este proyecto le haya resultado útil. Si te ha gustado esta publicación, también te puede gustar:
- Construir un sistema domótico
- Domótica con ESP8266
- Construya un escudo de estación meteorológica ESP32 todo en uno
- Botón WiFi ESP8266: clon DIY del botón Amazon Dash
- Tarea diaria ESP8266: publicar valores de temperatura en ThingSpeak
Gracias por leer.
Alexa (Echo) con ESP32 y ESP8266 – Relé controlado por voz
En este proyecto, aprenderás cómo controlar el ESP8266 o el ESP32 con comandos de voz utilizando Alexa (Amazon Echo Dot). Como ejemplo, controlaremos dos lámparas de 12V conectadas a un módulo de relé. También agregaremos dos interruptores de pared de RF de 433 MHz para controlar físicamente las lámparas.
Video de demostración del proyecto
Recomendamos los siguientes tutoriales como referencia:
- Cómo comenzar con el transceptor Wi-Fi ESP8266
- Cómo comenzar con el módulo de desarrollo ESP32
- Decodificar y enviar señales RF de 433 MHz con Arduino
- Guía para usar un módulo de relé con Arduino
Visión general del proyecto
Este proyecto funciona tanto con ESP8266 como con ESP32. Antes de comenzar el proyecto, lee esta sección para ver lo que lograrás al finalizarlo.
Control de lámparas usando Alexa
Al finalizar este proyecto, podrás controlar dos lámparas (lámpara 1 y lámpara 2) con comandos de voz utilizando Alexa. Alexa responderá a los siguientes comandos:
- “Alexa, enciende la lámpara 1”
- “Alexa, apaga la lámpara 1”
- “Alexa, enciende la lámpara 2”
- “Alexa, apaga la lámpara 2”
- “Alexa, enciende las lámparas”
- “Alexa, apaga las lámparas”
Al decir algo como “Alexa, enciende la lámpara 1”, el ESP8266 o ESP32 activará un relé para encender la lámpara 1. Esto funciona de manera similar para la lámpara 2.
Control de lámparas usando interruptores de pared de 433 MHz
En este proyecto, también agregaremos dos interruptores de pared de 433 MHz para controlar físicamente las lámparas. Tendrás un interruptor para cada lámpara, y al presionarlo cambiará el estado de la lámpara al contrario de su estado actual.
Piezas requeridas
A continuación se muestra una lista completa de las piezas necesarias para este proyecto:
- Placa ESP (puedes usar ESP32 o ESP8266)
- Alexa – Echo, Echo Show o Echo Dot
- Interruptor de pared de RF de 433 MHz
- Transmisor/receptor de 433 MHz
- Adaptador de corriente de 12V 2A
- Conversor reductor de voltaje
- Módulo de relé
- Lámpara de 12V
- Porta lámpara de 12V
- Conector hembra de barril DC 2.1mm
- Protoboard o breadboard
- Cables jumper
Puedes encontrar todas las piezas necesarias en MakerAdvisor.
Cómo comprar un Amazon Echo
Puedes comprar un Amazon Echo a través de Amazon en los siguientes enlaces:
- Echo Dot (2ª Generación):
- Estados Unidos – Amazon.com
- Reino Unido – Amazon.co.uk
- Alemania – Amazon.de
- Echo (2ª Generación):
- Estados Unidos – Amazon.com
- Reino Unido – Amazon.co.uk
- Alemania – Amazon.de
- Echo Show:
- Estados Unidos – Amazon.com
- Reino Unido – Amazon.co.uk
- Alemania – Amazon.de
Para más detalles sobre la compra, puedes visitar los enlaces provistos.
Qué interesante, nunca imaginé que se pudiera hacer algo así! Definitivamente una idea genial para probar en mi casa. ¡Gracias por la información!
¡Qué chévere! No sabía que se podía controlar un relé con Alexa, definitivamente tengo que probarlo. ¡Gracias por compartir!
¡Qué genial! Me parece súper interesante cómo se puede utilizar la tecnología de Alexa junto con el ESP32 y ESP8266 para controlar un relé por voz. Definitivamente voy a intentar hacerlo en casa, gracias por compartir esta información tan útil. ¡Saludos!