Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Componentes y materiales

Raspberry Pi 2 Model B × 1
Placa de relés HSRel5 (5 relés, 3 GPIO, I²C, PCF8574) × 1
Placa de relés HSRel8(+8) (8 relés, 8 GPIO, I²C, MAX7311) × 1
Expansor de puertos I²C 16 bits (MAX7311) × 1
Fuente conmutada 12V/54W (carril DIN) × 1
Fuente conmutada 5V/3A (carril DIN, MeanWell DR-30-5) × 1
Shield de prototipado para Raspberry Pi × 1
Buffer I²C / convertidor de nivel (P82B96) × 1
Arduino Nano R3 (puente sensores DHT22 ↔ bus I²C) × 1
Emisor/receptor 433 MHz (para relés inalámbricos) × 1

Aplicaciones y servicios en línea

Sobre el proyecto

Actualización 2: El proyecto sigue creciendo con nuevas funciones (cliente Twitter, bots de Telegram). Consulta el repositorio GitHub y las notas de versión para más detalles.

Actualización 1: Gracias a todos por los comentarios. Presentado en Maker Faire Rome 2015 y Microsoft Technical Summit 2015.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Desarrollo una solución de domótica desde hace 3 años: instalación física de hardware y desarrollo de software.

Características

Entradas (Sensores)

Salidas (Actuadores)

Otras funciones

El concepto

Al reformar la vivienda, decidí controlar todo desde el cuadro eléctrico usando relés. Cada pulsador, lámpara, enchufe, persiana, etc., tiene su propio cable hasta el cuadro. No se necesita bus KNX/EIB.

Nota: Vivo en Alemania, todos los componentes son para 230V. Otras tensiones requieren adaptaciones. La instalación de cables 230V y cuadros la realiza un electricista certificado.

Hardware

El nuevo cuadro eléctrico

Se instaló un cuadro nuevo que gestiona las dos plantas de la casa.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

El bus I²C optimizado

El bus I²C no está diseñado para cables largos, pero se puede extender con estos trucos:

Este bus I²C optimizado conecta todas las placas dentro del cuadro.

Placas de relés (salidas)

CCTools (Alemania) vende placas con relés para bus I²C. También venden kits o solo el PCB. Esto permite reemplazar el expansor por alternativas pin-compatibles (importante por direcciones I²C limitadas). Se usan zócalos para relés e ICs para fácil sustitución. Se puede usar PCA9555D en lugar de MAX7311 (más barato y fácil de conseguir en Alemania).

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

La placa HSRel5 tiene 5 relés y 3 GPIOs extra, controlados por un PCF8574 (8 bits). Los primeros 5 bits mandan los relés; los 3 restantes son salidas libres. Los relés necesitan 12V, que el expansor no puede dar (solo LED). Se usa driver de relés (ULN2803) y un inversor, porque al encender el PCF8574 todos sus pines están en HIGH, lo que cerraría todos los relés (comportamiento no deseado).

Conclusión: Para cerrar el primer relé, se envía 00011110 (MSB) al expansor. El primer pin va a inversor, luego a driver, luego al relé.

La placa HSRel8(+8) usa MAX7311 y tiene 8 relés + 8 GPIOs. No necesita inversor hardware: HIGH = ON. Esta diferencia la gestiona el driver software.

Actualmente uso 8 HSRel5 y 4 HSRel8. El PCF8574 permite 8 direcciones; el PCF8574A otras 8 distintas → hasta 16 HSRel5 en el bus.

Expansores de puertos (entradas)

Pulsadores, detectores de movimiento y contactos reed van a la placa I2C-Port16 HS (CCTools). Contiene MAX7311, pull-ups 5V/10k en cada puerto y condensadores cerámicos 100 nF (filtro anti-ruido). Funciona con 12V o 5V.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Cada dispositivo de entrada tiene su propio cable CAT7 (con malla a PE) hasta el cuadro. Puntos con varios pulsadores (ej. persianas) usan un solo CAT7.

En el cuadro, cada entrada va a un puerto del expansor y a GND. Por pull-ups, el estado por defecto es HIGH. Pulsar conecta a GND → LOW. Detectores y reeds funcionan igual.

Un cable de interrupción compartido va a todas las placas de entrada. Por defecto está en HIGH (pull-up). Cuando un expansor detecta cambio, pone la interrupción a LOW. El software en la Pi2 solo sondea el GPIO de interrupción; si cambia, sondea las placas correspondientes y genera eventos. Evita sondeo continuo de todo el bus I²C.

