Sistema de automação residencial baseado na Internet

A automação residencial é a nova tendência entre os domicílios urbanos. O sistema de automação residencial permite controlar eletrodomésticos através de um controle remoto. O controle remoto pode ser um controle remoto IR, um controle remoto RF ou até mesmo um telefone celular. Um sistema de automação residencial baseado na Internet pode ser a configuração mais acessível porque tal sistema pode ser controlado de qualquer lugar e a qualquer hora. Tipo, a pessoa está voltando para casa e antes de sair do escritório e entrar no carro pode ligar o ar condicionado da sua sala para que quando chegar em casa a sala já esteja resfriada. Tal vantagem só pode ser aproveitada em uma automação residencial controlada pela internet.
Este é um projeto IOT para automação residencial baseado em Particle Photon. Os eletrodomésticos são conectados ao Particle Photon através de um circuito de relé. Alguns sensores, como o sensor de temperatura e umidade DHT-11 e o sensor LDR para detecção de intensidade de luz, também têm interface com o Particle Photon. O Photon está conectado ao serviço de nuvem via conexão Wi-Fi e os comandos para controlar os aparelhos são passados ​​​​por meio de uma página web que é transferida via Serviço de Nuvem do Particle.
Particle Photon é uma placa IOT compatível com Arduino. Para escrever o código do programa para qualquer Photon, o desenvolvedor precisa criar uma conta no site do Particle e registrar a placa Photon com sua conta de usuário. O código do programa pode então ser escrito no Web IDE no site da Particle e transferido para uma placa IOT registrada pela Internet. Se o Aglomerado selecionado, Photon aqui, estiver ligado e conectado ao serviço de nuvem do Particle, o código é gravado no cartão selecionado pelo ar através da conexão com a internet e o cartão passa a operar de acordo com o código transferido.
Para controlar a placa pela internet, foi desenvolvida uma página web que utiliza Ajax e Jquery para enviar dados à placa utilizando o método HTTP POST. A página da web identifica a placa por um ID de dispositivo e se conecta ao Particle's Cloud Service por meio de um token de acesso.

Componentes necessários –

Lado do receptor:
1. Partícula Fóton.
2. Sensor DHT11.
3. Sensor LDR.
4. Uma conexão Wi-Fi doméstica.
5. Relé 12V
6. Transistor BC547
7. Resistor de 1K ohm
8. LED de 5mm
9. Plugue de dois pinos
10. Suporte de três pinos
Lado do transmissor:
1. Página da Web (EngineersGarageIoT.html)

Diagrama de bloco –

Diagrama de blocos do sistema de automação residencial IoT baseado em partículas fótons

Fig. 1: Diagrama de blocos do sistema de automação residencial IoT baseado em partículas fótons

Conexões de Circuito –

Protótipo de sistema de automação residencial IoT baseado em partículas fótons

Fig. 2: Protótipo de sistema de automação residencial IoT baseado em partículas fótons

O circuito de relé que opera a função de comutação dos aparelhos é conectado ao Particle Photon. Existem também dois sensores – sensor de temperatura e umidade DHT-11 e sensor LDR conectados à placa para monitorar temperatura, umidade e intensidade de luz. O circuito é montado da seguinte maneira –

Fonte de alimentação – No circuito, os módulos de partículas fótons e sensores precisam de uma CC regulada de 5 V, enquanto os relés precisam de uma CC regulada de 12 V para sua operação. A rede elétrica CA é usada como fonte primária de energia. A alimentação da rede elétrica é reduzida por um transformador e retificada por um retificador de ponte completa. A saída retificada é regulada para 5V e 12V usando CIs 7805 e 7812. O pino 1 de ambos os CIs reguladores de tensão está conectado ao ânodo da bateria e o pino 2 de ambos os CIs está conectado ao terra. As respectivas saídas de tensão são extraídas do pino 3 dos respectivos CIs reguladores de tensão. Um LED junto com um resistor pull-up de 10K Ω também é conectado entre o terra comum e o pino de saída para obter uma dica visual da continuidade da alimentação.
Relés – Os relés 12V 2A são usados ​​para ligar ou desligar os aparelhos AC do projeto. Os relés são conectados aos pinos D0, D1, D2 e ​​D3 do Particle Photon através de circuitos de transistor BC547 conectados em uma configuração de emissor comum. O fio de fase da alimentação CA é fornecido no terminal COM dos relés. Quando uma lógica HIGH é recebida nos pinos do microcontrolador interligados, o ponto COM muda do ponto NC para o ponto NO, onde um relé curto-circuita a fase com o fio neutro ligando a alimentação do aparelho. Os LEDs são conectados paralelamente ao circuito do relé com resistores pull-up em série. Esses LEDs fornecem uma indicação visual do status ON/OFF dos aparelhos.
Sensor de temperatura e umidade DHT-11 – O sensor DHT-11 lê a temperatura e umidade ambiente e retransmite os dados para o microcontrolador como dados digitais. O pino de dados do sensor de temperatura e umidade DHT11 é conectado ao pino A0 do Particle Photon e o VCC e o aterramento são conectados ao VCC comum e ao aterramento.
Sensor LDR – O LDR é usado para detectar a intensidade da luz. O sensor está conectado ao pino A1 do Particle Photon. O sensor está conectado em um circuito divisor de potencial. O LDR fornece uma tensão analógica que é convertida em leitura digital pelo ADC embutido.

