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 usando Raspberry Pi 2 e Windows 10 IoT

Componentes e suprimentos

Arduino UNO
Para cada sala que você deseja automatizar, use Arduino UNO separado.
× 1
Raspberry Pi 2 Modelo B
× 1
Fios de jumpers (genérico)
× 1
Breadboard (genérico)
× 1
LDR (Light Dependent Resistor)
LDR fornece diferentes leituras de voltagem para diferentes intensidades de luz.
× 1
Sensor de movimento PIR (genérico)
IR passivo detecta a presença humana.
× 1
Relé (genérico)
Você pode usar qualquer tipo de módulo de relé. O número de retransmissão dependerá de quantos dispositivos você deseja controlar. [NoOfDevices =NoOfRelay]
× 1
Siemens Contactor (3TF32 00-0AP0)
O contator será usado para controlar a bomba d'água de classificação máxima de AC3:16A 415VAC. Antes comprando o contator, verifique as classificações de sua bomba d'água e suas dependências contry, se houver. "3TF32 00-AP0" é capaz de conduzir a bomba de água até 16A e 415VAC. Este contator opera usando uma bobina embutida. As classificações da bobina são (específicas para 3TF32 00-0AP0 apenas) 250VAC.
× 1
Disjuntor em miniatura (1P C16A)
O MCB é conectado antes do contator para proteger a bomba de água de falhas elétricas e sobrecarga. Aqui, o MCB também tem classificações específicas. Nosso contator é de 16A e, portanto, usei 16A MCB. Você pode modificar de acordo com sua conveniência.
× 1

Aplicativos e serviços online

Arduino IDE
Para escrever firmware Arduino. Explique no artigo.
Microsoft Visual Studio 2015
A edição da comunidade é comandada e é gratuita para até cinco usuários. Mas você pode usar um valor superior se tiver adquirido uma cópia licenciada do Visual Studio 2015.
Microsoft Windows 10 IoT Core
Como sistema operacional principal, que controla os dispositivos via Arduino e fornece console de gerenciamento.

Sobre este projeto


Na era de hoje, a tecnologia pode melhorar a vida humana. A tecnologia está evoluindo década após década. A automação era uma ficção científica antes, mas não hoje. Ao combinar a tecnologia mais recente com a casa, podemos construir uma casa incrível. Com o Raspberry Pi e o Windows 10, podemos construir um sistema de automação residencial capaz de operar dispositivos domésticos automaticamente.





Primeiros passos


Antes de iniciar o projeto, vamos entender o básico primeiro. Considere a seguinte imagem (configuração geral):





Configuração para sala


Agora, considerando o cenário da sala, um Arduino UNO controlará os dispositivos e lerá os dados do sensor. Periodicamente, o Raspberry Pi solicita os dados do sensor coletados pelo Arduino UNO. A figura "Arquitetura da Sala" mostra como o Arduino UNO se conectará aos dispositivos e sensores. Cada sala tem vários dispositivos controláveis ​​(ou seja, luz (s), ventilador, tomada (s) de parede, etc.), um PassiveIR (para detectar a presença humana na sala), um sensor de temperatura (LM35 para coletar a temperatura ambiente) e LDR ( para detectar a intensidade da luz perto da janela da sala).





Mapeamento de endereço de dispositivo


A parte mais importante é como identificaremos os dispositivos? É simples. Faremos o endereço do dispositivo combinando o número do quarto com o número do dispositivo.

Por exemplo:

Portanto, até agora sabemos a configuração geral. Resumindo, um Raspberry Pi atuará como controlador primário. Cada quarto tem seu próprio Arduino UNO que atua como escravo de Raspberry Pi. A comunicação entre o Raspberry Pi e o Arduino UNO será feita usando I2C.





Esquemas


Para tornar mais fácil, vamos começar a implementar para a primeira sala. Consulte o esquema para conectar os componentes de maneira adequada.

Faixa de ônibus I2C: Para conectar mais de um Arduino, você pode usar I2C Bus Stripe como mostrado abaixo.





Como conectar o dispositivo à placa de relé?