Raspberry Pi 2

Corre Windows 10 IoT, montada en caja personalizada en el cuadro. Tiene shield de prototipado con LED de estado, puerto de interrupción con pull-up 10k, resistencia de protección 1k y condensador 100 nF (filtro). Conexiones por bornes de tornillo.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Sensor temperatura y humedad

10 sensores DHT22 (AOSONG) miden temp/humedad por habitación. Usan protocolo propietario sin direccionamiento → cada sensor necesita su microcontrolador. Se usa un Arduino Nano V3.0 como esclavo en el bus I²C. Lee todos los sensores cada 2.5 s y cachea valores. La Pi2 lee enviando el ID del puerto (0-10), igual que leer registros I²C.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

La Web App muestra temp/humedad en dos vistas. Icono en humedad indica riesgo de moho: <60% verde, <70% amarillo, ≥70% rojo. También hay vista resumen de todos los sensores.

Montaje hardware en el cuadro

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Relés remotos 433 MHz

Se desarrolló emisor 433 MHz oculto en la caja del sensor temp/humedad de una habitación central. El Arduino Nano (puente DHT22) también envía señales 433 MHz. Emisor FS1000A alimentado a 12V para mayor alcance (también funciona a 3.3V pero corto alcance).

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Problema: los relés remotos no reportan estado. El usuario puede cambiar estado con el mando original. Para forzar sincronía, el software actualiza el estado cada 5 s. Los relés remotos funcionan igual que los de placa en automatizaciones.

Los códigos 433 MHz se configuran manualmente con un circuito en protoboard (sketch Fritzing y código Arduino en repo: CK.HomeAutomation.SensorsBridge\RemoteCodeFinder).

Caja de arena digital para gato

La caja está en trastero sin ventilación. Conectada a chimenea en desuso con ventilador en relé del cuadro. Detector de movimiento en trastero activa ventilador unos minutos al detectar al gato.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Icono propio en Web App para controlar ventilador manualmente. Analizando logs (Azure SQL o CSV) se rastrea uso de la caja y optimiza limpieza.

Software

Antes de Windows 10 IoT, corría en G120 (GHI Electronics) con .NET Micro Framework 4.3. Falta de rendimiento (120 MHz, 16 MB RAM, interpretado) limitaba funciones.

Hace semanas migré a Windows 10 IoT Background Task, añadiendo integración Azure. El repositorio (GitHub) contiene la solución Visual Studio 2015 completa: SDK, Web App y configuración personal. Permite usar Raspberry Pi 2 como controlador domótico, extensible con drivers propios.

Proyectos de la solución

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

CK.HomeAutomation.TraceViewer

Aplicación de consola que muestra trazas UDP del controlador (Pi2). Requiere abrir puerto (ej. 19227) en firewall. Útil para depuración.

CK.HomeAutomation.Networking

Servidor HTTP básico para Web App: sirve JSON de estado y acepta cambios. También hospeda la Web App (archivos deben subirse manualmente vía SMB admin a \\\[IP\]\c$\Users\DefaultAccount\AppData\Local\Packages\CK.HomeAutomation.Controller-uwp_p2wxv0ry6mv8g\LocalState\app).

CK.HomeAutomation.Controller.*

Cada proyecto en Controllers es un startup project implementando IoT Background Task. El proyecto CK.HomeAutomation.Controller.Empty sirve de plantilla. El controlador Cellar (jardín/aparcamiento) no está documentado aquí.

Requisitos previos:

Script SetupRaspberryPi.ps1 automatiza comandos comunes (ajustar IPs a tu infraestructura).

CK.HomeAutomation.Actuators

Capa de abstracción más alta: hogar, habitaciones, actuadores (pulsadores, lámparas, enchufes, etc.) con eventos y métodos específicos. Configuración fluida (fluent API) legible.

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Actuador MotionDetector

Detecta personas/movimiento (Abus BW8085 360° en techo). Dos eventos: MotionDetected (inicio) y DetectionCompleted (fin, cuando cesa movimiento). En Web App se puede desactivar por software; punto rojo = movimiento actual.

Actuador Button

Pulsador físico. Dos eventos: PressedShort (<1.5 s) y PressedLong (>1.5 s, o si supera 1.5 s sin soltar). Permite múltiples funciones por botón. Existe VirtualButton (interfaz IButton) pulsable solo desde Web App.

Actuadores Socket, Lamp, BinaryStateOutput

