Controlando uma lâmpada com o smartphone, Arduino e Ethernet shield

Vou demonstrar através deste simples tutorial como acender e apagar uma lâmpada (127 ou 220V) através de um smartphone, Arduino e Ethernet Shield.

Material utilizado

-Arduino Uno Rev 3
-Ethernet shield W5100
-Rele Shield 1 canal
-Fonte 6V x 400mA
-Jumper
-Fio
-Tomada macho
-Lâmpada 127V
-Soquete E27
-Roteador

Já com o material separado, vamos fazer o upload do código abaixo. Este que por sinal está bastante “enxuto”.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 101);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);

void setup() {
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  pinMode(8, OUTPUT);
}

void loop() {
  byte porta8 = digitalRead(8);
  EthernetClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    String vars;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        vars.concat(c);

        if (vars.endsWith("/botao1_lig")) {
          digitalWrite(8, HIGH);
        }
        if (vars.endsWith("/botao1_des")) {
          digitalWrite(8, LOW);
        }

        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<meta http-equiv=\"refresh\" content=\"3\">");
          client.println("<title>Fedablio - Hobby Hacker</title>");
          client.println("</head>");
          client.println("<body>");

          if (porta8 == 0) {
            client.println("<a href='/botao1_lig'><button style='background-color:black; color:yellow; width:150px; height:40px;'>Luz sala</button></a>");
          }
          if (porta8 == 1) {
            client.println("<a href='/botao1_des'><button style='background-color:yellow; color:black; width:150px; height:40px;'>Luz sala</button></a>");
          }

          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
}

Agora que o código foi inserido em nosso Arduino com o Ethernet Shield, vamos montar o circuito conforme a imagem abaixo.


Risco de choque elétrico

Antes de ligar a tomada macho na alimentação 127V, revise o circuito. Não nos reponsabilizamos por danos causados oriundos de imperícia do leitor. Agora que está tudo pronto, conecte seu Arduino com a Ethernet Shield em seu roteador pela interface RJ-45. Em seu smartphone ou notebook (conectados nesta mesma rede em que se encontra o Arduino), abre seu navegador de internet e digite o endereço IP do mesmo, que neste exemplo é 192.168.1.3. O seu navegador deverá mostrar a seguinte imagem:


Quando der um clique no botão “Luz sala”, a porta 8 do Aruino irá ficar em estado alto (HIGH ou 5V) e consequentemente ligará o relê que deixará a tensão 127V fluir e assim ligar a lâmpada.


Quando desligado, o Arduino vai ler novamente o estado da porta, que é para estar baixo (LOW ou 0V) e mostrar o botão na cor preta novamente.