Tudo feito no lado do hardware. Agora é hora de criar software.





Software


Nosso projeto consiste em um Raspberry Pi 2 e um Arduino UNO. Software Raspberry Pi 2 desenvolvido no Visual Studio 2015. Presumo que o leitor esteja ciente da criação do projeto para Raspberry Pi 2 no Visual Studio 2015. Também presumo que o usuário tenha conhecimento intermediário da estrutura Arduino, Visual C # e Windows Universal XAML.

Vamos entender o software na seguinte formação:
  • Protocolo (como o Raspberry Pi 2 e o Arduino se comunicam)
  • Estrutura da classe (como o Raspberry Pi 2 mantém esses dispositivos e salas complicadas)
  • Interface do usuário (Wire-frame)





Protocolo (como Raspberry Pi 2 e Arduino conversam sobre I2C)


Antes de prosseguir, vamos primeiro decidir como o Raspberry Pi e o Arduino se comunicam. Para fazer um protocolo confiável, devemos primeiro ter objetivos ou metas claras para a comunicação. Em consideração a este projeto, os objetivos são:
  • Ler sensores
  • Leia o estado do dispositivo
  • Definir o estado do dispositivo

Vamos começar a definir o protocolo primeiro. O protocolo define regras para se comunicar pelo barramento. O protocolo nada mais é do que uma sequência de bytes.

Eu defini protocolo para envio e recebimento de bytes. Os bytes de envio são fixados em três, enquanto a matriz de bytes de recebimento é de quatorze bytes.

Consulte os seguintes esquemas para entender o protocolo definido para este projeto ('X' denota valor aleatório ou '0', ele será ignorado durante a comunicação):



A classe chamada 'I2C_Helper' contém a implementação do protocolo no projeto de aplicativo Universal do PRi2. Esta classe está disponível no Universal Windows Project. Para abri-lo:Vá para Solution Explorer> Biblioteca> pasta Comunicação. No lado do Arduino, é fácil entender a biblioteca I2C.

Agora, definimos um esquema de comunicação adequado que é capaz de fornecer status e valores de sensores, dispositivos e também fornece acessibilidade para definir o estado do dispositivo.





Estrutura da classe (como o Raspberry Pi 2 mantém objetos)


Conforme discutido primeiro, este projeto considerou uma casa inteira. A casa consiste em várias salas e a sala consiste em vários dispositivos. Assim, a estrutura OOP de tal configuração é mostrada abaixo:

A classe primária "Casa" consiste em vários objetos de sala como uma lista genérica de sala (Lista ). A classe Home fornece um método estático para carregar e salvar o objeto home no Pi para usá-los mais tarde.

A sala consiste em dispositivos como uma lista genérica de dispositivos (List ) e estrutura de sensores para encapsular todos os sensores em um.

O dispositivo consiste em detalhes deles e funções para ligá-los e desligá-los usando o Modo de protocolo - 2. As classes AmbientLight, PassiveIR e Temperatura fornecem acesso aos dados ambientais da sala. O objeto da sala mantém os dados do sensor e os atualiza periodicamente usando o Modo de protocolo - 0.





Interface do usuário


Qualquer aplicativo deve ser amigável. Para fazer uma aplicação amigável, comece com armação de arame. Suponha que você vai usar seu próprio aplicativo e descobrir os principais objetivos e como integrá-los de forma que sejam mais fáceis para o usuário final.

No cenário desta aplicação, nossos principais objetivos são:
  • Gestão da sala
  • Gerenciamento de dispositivos
  • Serviços externos como comunicação GSM, comunicação pela Internet, etc.

Para fazer isso, dividi o problema em:
  • Página inicial:fornece informações básicas de status do dispositivo, data e hora e bloqueio
  • Dispositivos favoritos:acesso direto aos dispositivos favoritos
  • Página da sala:fornece acesso a salas configuradas e seus dispositivos
  • Dispositivos comuns de água:bomba d'água e gêiser
  • Configurações / configuração:fornece gerenciamento de salas e seus dispositivos





Estrutura de arame:


