Automatice Tomas de Corriente con Windows 10 IoT Core, Raspberry Pi y Arduino
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Raspberry Pi 2 Model B | 1 |
| Módulos XBee (Zigbee) | 2 |
| Arduino UNO | 1 |
| Cable FTDI | 2 |
| Shield de relés 4 canales para Arduino | 1 |
| Shield XBee para Arduino (SparkFun) | 1 |
Herramientas necesarias
- Herramientas manuales, tornillos y tuercas para fabricar soportes
- Base sólida para montar el servo de "giro" (bloque de madera)
- Chapa de aluminio doblable (≈3 mm, <2 cm ancho) para soporte en "L"
- Tira de acero delgada para soporte del panel solar (tipo sujeción conductos HVAC)
Aplicaciones y servicios
- XCTU (configuración XBee)
- Visual Studio 2015+
- Arduino IDE
- Microsoft Azure
- Windows 10 IoT Core
Descripción del proyecto
Introducción
En este proyecto veremos cómo controlar las tomas de corriente de casa de forma nativa y en la nube usando Raspberry Pi con Windows 10 IoT, XBee y Arduino. Todo el código está en GitHub.
¿Por qué automatizar tomas de corriente?
En lugar de controlar dispositivos desde la nube, al automatizar las tomas podemos conectar cualquier aparato y controlarlo. Ejemplos: ventilador y luz.
Empecemos con las XBee
Usamos XBee para comunicación radio. Una XBee (Coordinador) conectada a Raspberry Pi; la otra (Router) en la toma de corriente. El Coordinador envía señales según nuestra entrada al Router para controlar las tomas.
Configurar XBee en modo AT
- Descargue e instale XCTU.
- Para actualizar firmware Zigbee, usé adaptador FTDI de Adafruit.
- Vea este tutorial para configurar XBee en modo AT.
Verifique que ambas XBee se comunican antes de continuar.
Configurar el receptor (Router)
Necesita: Zigbee Router, Arduino UNO R3, Shield XBee para Arduino, Shield de relés.
Sketch de Arduino
Si el Coordinador envía ON1, activamos relé 1; ON2 → relé 2; OFF1/OFF2 apagan.
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.readString();
Serial.println(state);
}
if (state == "ON1\r\n") digitalWrite(RELAY1, 1);
else if (state == "ON2\r\n") digitalWrite(RELAY2, 1);
else if (state == "OFF1\r\n") digitalWrite(RELAY1, 0);
else if (state == "OFF2\r\n") digitalWrite(RELAY2, 0);
else {
digitalWrite(RELAY1, 0);
digitalWrite(RELAY2, 0);
}
}
Configurar la toma de corriente (¡Precaución: alto voltaje!)
Los relés actúan como interruptores. La entrada puede ser 110-240 VAC. Con Arduino controlamos el relé. Extrema precaución al manipular corriente alterna; proceda bajo su propio riesgo.
En lugar de cablear directo, usé un cable de extensión: deje un cable intacto, corte el otro y conéctelo a Común (C) y Normalmente Abierto (NO) del relé.
Conecte el shield de relés al Arduino, apile el shield XBee encima. Enchufe la Zigbee configurada como Router en el shield XBee.
El shield XBee permite configurar el módulo vía USB (usando el FTDI integrado del Arduino). Conecte los cables y alimente el Arduino con fuente externa. Receptor listo.
Configurar el servidor (Coordinador)
Necesita: Raspberry Pi 2 con Windows 10 IoT y Zigbee como Coordinador.
Conecte la Zigbee a adaptador FTDI, y cable FTDI RS-232 USB de 6 pines a puerto USB de la Pi. Montaremos un servidor web en la Pi con UWP. El servidor espera entrada del usuario y escribe datos serie al puerto USB donde está el cable FTDI; la Zigbee transmite el mensaje por radio. Ya configuramos DH/DL del Router en el Coordinador, así el mensaje llega al destino correcto.
Más sobre drivers FTDI para Raspberry Pi: github.com/jark/ftdisample
Siga el video tutorial para configurar el servidor web. Todo el código en GitHub.
Habilitar Azure
Para controlar la casa desde cualquier lugar, integramos servicios en la nube.
- Cree un sitio web y hospédelo en Azure.
- Cree Azure SQL DB para autenticación/autorización de usuarios.
- Cree Azure Cloud Storage (tablas) para recibir comandos.
- Procese comandos desde la app Blinky en Raspberry Pi y controle su casa.
Referencias:
- Tablas de almacenamiento: Azure Storage Tables
- Tablas SQL: Azure SQL Database
Demostración
Control de tomas de dos formas:
- Acceso al servidor web local de la Raspberry Pi en la red.
- A través de aplicación web ASP.NET 5 hospedada en Azure.
Conclusión
- Esta automatización resuelve problemas reales. Añadiendo sensores de luz y movimiento, se puede encender/apagar luces o dar datos al usuario para ahorrar energía.
- Personas mayores pueden usar mando a distancia para controlar tomas (requiere RFID adicional).
- Programar horarios para encender/apagar luces y ahorrar energía.
- Si hay intrusos, encender todas las luces.
- De vacaciones: apague toda la casa con un clic.
- No mantenga temperatura todo el tiempo; hágalo cuando sea necesario. Ahorra energía.
Proceso de manufactura
- Construya una Red de Sensores Inalámbrica Económica para su Hogar
- Construye una Puerta con Reconocimiento Facial Segura usando Windows IoT y Raspberry Pi
- Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
- Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
- Construye un Robot Controlado por Voz con Windows 10 IoT Core en Raspberry Pi 2
- Extensión de GoPiGo v2 en Windows 10 IoT Core para Raspberry Pi 3
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Sistema de Control de Piscina con Azure IoT: Sensores Inteligentes y Monitorización Remota
- Crea dashboards Power BI desde datos PLCnext en la nube
- Aprovechando IoT: Acelerando la transformación digital hoy