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.