Clase base BinaryStateOutput para estados binarios ON/OFF. Métodos para actualizar/alternar estado. Los Buttons interactúan con objetos que implementan IBinaryStateOutputActuator. Iconos personalizables vía Configuration.js.

CombinedBinaryStateActuators

Varios actuadores físicos binarios combinados en uno lógico. Uno es "master" para determinar estado al alternar. Evita retrasos visibles al actualizar varios relés secuencialmente por I²C, usando seguimiento interno de cambios.

StateMachine (máquina de estados)

Estados complejos más allá de ON/OFF. Ej.: ventilador con 3 velocidades + OFF. Métodos: apagar o avanzar al siguiente estado; al llegar al último y volver a activar, vuelve a OFF. También sirve para "ambientes" (moods): grupo de actuadores con estados predefinidos. Método WithTurnOffIfStateIsAppliedTwice apaga si se pulsa dos veces el mismo trigger.

TemperatureSensor / HumiditySensor

Valores leídos vía puente I²C (Arduino Nano). Separados en dos actuadores. Sondeo automático cada 10 s.

Automatización ≠ Control remoto

Lo importante es la automatización. Sin ella, es solo un mando a distancia grande. El sistema incluye:

AutomaticTurnOnAndOffAutomation

Enciende salidas binarias por tiempo definido. Trigger: pulsador o detector. Duración ON configurable. Rango horario opcional (solo día/noche, requiere estación meteorológica).

AutomaticRollerShutterAutomation

Persianas automáticas según: amanecer/atardecer (suben/bajan), temperatura exterior (cierran si >28°C, para ventanas de tejado), hora "no abrir antes de". Posición rastreada por tiempo (configurar duración subida/bajada).

AutomaticConditionalOnAutomation

Enciende salidas mientras se cumplen condiciones. Ej.: luces jardín solo de noche. Rangos ON/OFF múltiples, amanecer/atardecer para ON.

Automatización genérica y condiciones complejas

Marco genérico: ejecuta acciones personalizadas si se cumplen condiciones al invocarse triggers (pulsador, detector, intervalo, código).

Estación meteorológica virtual

Datos cada 60 s de OpenWeatherMap (clima, amanecer/atardecer, temp/humedad exterior). Interfaz IWeatherStation para integrar estación física futura.

CK.HomeAutomation.Hardware

Drivers para placas CCTools (relés, entradas), relés 433 MHz, y código Arduino Nano (puente sensores + emisor 433 MHz). Capa de abstracción (interfaces) para añadir nuevos drivers fácilmente.

CK.HomeAutomation.Telemetry

Dos componentes:

  1. CSV Writer: guarda cambios de estado en BinaryStateOutputActuatorChanges.csv (descargable vía SMB admin).
  2. AzureEventHubPublisher: envía cambios de estado y valores de sensores a Azure Event Hub. Incluye scripts SQL para tablas y consulta Stream Analytics. Cada cambio genera entrada START (nuevo estado) y END (duración total en segundos).

Reportes con Power BI gratuito.

WebApp

Proyecto CK.HomeAutomation.App: AngularJS + jQuery + Bootstrap. Configuración de habitaciones leída del controlador (Pi2), UI generada dinámicamente. Se abre como index.html o en servidor web. Configuration.js configura IP del controlador y traducciones. Para añadir a pantalla de inicio en iOS, debe servirse desde web server (ej. BananaPi + nginx).

Automatización del Hogar con Raspberry Pi 2 y Windows 10 IoT Core: Guía Completa de Componentes

Terminal

iPad 3 antiguo en salón como panel de control fijo.

Futuro

¿Interesado en contribuir (hardware, software, documentación)? ¡Contáctame!

Código

Repositorio completo (SDK, WebApp, configuración personal):
https://github.com/chkr1011/CK.HomeAutomation.git

Esquemáticos

Proceso de manufactura

  1. Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
  2. Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
  3. Integración de TI SensorTag con Blynk vía Node‑RED en Raspberry Pi Zero
  4. Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
  5. Monitoriza la temperatura de tu casa con un panel Raspberry Pi
  6. Leer pulsos de frecuencia cardíaca con Windows 10 IoT Core en Raspberry Pi: guía paso a paso
  7. Construye sistema domótico con Raspberry Pi para control remoto
  8. Envío de Datos IMU Adafruit 10DOF desde Raspberry Pi 2 a Azure Event Hubs con Windows 10 IoT Core
  9. Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
  10. Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
  11. Construye un robot inteligente con Bridge Shield – Integración Raspberry Pi y Arduino