Com base no wire-frame, desenvolvi a IU que é mostrada a seguir. Você pode baixar o código-fonte completo. O link para o download é fornecido no final do artigo.

Então, já desenvolvi UI. Espero que você possa modificá-lo de acordo com suas necessidades. Sinta-se à vontade para comentar pela ajuda.





Como configurar?


Tentei tornar este software o mais fácil possível. Com a configuração secundária, você pode operar dispositivos diretamente usando este Raspberry Pi 2. A configuração passo a passo é mostrada abaixo:





Como posso controlar a bomba d'água e o gêiser usando este aplicativo?


Você pode conectar a bomba d'água e o gêiser da mesma forma que adiciona o dispositivo. Mas você não pode conectar uma bomba d'água ou gêiser diretamente à placa de relé para ligá-los. Isso explodirá a placa de relé, além de ser perigoso.

Para operar a bomba d'água ou gêiser, conecte a bomba d'água ou gêiser ao contator e conecte a bobina do contator à placa de relé. Portanto, agora, quando você opera o dispositivo, o relé ativa a bobina do contator e, assim, a bomba ou o gêiser inicia / pára. Antes de comprar o contator, certifique-se de sua classificação da bobina e do contator. Os contatores estão disponíveis em muitas variedades. Portanto, verifique com a classificação da bomba d'água. É aconselhável comprar um contator com classificação ligeiramente mais alta do que a classificação da sua bomba de água.





Como faço para implantar esta solução no Raspberry Pi 2?


Você pode consultar este link para entender o processo de implantação.





Como faço para registrar este aplicativo como aplicativo de inicialização?


Muitos amadores querem que seu aplicativo comece logo após as botas do Raspberry Pi 2. Para fazer isso, leia meu artigo:Windows 10 IoT Core:Configurando o aplicativo de inicialização





Problemas Conhecidos





Inicialização do Arduino


Quando o Arduio inicializa, ele pisca no pino D13. É bom não conectar nenhum pino de relé no D13 porque quando o Arduino inicializar ou reinicializar, o D13 piscará uma vez e se qualquer dispositivo conectado com relé (controlado por D13) piscar também.

Solução: Existem duas opções:a primeira, simplesmente não conecte realmente com o D13. O segundo é um pouco complicado. Você pode reescrever o firmware OptiBoot do Aruino que não usa D13 durante a inicialização e gravar esse bootloader no Arduino.





Problema do relógio


O Raspberry Pi 2 não tem chip de relógio em tempo real integrado. Portanto, não é possível manter o tempo após uma falha de energia ou uma nova inicialização. Portanto, o RTC externo deve ser anexado e programado para manter a data e hora.

Solução :NTP pode ser usado, mas precisa de conexão com a Internet ou até mesmo o Arduino pode lidar com solicitações RTC e Raspberry Pi para a data e hora na inicialização. Também é bom conectar o RTC externo diretamente com RPi 2.





Problema de depuração


Eu enfrentei muitos problemas ao desenvolver o aplicativo universal em C #. O aplicativo universal é um superconjunto do WinRT e, portanto, muitas operações assíncronas precisam ser realizadas. Se ocorrer um erro na operação assíncrona, será uma dor de cabeça resolver. Sempre que ocorria alguma exceção ou erro, na maioria das vezes me deparava com a seguinte tela:

Nenhum ponto para a linha propensa a erros, nenhuma mensagem amigável do programador, nada. Tenho que colocar muitos pontos de interrupção para descobrir a causa do erro. Na depuração, às vezes o aplicativo universal simplesmente fecha sem qualquer aviso prévio e de repente minha janela de relógio se torna inútil. A causa do comportamento é descrita neste link.

Solução :Coloque o ponto de interrupção antes da linha propensa a erros esperada.

Resumindo, no momento (enquanto este artigo foi publicado) o aplicativo universal é ótimo, mas não possui os recursos de depuração que os aplicativos convencionais do Windows têm.





Futuro


