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

Componentes y suministros

Aplicaciones y servicios en línea

Sobre este proyecto

La tecnología mejora la vida humana. Combinando Raspberry Pi y Windows 10, construimos un sistema de automatización doméstica que opera dispositivos automáticamente.

Primeros pasos: Configuración general

La Raspberry Pi actúa como controlador principal. Cada habitación tiene su propio Arduino UNO como esclavo. Comunicación vía I2C.

Configuración por habitación

Cada Arduino UNO controla dispositivos (luces, ventiladores, enchufes) y lee sensores: PIR (presencia), LM35 (temperatura), LDR (luz). La Raspberry Pi solicita datos periódicamente.

Mapeo de direcciones de dispositivos

Dirección = número de habitación + número de dispositivo. Ejemplo: Habitación 1, Dispositivo 2 → Dirección 12.

Esquemáticos

Software

Desarrollado en Visual Studio 2015 (Universal Windows Platform). Requiere conocimientos intermedios de Arduino, C# y XAML.

Protocolo I2C (Raspberry Pi ↔ Arduino)

Objetivos: leer sensores, leer estado de dispositivos, establecer estado de dispositivo.

Trama de envío: 3 bytes fijos. Trama de recepción: 14 bytes.

Clase I2C_Helper en proyecto Universal Windows implementa el protocolo.

Estructura de clases (Raspberry Pi)

Interfaz de usuario

Objetivos: gestión de habitaciones, dispositivos, servicios externos (GSM, Internet).

Pantallas: Inicio (estado básico, hora, bloqueo), Favoritos, Habitaciones, Dispositivos de agua (bomba, calentador), Configuración.

Wireframes y capturas de la UI final incluidas.

Cómo configurar

Pasos guiados con capturas: añadir habitaciones, dispositivos, sensores, direcciones I2C, etc.

Control de bomba de agua y calentador

No conectar directamente a relé. Usar contactor: relé activa bobina del contactor → contactor conmuta carga alta. Verificar bobina (250VAC en modelo 3TF32) y contactos (16A 415VAC). Añadir magnetotérmico antes del contactor.

Despliegue en Raspberry Pi 2

Referencia a guía de despliegue UWP en Windows 10 IoT Core.

Registrar como app de inicio

Ver artículo: "Windows 10 IoT Core: Setting Startup App".

Problemas conocidos

Futuro

Comunicación RF/IR, portal web con Azure, automatización por eventos (luz al anochecer) y temporizada (RTC). Raspberry Pi 2 quad-core 900MHz ideal para multi-hilo (UWP Tasks).

Código

Sketch Arduino (C/C++)

/* Arduino Sketch v0.4 - Home Automation con Raspberry Pi 2 y Windows 10 IoT
   Esclavo I2C en dirección 0x40. Objetivos:
   + Leer sensores periódicamente (loop)
   + OnReceive: recibir 3 bytes modo+pin+valor y actuar
   + OnRequest: enviar 14 bytes respuesta según modo
   Sin garantía. Uso personal/comercial permitido. */
#include <Wire.h>
#define _DEBUG_
#define SLAVE_ADDRESS 0x40

int Pin_AmbientLight_LDR = A0;
int Pin_PassiveIR = 2;
int Pin_Temperature = A1;

volatile short Value_AmbientLight_LDR, Value_Temperature;
volatile bool Value_PassiveIR;
byte Mode, Pin, Value;
byte Response[14];

void setup() {
  pinMode(Pin_AmbientLight_LDR, INPUT);
  pinMode(Pin_PassiveIR, INPUT);
  pinMode(Pin_Temperature, INPUT);
  for(int p=0;p<=13;p++) pinMode(p, OUTPUT);
  pinMode(A2, OUTPUT); pinMode(A3, OUTPUT);
  #ifdef _DEBUG_ Serial.begin(9600); #endif
  Wire.begin(SLAVE_ADDRESS);
  Wire.onRequest(SendData);
  Wire.onReceive(ReceiveData);
}

void loop() {
  Value_AmbientLight_LDR = map(analogRead(Pin_AmbientLight_LDR), 0, 1023, 0, 255);
  Value_PassiveIR = (digitalRead(Pin_PassiveIR) == HIGH);
  Value_Temperature = (short)((float)(analogRead(Pin_Temperature) * 0.48828125));
  delay(100);
}

void ReceiveData(int byteCount) {
  Mode = Wire.read();
  Pin = Wire.read();
  Value = Wire.read();
  if (Mode == 2) digitalWrite(Pin, Value);
  #ifdef _DEBUG_ Serial.print(Mode); Serial.print(" "); Serial.print(Pin); Serial.print(" "); Serial.println(Value); #endif
}

void SendData() {
  switch (Mode) {
    case 0: // Sensores
      Response[0] = (byte)Value_AmbientLight_LDR;
      Response[1] = (byte)Value_PassiveIR;
      Response[2] = (byte)(Value_Temperature < 0 ? 0 : 1);
      Response[3] = (byte)(Value_Temperature < 0 ? -Value_Temperature : Value_Temperature);
      break;
    case 1: // Estado dispositivos (14 pines)
      for(int i=0, p=0; i<14; i++, p++) {
        if(p==2) p++; if(p==13) p+=2; // saltar pines 2, 13, 14, 15
        Response[i] = (digitalRead(p) == HIGH) ? 1 : 0;
      }
      break;
    case 2: // Confirmar escritura
      Response[0] = (digitalRead(Pin) == HIGH) ? 1 : 0;
      break;
  }
  Wire.write(Response, 14);
}

Software Raspberry Pi 2 (Universal Windows App)

Código completo en: GitHub

Esquemáticos

Múltiples habitaciones: cada Arduino con dirección I2C única en el bus. Archivo Fritzing: Home Automation Schematic - Anurag S Vasanwala.fzz

Proceso de manufactura

  1. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  2. Construya un Controlador Domótico 433 MHz con Sensorflare y Raspberry Pi
  3. Sensor de ocupación para baño con Raspberry Pi: alertas por voz y SMS mediante Twilio
  4. Monitoriza la temperatura de tu casa con un panel Raspberry Pi
  5. Construye sistema domótico con Raspberry Pi para control remoto
  6. Envío de Datos IMU Adafruit 10DOF desde Raspberry Pi 2 a Azure Event Hubs con Windows 10 IoT Core
  7. Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
  8. Instalación de Windows 10 IoT Core en Raspberry Pi 3 Model B+: Guía Paso a Paso
  9. Integración de Microsoft Kinect con Raspberry Pi para Detección Humana en Tiempo Real en Robot Sonbi
  10. Automatización e IoT: Moldeando el Futuro de la Gestión de la Cadena de Suministro
  11. IoT y automatización del hogar: Moldeando la vida inteligente del mañana