Automatización del hogar con esp-8266 y Alexa
Control Inteligente de Dispositivos Eléctricos mediante Comandos de Voz
Presentación.
El proyecto presentado se centra en el diseño y desarrollo de un sistema de automatización del hogar utilizando la placa ESP-8266 y un módulo de relevadores. Este sistema permite el control de dispositivos eléctricos mediante comandos de voz a través de Alexa, proporcionando una solución sencilla y eficaz para la gestión inteligente del hogar. La placa ESP-8266 se conecta a cuatro relevadores, los cuales pueden ser activados o desactivados individualmente utilizando comandos específicos. Al decirle a Alexa que encienda o apague un LED, se controla el relevador correspondiente, permitiendo la automatización de diferentes aparatos eléctricos conectados al sistema.
Funcionamiento.
Para su funcionamiento, la Alexa (desde la app) escanea dispositivos de luz que hay conectados a la red y en este caso detecta el esp-8266, junto con el nombre de cada relevador, en total capta 4 dispositivos, se configuran con la app de Alexa cada uno de ellos y la Alexa ya esta lista para recibir las instrucciones y mandarlas al esp para controlar cada relevador.
Realización.
Materiales necesarios para el ensamblado del proyecto:
- 1 módulo de relé WIFI 5v x4 canales
- 1 módulo esp8266
- 1 arduino uno (para la alimentación)
- Cables dupont
- Programador usb de esp8266
- 1 Alexa
Como primer paso conectaremos el esp8266 al programador para cargar el código correspondiente.
Una vez con el código cargado, procedemos a poner el módulo esp8266 en el módulo de relé, posterior a eso conectaremos el módulo de relé WIFI al Arduino UNO para poder alimentar el módulo de relé, se conecta el vcc del módulo de relé a los 5v del Arduino uno y el gnd del módulo de relé al gnd del Arduino uno.
Nos quedará de la siguiente manera:
Programación.
ESP8266
#include
#if defined (ESP32)
#include
#elif defined(ESP8266)
#endif
#include "fauxmoESP.h"
#define WIFI_SSID "Yañez Alvarado"
#define WIFI_PASS "holaneno1309"
#define SERIAL_BAUDRATE 115200
//#define LED_1 2
#define ID_1 "LED"
#define ID_2 "LED2"
#define ID_3 "LED3"
#define ID_4 "LED4"
byte encendido [] = {0xA0, 0x01, 0x01, 0xA2};
byte apagado [] = {0xA0, 0x01, 0x00, 0xA1};
byte encendido2 [] = {0xA0, 0x02, 0x01, 0xA3};
byte apagado2 [] = {0xA0, 0x02, 0x00, 0xA2};
byte encendido3 [] = {0xA0, 0x03, 0x01, 0xA4};
byte apagado3 [] = {0xA0, 0x03, 0x00, 0xA3};
byte encendido4 [] = {0xA0, 0x04, 0x01, 0xA5};
byte apagado4 [] = {0xA0, 0x04, 0x00, 0xA4};
fauxmoESP fauxmo;
void wifiSetup() {
WiFi.mode(WIFI_STA);
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Esperar a que se conecte
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s ", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
void setup() {
Serial.begin(SERIAL_BAUDRATE);
// Habilitar el LED como salida y apagarlo
//pinMode(LED_1, OUTPUT);
//digitalWrite(LED_1, LOW);
// Configurar Wi-Fi
wifiSetup();
// Configurar FauxmoESP
fauxmo.createServer(true);
fauxmo.setPort(80);
fauxmo.enable(true);
fauxmo.addDevice(ID_1);
fauxmo.addDevice(ID_2);
fauxmo.addDevice(ID_3);
fauxmo.addDevice(ID_4);
// Manejar los comandos de FauxmoESP
fauxmo.onSetState([](unsigned char device_id, const char *device_name, bool state, unsigned char value) {
Serial.printf("[MAIN] Device #%d (%s) state: %s ", device_id, device_name, state ? "ON" : "OFF");
if (strcmp(device_name, ID_1) == 0) {
if (state) {
// Enviar el comando de encendido
enviarComando(encendido, sizeof(encendido));
} else {
// Enviar el comando de apagado
enviarComando(apagado, sizeof(apagado));
}
}
if (strcmp(device_name, ID_2) == 0) {
if (state) {
// Enviar el comando de encendido
enviarComando(encendido2, sizeof(encendido2));
} else {
// Enviar el comando de apagado
enviarComando(apagado2, sizeof(apagado2));
}
}
if (strcmp(device_name, ID_3) == 0) {
if (state) {
// Enviar el comando de encendido
enviarComando(encendido3, sizeof(encendido3));
} else {
// Enviar el comando de apagado
enviarComando(apagado3, sizeof(apagado3));
}
}
if (strcmp(device_name, ID_4) == 0) {
if (state) {
// Enviar el comando de encendido
enviarComando(encendido4, sizeof(encendido4));
} else {
// Enviar el comando de apagado
enviarComando(apagado4, sizeof(apagado4));
}
}
});
}
void loop() {
fauxmo.handle();
}
void enviarComando(byte comando[], size_t longitud) {
// Función para enviar un comando
for (size_t i = 0; i < longitud; i++) {
Serial.write(comando[i]);
}
Serial.println(); // Salto de línea después de enviar el comando
}
Utilización.
- Una vez realizadas todas las conexiones necesarias y con el módulo esp8266 conectado al módulo relé, procedemos a darle corriente al Arduino UNO para poder alimentar el módulo de relé.
- De manera automática el esp8266 se conectará a la red wifi configurada previamente en el código que se le cargo.
- Para el final solo debemos configurar el dispositivo en la Alexa, iremos al apartado de agregar dispositivos a la Alexa, seleccionamos dispositivo, luego seleccionamos “Luz”, seleccionamos la marca “Otro”, seleccionamos el logotipo del dispositivo “Wi-Fi”, luego en el apartado de configurar el dispositivo, le damos click en “Detectar dispositivos” y Alexa comenzara a buscar los dispositivos, en este caso detectara cada relevador como “LED , LED2, LED3, LED4, posterior a eso empezamos a configurar cada uno de los "LED” y ya los tendremos listos para decirle a Alexa “Alexa prende LED”.
A continuación, se muestran cada uno de los pasos a realizar para el paso final:
Conclusiones.
Alejandro Yañez Alvarado: La integración de la placa ESP-8266 con un módulo de relevadores y el asistente de voz Alexa demuestra el potencial de la automatización del hogar para mejorar la comodidad y eficiencia en el uso de dispositivos eléctricos. Este proyecto no solo facilita el control remoto de estos dispositivos, sino que también sienta las bases para futuras expansiones y mejoras en sistemas inteligentes para el hogar. La capacidad de controlar aparatos mediante comandos de voz representa un avance significativo en la domótica, promoviendo una experiencia de usuario más intuitiva y accesible.
Referencias.
LCUS-4 4 channel USB relay module smart switch with intellig. (s/f). Chinalctech.com. Recuperado el 27 de mayo de 2024, de http://www.chinalctech.com/cpzx/32.html
Avalos, N. E. G. [@nestorestuardogarciaavalos3290]. (2022, junio 12). Conexión de Alexa con NodemCu ESP8266 3.3V Y RELÉ 5V. Youtube. https://www.youtube.com/watch?v=rBi394gHWjM
Mata, J. (2020). Arduino: esp8266-esp01s. GitHub. https://github.com/javimata/arduino/tree/master/esp8266-esp01s