Como funciona o circuito –

Imagem mostrando o sistema de automação residencial IoT baseado em Particle Photon em ação
Fig. 3: Imagem mostrando o sistema de automação residencial IoT baseado em Particle Photon em ação
Assim que o código do programa é transferido para o Particle Photon, ele começa a operar de acordo com ele. O Particle Photon deve estar conectado a qualquer hotspot de internet via Wi-Fi. O código compatível com Arduino no Photon inicialmente desliga todos os aparelhos, passando uma lógica LOW nos pinos que conectam os relés e começa a buscar dados dos sensores.
O Sensor de Temperatura e Umidade DHT11 é um sensor digital com sensor de umidade capacitivo embutido e termistor. Ele transmite uma leitura de temperatura e umidade em tempo real a cada 2 segundos. O sensor opera com alimentação de 3,5 a 5,5 V e pode ler temperatura entre 0° C e 50° C e umidade relativa entre 20% e 95%. O Sensor DHT 11 envia dados em formato digital para um pino controlador no protocolo one-wire que deve ser implementado no lado do firmware. Primeiro, o pino de dados é configurado para entrada e um sinal de início é enviado a ele. O sinal de início compreende um BAIXO por 18 milissegundos seguido por um ALTO por 20 a 40 microssegundos seguido por um BAIXO novamente por 80 microssegundos e um ALTO por 80 microssegundos.
Depois de enviar o sinal de início, o pino é configurado para saída digital e os dados de 40 bits compostos pela leitura de temperatura e umidade são bloqueados. Dos dados de 5 bytes, os dois primeiros bytes são uma parte inteira e uma parte decimal da leitura da umidade relativa, respectivamente, o terceiro e o quarto bytes são uma parte inteira e uma parte decimal da leitura da temperatura e o último é o byte da soma de verificação. O protocolo one-wire é implementado no firmware usando uma biblioteca de código aberto disponível para Photon.
O sensor IR emite uma tensão analógica no pino do controlador com interface. A tensão analógica é lida e digitalizada usando o canal ADC embutido. A função analogRead é usada para ler a tensão analógica no pino do controlador.
Os dados lidos do sensor são passados ​​para o Particle Cloud via conexão Wi-Fi e a placa aguarda o comando para ligar os aparelhos no ar. O usuário exibiu dados do sensor na página da web e possui botões para ligar ou desligar dispositivos na mesma página da web. À medida que o usuário toca em um botão para ligar ou desligar um dispositivo, o comando é transferido pela Internet por meio do serviço Particle's Cloud na forma de strings seriais. As strings são recebidas via método HTTP POST pelo Particle Photon. Ao detectar o comando, a placa muda a lógica digital no respectivo pino para HIGH para ligar o dispositivo ou LOW para desligar o dispositivo.
Confira o código do fóton para saber como o código compatível com Arduino detecta comandos no ar e lê dados de sensores e publica-os no URL de registro de dados vinculado.

Guia de programação –

