Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Componentes e Materiais

Componente Quantidade Observações
Arduino UNO 1 por cômodo Para cada cômodo a automatizar, use um Arduino UNO separado.
Raspberry Pi 2 Model B 1
Jumpers (genéricos) 1
Protoboard (genérica) 1
LDR (Resistor Dependente de Luz) 1 Fornece leituras de tensão diferentes para intensidades de luz diferentes.
Sensor PIR de Movimento 1 IR passivo detecta presença humana.
Relé (genérico) Conforme necessário Número de relés = número de dispositivos a controlar.
Contator Siemens (3TF32 00-0AP0) 1 Para controlar bomba d'água até 16A 415VAC. Bobina 250VAC.
Disjuntor Miniatura (1P C16A) 1 Protege bomba d'água de falhas elétricas e sobrecarga.

Aplicativos e Serviços Online

Sobre o Projeto

Na era atual, a tecnologia pode melhorar a vida humana. A automação era ficção científica, mas não mais. Combinando tecnologia mais recente com a casa, podemos construir um sistema incrível. Com Raspberry Pi e Windows 10, podemos criar um sistema de automação residencial capaz de operar dispositivos domésticos automaticamente.

Primeiros Passos

Antes de começar, vamos entender o básico. Considere a imagem a seguir (Configuração Geral):

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Configuração por Cômodo

Um Arduino UNO controla dispositivos e lê sensores. Periodicamente, o Raspberry Pi solicita dados dos sensores coletados pelo Arduino. A figura "Arquitetura do Cômodo" mostra como o Arduino conecta dispositivos e sensores. Cada cômodo tem múltiplos dispositivos controláveis (luzes, ventilador, tomadas), um PIR (detecta presença), um sensor de temperatura (LM35) e um LDR (detecta intensidade de luz na janela).

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Mapeamento de Endereços dos Dispositivos

A parte mais importante: como identificar dispositivos? Simples: combinamos número do cômodo com número do dispositivo.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Resumindo: Raspberry Pi atua como controlador principal. Cada cômodo tem seu Arduino UNO como escravo do Raspberry Pi. Comunicação via I2C.

Esquemáticos

Para facilitar, vamos implementar para o primeiro cômodo. Consulte o esquemático para conectar componentes corretamente.

Barramento I2C: Para conectar mais de um Arduino, use barramento I2C como mostrado abaixo.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Como Ligar Dispositivo na Placa Relé

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Software

Projeto consiste em Raspberry Pi 2 e Arduino UNO. Software do Pi desenvolvido no Visual Studio 2015. Assumo que o leitor saiba criar projetos para Raspberry Pi 2 no VS 2015, e tenha conhecimento intermediário de Arduino, C# e Windows Universal XAML.

Vamos entender o software em:

Protocolo (Comunicação Raspberry Pi 2 e Arduino via I2C)

Objetivos da comunicação:

Protocolo define regras de comunicação no barramento. Bytes de envio: 3 bytes fixos. Bytes de recebimento: array de 14 bytes.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Classe 'I2C_Helper' implementa o protocolo no projeto Universal App do Pi. No lado Arduino, a biblioteca I2C é fácil de entender.

Estrutura de Classes (Como o Raspberry Pi 2 Mantém Objetos)

Casa → múltiplos Cômodos → múltiplos Dispositivos + Sensores.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Classe principal "Home" contém lista genérica de cômodos (List<Room>). Fornece métodos estáticos para carregar/salvar objeto home no Pi.

Cômodo contém lista de dispositivos (List<Device>) e estrutura de sensores. Dispositivo tem detalhes e funções liga/desliga via protocolo Modo 2. Classes AmbientLight, PassiveIR e Temperature acessam dados ambientais. Objeto Room mantém dados dos sensores e atualiza periodicamente via protocolo Modo 0.

Interface do Usuário

Objetivos principais: Gerenciamento de Cômodos, Gerenciamento de Dispositivos, Serviços Externos (GSM, Internet).

Dividido em:

Wireframe

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Baseado no wireframe, desenvolvi a UI mostrada a seguir. Código fonte completo disponível para download.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Como Configurar

Tentei tornar o software o mais fácil possível. Com configuração mínima, você opera dispositivos diretamente. Passo a passo:

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT
Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Como Controlar Bomba d'Água e Aquecedor

Conecte bomba/aquecedor da mesma forma que outros dispositivos. Mas NÃO conecte diretamente na placa relé - vai queimar e é perigoso.

Use um contator: conecte a bomba/aquecedor ao contator e a bobina do contator à placa relé. Ao acionar o dispositivo, o relé ativa a bobina do contator e a bomba/aquecedor liga/desliga. Verifique a classificação da bobina e do contator. Compre contator com classificação ligeiramente superior à da bomba.

Como Implantar no Raspberry Pi 2

