Notice: WP_Block_Type_Registry::register foi chamada incorretamente. Tipo de bloco "syntaxhighlighter/code" já está registrado. Leia como Depurar o WordPress para mais informações. (Esta mensagem foi adicionada na versão 5.0.0.) in /home/filipeflop/homolog2302.filipeflop.com/wp-includes/functions.php on line 5313
Automação Residencial com Arduino: acenda lâmpadas pela internet - FilipeFlop

Automação Residencial com Arduino: acenda lâmpadas pela internet Deixe um comentário

Apresentamos neste post um projeto de automação residencial com Arduino, permitindo o controle de relés pela rede local ou até mesmo pela internet. Com ele, você pode controlar lâmpadas, eletrodomésticos ou outros equipamentos eletrônicos por meio de uma página web.

Para testes montamos um circuito com um módulo relé de 2 canais 5V e 2 lâmpadas ligadas à rede elétrica de 220 V. A página web está hospedada no site da FILIPEFLOP e você pode alterar o código para incluir mais funções, mudar o layout da página ou até mesmo implementar alguma solução de segurança com senha, por exemplo.

Circuito automação residencial

No nosso circuito vamos utilizar o material abaixo, que você encontra no Kit Automação Residencial com Arduino, disponível na loja FILIPEFLOP:

Kit Automação Residencial Arduino

O controle do módulo relé será feito pelas portas digitais 3 e 4 do Arduino, e a alimentação do módulo é feita pelo pino 5V. No circuito abaixo, utilizamos 2 lâmpadas ligadas à rede elétrica de 220V, portanto tome cuidado na hora de efetuar esse tipo de ligação, desligando o quadro geral de energia ou os disjuntores correspondentes ao circuito elétrico que você está utilizando.

Circuito Arduino - Ethernet Shield - Lampadas

Após a montagem do circuito, ligue o Ethernet Shield ao seu roteador utilizando um cabo de rede com conector RJ45.

Automação residencial com Arduino

Programa Automação Residencial com Arduino

A programação do Arduino utiliza a biblioteca Ethernet que já vem embutida na IDE do Arduino. Com ela, vamos criar um Web Server que vai receber as informações pela rede e acionar as portas  3 (relé 1) e 4 (relé 2).

No início do programa, altere as configurações de IP, default gateway e máscara de rede (linhas 15, 16 e 17) para que estejam adequadas à sua rede. O programa aguarda pela conexão do cliente (browser), e em seguida monta a página web com informações dos arquivos automacao_residencial.css e automacao_residencial.js, hospedados no servidor da FILIPEFLOP.

//Programa: Automacao Residencial com Arduino e Ethernet Shield
//Autor: FILIPEFLOP

#include <SPI.h>
#include <Ethernet.h>
String readString;

int pino_rele1 = 3;
int pino_rele2 = 4;
boolean ligado = true;
boolean ligado_2 = true;

//Informacoes de endereco IP, gateway, mascara de rede
byte mac[] = { 0xA4, 0x28, 0x72, 0xCA, 0x55, 0x2F };
byte ip[] = { 192, 168, 0, 110 };
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };

EthernetServer server(80);

void setup()
{
  Serial.begin(9600);
  pinMode(pino_rele1, OUTPUT);
  pinMode(pino_rele2, OUTPUT);

  //Inicializa Ethernet Shield
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  Serial.println("FILIPEFLOP - Automacao Residencial"); 

  //Desliga os dois reles
  digitalWrite(pino_rele1, HIGH);
  digitalWrite(pino_rele2, HIGH);
}

void loop()
{
  EthernetClient client = server.available();
  if (client) {
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        if (readString.length() < 100) {
          readString += c;
        }
        if (c == 'n')
        {
          //Controle do rele1
          Serial.println(readString);
          //Liga o Rele 1
          if (readString.indexOf("?ligar") > 0)
          {
            digitalWrite(pino_rele1, LOW);
            Serial.println("Rele 1 Ligado");
            ligado = false;
          }
          else
          {
            //Desliga o Rele 1
            if (readString.indexOf("?desligar") > 0)
            {
              digitalWrite(pino_rele1, HIGH);
              Serial.println("Rele 1 Desligado");
              ligado = true;
            }
          }

          //Controle do rele2
          Serial.println(readString);
          //Liga o Rele 2
          if (readString.indexOf("?2_ligar") > 0)
          {
            digitalWrite(pino_rele2, LOW);
            Serial.println("Rele 2 Ligado");
            ligado_2 = false;
          }
          else
          {
            //Desliga o Rele 2
            if (readString.indexOf("?2_desligar") > 0)
            {
              digitalWrite(pino_rele2, HIGH);
              Serial.println("Rele 2 Desligado");
              ligado_2 = true;
            }
          }
          readString = "";

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html>");
          client.println("<head>");
          client.println("<title>FILIPEFLOP - Automacao Residencial</title>");
          client.println("<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>");
          client.println("<meta name='viewport' content='width=720, initial-scale=0.5' />");
          client.println("<link rel='stylesheet' type='text/css' href='http://img.filipeflop.com/files/download/automacao/automacao_residencial.css' />");
          client.println("<script type='text/javascript' src='http://img.filipeflop.com/files/download/automacao/automacao_residencial.js'></script>");
          client.println("</head>");
          client.println("<body>");
          client.println("<div id='wrapper'><img alt='FILIPEFLOP' src='http://img.filipeflop.com/files/download/automacao/logoFF.jpg'/><br/>");
          client.println("<div id='div1'>Rele 1</div>");
          client.println("<div id='div2'>Rele 2</div>");
          client.print("<div id='rele'></div><div id='estado' style='visibility: hidden;'>");
          client.print(ligado);
          client.println("</div>");
          client.println("<div id='botao'></div>");
          client.println("<div id='botao_2'></div>");
          client.print("<div id='rele_2'></div><div id='estado_2' style='visibility: hidden;'>");
          client.print(ligado_2);
          client.println("</div>");
          client.println("</div>");
          client.println("<script>AlteraRele1()</script>");
          client.println("<script>AlteraRele2()</script>");
          client.println("</div>");
          client.println("</body>");
          client.println("</head>");

          delay(1);
          client.stop();
        }
      }
    }
  }
}

Testes Ethernet Shield e Acesso página Web

Antes de acessar a página, verifique se o IP que você configurou no programa está respondendo adequadamente. Para isso, utilize o comando “ping” na janela de comando:

Teste ping

Se tudo estiver ok, acesse um browser (Chrome, Firefox, etc) colocando na barra de endereços o IP que você configurou no programa. No nosso caso, o IP 192.168.0.110:

Automação Residencial - Browser

Essa é apenas uma sugestão de uso, e você pode usar o mesmo circuito para ligar outros aparelhos eletrônicos, respeitando as especificações máximas de tensão e corrente dos relés.

 Gostou? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Faça seu comentário

Acesse sua conta e participe