Código de fótons
Primeiro de tudo, a biblioteca do sensor DHT é importada. A biblioteca é adicionada automaticamente pelo Web IDE da partícula. Uma constante é definida para denotar o pino ao qual o sensor DHT 11 está conectado e uma constante é definida para denotar uma variante do sensor DHT. São declaradas variáveis ​​​​para conter o valor de temperatura, umidade e intensidade de luz. Variáveis ​​que denotam eletrodomésticos são declaradas e atribuídas aos pinos do microcontrolador. Um objeto do tipo DHT é declarado.
Uma matriz de caracteres é declarada para conter os dados do sensor a serem enviados para a página da web.
A função setup é chamada na qual o pino conectado aos relés é declarado como pino de saída usando a função pinMode . O sensor DHT é inicializado chamando o método Begin no objeto DHT. Uma variável getpos e uma função setpos são expostas da nuvem e recuperadas por meio do método POST chamando os métodos Particle.variable e Particle.function. A função setup é executada apenas uma vez no início do código.
A função loop é chamada e itera infinitamente. Na função loop , os dados do sensor DHT são obtidos usando os métodos getTempCelcius e getHumidity no objeto DHT. Os dados do sensor LDR são obtidos chamando o método analogRead e convertidos em intensidade de luz usando fórmulas padrão. Os dados de diferentes sensores são armazenados em variáveis, agrupados em strings adequadas e enviados para a URL de registro de dados usando o métodopublish no objeto Particle.
Captura de tela da função Loop no código Photon para sistema de automação residencial baseado em IoT
Fig. 4: Captura de tela da função Loop no código de fótons para sistema de automação residencial baseado em IoT
Este é um arquivo HTML que precisa ser executado para enviar dados ao serviço Particle's Cloud. O serviço em nuvem se conecta automaticamente ao Photon e o Code on Photon opera de acordo com os dados recebidos da nuvem.
Código HTML
Para controlar os eletrodomésticos pela Internet, é necessário criar uma página web. A página da web terá o seguinte HTML e Javascript incorporados em linha. O doctype é declarado para definir a página para a versão HTML 5 e o elemento head é adicionado. Dentro do elemento head, o conjunto de caracteres é definido como utf-8 e a página da web é configurada para abranger toda a janela. O Bootstrap para CSS e Javascript é incluído no CDN usando o elemento link. O elemento body é declarado e um elemento de divisão adicional é declarado para conter o conteúdo da página web. A página da web é estruturada por meio de outros elementos de divisão e alguns elementos de parágrafo de cabeçalho e botões são adicionados. O javascript é incorporado no qual o ID do dispositivo e o token de acesso são declarados como variáveis ​​​​e uma função switchLED é criada para formatar a string de comando a ser passada para o painel de partículas. Os elementos da página são acessados ​​​​por meio da função JavaScript getElementbyID. Os dados do sensor são obtidos usando o método JSON.parse e incorporados aos elementos HTML usando o método innerHTML. O método $.Post é usado para recuperar dados da nuvem usando o método HTTP POST. Captura de tela da página da Web controlando o sistema de automação residencial baseado em IoT
Figura 5: Captura de tela da página da Web controlando o sistema de automação residencial baseado em IoT
Este é um arquivo HTML que precisa ser executado para enviar dados ao serviço Particle's Cloud. O serviço em nuvem se conecta automaticamente ao Photon e o Code on Photon opera de acordo com os dados recebidos da nuvem. O código completo para automação residencial baseada na Internet pode ser encontrado na guia código-fonte.

Nota: O arquivo HTML pode ser baixado do anexo mencionado abaixo.

Código fonte do projeto

###

//Program to 

// This #include statement was automatically added by the Particle IDE.

#include 



// DHT parameters

#define DHTPIN A0

#define DHTTYPE DHT11


// Variables

int temperature;

int humidity;

int light;

int motion;

int ultraviolet;

int light_sensor_pin = A1;

int uv = A3;

int pos = 0;

// Pins

int Device0 = D0;

int Device1 = D1;

int Device2 = D2;

int Device3 = D3;

// DHT sensor

DHT dht(DHTPIN, DHTTYPE);


// publishjson.ino -- Spark Publishing Example 

unsigned long lastTime = 0UL;

char publishString(64);


void setup  {

    Serial1.begin(9600);

    pinMode(Device0,OUTPUT);

    pinMode(Device1,OUTPUT);

    pinMode(Device2,OUTPUT);

    pinMode(Device3,OUTPUT);

    digitalWrite(Device0,LOW);

    digitalWrite(Device1,LOW);

    digitalWrite(Device2,LOW);

    digitalWrite(Device3,LOW);

    dht.begin ;

    Particle.function("setpos", setPosition);

    Particle.variable("getpos", &pos, INT);

}


void loop  {

  

   // Temperature measurement

    temperature = dht.getTempCelcius ;

    

    // Humidity measurement

    humidity = dht.getHumidity ;

    

    // Light level measurement

    float light_measurement = analogRead(light_sensor_pin);

    light = (int)(light_measurement/4096*100);

    

    int uvValue=analogRead(uv);

    ultraviolet = (uvValue*100)/4023;

    unsigned long now = millis ;

    Particle.function("led",ledControl);

    //Every 5 seconds publish uptime

    if (now-lastTime>5000UL) {

        lastTime = now;

    sprintf(publishString,"{"Temperature": %u, "Humidity": %u, "Light": %u}",temperature,humidity,light);

    Particle.publish("Uptime",publishString);

    

    }

    

}

int setPosition(String posValue) {

    pos = posValue.toInt ;

    Serial1.printf("%u", pos);

    return 0;

}

int ledControl(String command) {

    int state =0;

    int pinNumber = (command.charAt(1)-'0') - 1;

    if(pinNumber < 0    pinNumber > 7) return -1;

    if(command.substring(3,7) == "HIGH") state = 1;

    else if(command.substring(3,6) == "LOW") state = 0;

    else return -2;

    

    digitalWrite(pinNumber,state);

    return 1;

}
###

Diagramas de circuito

Diagrama de circuito-partícula-fóton-baseado-IoT-Home-Automation-System-

Vídeo do projeto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.