Consulte este link para entender o processo de implantação.

Como Registrar como App de Inicialização

Muitos hobbyistas querem o app iniciando logo após boot do Pi. Leia meu artigo: "Windows 10 IoT Core: Setting Startup App".

Problemas Conhecidos

Inicialização do Arduino

Ao bootar, o Arduino pisca pino D13. Não conecte relé no D13, senão o dispositivo piscará no boot.

Solução: 1) Não use D13 para relé. 2) Reescreva firmware OptiBoot sem usar D13 no boot e grave no Arduino.

Problema de Relógio

Raspberry Pi 2 não tem RTC on-board. Não mantém hora após queda de energia ou boot novo. RTC externo necessário.

Solução: NTP (precisa internet) ou Arduino lida com RTC e Pi solicita data/hora no boot. Anexe RTC externo diretamente ao Pi.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Problema de Depuração

Desenvolvendo Universal App em C#, enfrentei muitos problemas. Operações assíncronas são difíceis de depurar. Erros mostram tela genérica sem apontar linha problemática.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Solução: Coloque breakpoint antes da linha suspeita. Universal App ainda carece de recursos de depuração de apps Windows convencionais.

Futuro

Sem limitações para novas features. Comunicação remota via RF/IR em vez de I2C. Portal web com Azure para mobile. Automação real: eventos baseados em tempo (RTC) - ex: ligar luz quintal às 19h, desligar 22h; evento baseado: ligar luz jardim quando luminosidade cai abaixo de limite. Windows 10 IoT Core no Raspberry Pi 2 tem grande potencial.

Boa sorte e segurança!

Código

Sketch Arduino

/* Arduino Sketch v0.4 - Home Automation com Raspberry Pi 2 e Windows 10 IoT
   Testado apenas em Atmega328p.
   Prepara Arduino como dispositivo escravo no barramento I2C operado por Raspberry Pi 2.
   Objetivos:
   + Coletar dados de sensores periodicamente (loop)
   + OnReceive: coletar instrução de 3 bytes e operar baseado no modo (ReceiveData)
   + OnRequest: enviar array de 14 bytes baseado no modo selecionado (SendData)
*/
#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 i=0;i<=13;i++) pinMode(i, 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 = analogRead(Pin_AmbientLight_LDR);
  Value_AmbientLight_LDR = map(Value_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: // Ler Sensores
      Response[0] = (byte)Value_AmbientLight_LDR;
      Response[1] = (byte)(Value_PassiveIR ? 1 : 0);
      Response[2] = (byte)(Value_Temperature < 0 ? 0 : 1);
      Response[3] = (byte)(Value_Temperature < 0 ? -Value_Temperature : Value_Temperature);
      break;
    case 1: // Ler Estado Dispositivos
      for(int i=0, pin=0; i<14; i++, pin++) {
        if(pin==2) pin++; // Pula pino 2 (usado para PIR)
        if(pin==13) pin=A2; // Após 12 vai para A2
        if(pin==14) pin=A3;
        Response[i] = (digitalRead(pin) == HIGH) ? 1 : 0;
      }
      break;
    case 2: // Definir Estado Dispositivo
      Response[0] = (digitalRead(Pin) == HIGH) ? 1 : 0;
      break;
  }
  Wire.write(Response, 14);
}

Software Raspberry Pi 2 (Windows Headed App)

https://github.com/AnuragVasanwala/Home-Automation--RPi2-WinIoT-

Esquemáticos

Adicione múltiplos cômodos conectando Arduinos individuais com endereços I2C escravos únicos no barramento.

Automação Residencial Inteligente com Raspberry Pi 2 e Windows 10 IoT

Home%20Automation%20Schematic%20-%20Anurag%20S%20Vasanwala.fzz

Processo de manufatura

  1. Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
  2. Construa um Controlador Doméstico Inteligente 433 MHz com Sensorflare e Raspberry Pi
  3. Sensor de Ocupação de Banheiro com Raspberry Pi: Alertas por Voz e SMS via Twilio
  4. Monitore a Temperatura da Sua Casa com Dashboard no Raspberry Pi
  5. Construa Sistema de Automação Residencial com Raspberry Pi para Controle Remoto
  6. Enviando Dados do IMU Adafruit 10DOF do Raspberry Pi 2 ao Azure Event Hubs com Windows 10 IoT Core
  7. Monitoramento Preciso de Temperatura e Umidade com SHT15 no Windows 10 IoT Core
  8. Instalando Windows 10 IoT Core no Raspberry Pi 3 Model B+: Guia Passo a Passo
  9. Integrando Microsoft Kinect com Raspberry Pi para Detecção Humana em Tempo Real no Robô Sonbi
  10. Automação e IoT: Moldando o Futuro da Gestão da Cadeia de Suprimentos