Quantcast
Channel: MakerHero
Viewing all articles
Browse latest Browse all 416

Automação Residencial com Arduino: acenda lâmpadas pela internet

$
0
0

Automação Residencial com Arduino: acenda lâmpadas pela internet

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.

Automação residencial com Arduino

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 a seguinte lista de material:

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.

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"); // so I can keep track of what is loaded

  //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 ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

Site: Blog FILIPEFLOP


Viewing all articles
Browse latest Browse all 416