Não há limitação quando se trata de recursos, novas ideias ou mesmo para superar as limitações existentes. Mas não é possível adicionar todos os recursos de uma vez. Neste lançamento, este artigo permite que você entenda o poder real do Raspberry Pi 2 e do Windows IoT. O Windows Universal XAML é uma ótima estrutura de GUI para Windows 10 IoT e Raspberry Pi 2 com um bom processador gráfico a bordo. Combinando esses dois, uma solução de GUI de aparência extraordinária pode ser criada. Além disso, o Raspberry Pi 2 tem CPU quad-core de 900 MHz, o que é muito bom para soluções multi-threaded (em UWP, Task). Este é o projeto básico ao intermediário para aqueles que desejam aprender os fundamentos do sistema embarcado e de software (ou seja, comunicação de barramento I2C, como operar aparelhos, design de protocolo personalizado, design OOP para aplicações do mundo real e wire-frame).

No futuro, podemos adicionar capacidade de comunicação por meio de dispositivos remotos usando RadioFrequency ou InfraRed em vez de barramento I2C. O portal de gerenciamento da Web usando o Azure pode ser integrado para dispositivos móveis. Além disso, a automação real será integrada como operação baseada em eventos, operação cronometrada com chip RTC. Por exemplo, acenda as luzes do quintal às 19h00. e desligue-os às 22:00; um bom exemplo de evento baseado é ligar as luzes do jardim quando a intensidade da luz ambiente diminui abaixo da intensidade específica e assim por diante. Portanto, não há limitação para esta nova plataforma Windows 10 IoT Core para Raspberry Pi 2.

Boa sorte e esteja seguro.

Sinta-se à vontade para pedir ajuda ou perguntas.

Código

  • Arduino Sketch
Arduino Sketch C / C ++
 / * Arduino Sketch v0.4 Este esboço foi escrito para "Automação residencial usando Raspberry Pi 2 e Window 10 IoT" Consulte este link:https://www.hackster.io/AnuragVasanwala/home-automation Este esboço foi testado no Atmega328p apenas. Este esboço prepara um dispositivo Arduino como dispositivo escravo no barramento I2C operado pelo Raspberry Pi 2 executando o Windows 10 IoT Core. Objetivos:+ Coletar dados do sensor periodicamente (Função:loop) + OnRecevive, coletar a instrução do modo de 3 bytes e executar a operação com base nela. (Função:ReceiveData) + OnRequest, envia uma matriz de resposta de 14 bytes com base no modo selecionado por OnReceive. (Função:SendData) Este esboço é fornecido como está, sem qualquer GARANTIA. Você pode usá-lo para uso pessoal ou comercial. Não sou responsável por nenhuma perda de dados ou ferimentos causados ​​por este esboço. * / # Include  #define _DEBUG _ / * Endereço I2C Slave do Arduino * / # define SLAVE_ADDRESS 0x40 / * PIN DECLARATION * / int Pin_AmbientLight_LDR =A0; int Pin_PassiveIR =2; int Pin_Temperature =A1; / * Variável global * / volatile short Value_AmbientLight_LDR, Value_Temperature; volátil bool Value_PassiveIR; / * Protocol Variable * / byte Mode, Pin, Value; byte Response [14]; void setup () {// Inicializar os pinos pinMode (Pin_AmbientLight_LDR, INPUT); pinMode (Pin_PassiveIR, INPUT); pinMode (Pin_Temperature, INPUT); pinMode (0, SAÍDA); pinMode (1, SAÍDA); pinMode (3, SAÍDA); pinMode (4, SAÍDA); pinMode (5, SAÍDA); pinMode (6, SAÍDA); pinMode (7, SAÍDA); pinMode (8, SAÍDA); pinMode (9, SAÍDA); pinMode (10, SAÍDA); pinMode (11, SAÍDA); pinMode (12, SAÍDA); pinMode (13, SAÍDA); pinMode (A2, SAÍDA); pinMode (A3, OUTPUT); # ifdef _DEBUG_ Serial.begin (9600); # endif // Inicializar I2C Slave no endereço 'SLAVE_ADDRESS' Wire.begin (SLAVE_ADDRESS); Wire.onRequest (SendData); Wire.onReceive (ReceiveData);} void loop () {// Read LDR // Arduino suporta leitura analógica de 10 bits. // Portanto, precisamos convertê-lo para 8 bits. Value_AmbientLight_LDR =analogRead (Pin_AmbientLight_LDR); Value_AmbientLight_LDR =map(Value_AmbientLight_LDR, 0, 1023, 0, 255); // Read PassiveIR value Value_PassiveIR =(digitalRead(Pin_PassiveIR) ==HIGH) ? verdadeiro falso; // Read Temperature Sensor and Convert Voltage into Celsius Value_Temperature =(short)((float)(analogRead(Pin_Temperature) * 0.48828125)); // Wait for 100 ms delay(100);}// Callback for I2C Received Datavoid ReceiveData(int byteCount){ // Read first byte which is Protocol Mode Mode =Wire.read(); // Read second byte which is Pin. Only Valid for Mode 2 Pin =Wire.read(); // Read third byte which is Pin-Value. Only Valid for Mode 2 Value =Wire.read(); // Signal specified pin if Mode 2 is received 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:// Mode:Read Sensor Response[0] =(byte)Value_AmbientLight_LDR; // Value_PassiveIR is boolean so that we need to convert it into byte Response[1] =(byte)((Value_PassiveIR ==true) ? 1 :0); // Response[2] byte is Sign byte for Temperature // 0 - -ve Temperature // 1 - +ve Temperature Response[2] =(byte)((Value_Temperature <0) ? 0 :1); Serial.println(Value_Temperature); // -ve Temperature can't be sent in byte. Convert it into +ve equivalent Response[3] =(byte)((Value_Temperature <0) ? (Value_Temperature*(-1)) :Value_Temperature); pausa; case 1:// Mode:Read Devices State Response[0] =(digitalRead(0) ==HIGH) ? 1:0; Response[1] =(digitalRead(1) ==HIGH) ? 1:0; Response[2] =(digitalRead(3) ==HIGH) ? 1:0; Response[3] =(digitalRead(4) ==HIGH) ? 1:0; Response[4] =(digitalRead(5) ==HIGH) ? 1:0; Response[5] =(digitalRead(6) ==HIGH) ? 1:0; Response[6] =(digitalRead(7) ==HIGH) ? 1:0; Response[7] =(digitalRead(8) ==HIGH) ? 1:0; Response[8] =(digitalRead(9) ==HIGH) ? 1:0; Response[9] =(digitalRead(10) ==HIGH) ? 1:0; Response[10] =(digitalRead(11) ==HIGH) ? 1:0; Response[11] =(digitalRead(12) ==HIGH) ? 1:0; Response[12] =(digitalRead(A2) ==HIGH) ? 1:0; Response[13] =(digitalRead(A3) ==HIGH) ? 1:0; pausa; case 2:// Mode:Set Device State Response[0] =(digitalRead(Pin) ==HIGH) ? 1:0; pausa; padrão:break; } // Wire back response Wire.write(Response, 14);}
Raspberry Pi 2 (Windows Headed App) Software
https://github.com/AnuragVasanwala/Home-Automation--RPi2-WinIoT-

Esquemas

You can add multiple room by attaching individual Arduino with unique I2C slave address on the bus. Fritzing file containing complete schematic. Home%20Automation%20Schematic%20-%20Anurag%20S%20Vasanwala.fzz

Processo de manufatura

  1. Sensor de temperatura Python e Raspberry Pi
  2. Controlador Smart Home de 433 MHz com Sensorflare e RaspberryPi
  3. Sensor de luz ativado por voz e SMS usando Raspberry Pi e Twilio
  4. Monitore a temperatura de sua casa usando o Raspberry Pi
  5. RASPBERRY PI HOME AUTOMATION
  6. Windows 10 IoT Core no Raspberry Pi 2 - Dados do sensor Adafruit
  7. Windows 10 IoT Core e SHT15
  8. Windows 10 IoT Core para Raspberry Pi 3 Modelo B +
  9. SONBI ROBOT DETECÇÃO HUMANA USANDO KINECT E RASPBERRY PI
  10. Automação e IoT na cadeia de suprimentos:o que vem a seguir?