sexta-feira, 2 de setembro de 2016

Acendendo leds com o arduino ethernet shield

Bom dia pessoal  tudo bem? Agora vem alguns de meus passos baseados em experiencias com a placa ethernet shield e a nova gama de possibilidades que ela oferece. Bem voces podem me perguntar, o que é o ethernet shield? É essa graçinha aqui!
Com ele voce não precisa necessariamente de um computador pra usar de servidor, ele já vira um servidor automático, claro que com bastante limitações. Para voces terem idéia, uma simples pagina html com acionamento de 4 botoes já consome 60% da memória de nosso brinquedo x_x

Bem o código que disponibilizarei logo a seguir é uma ligeira alteração da biblioteca webserver, que ja vem implementada nas novas IDES disponíveis pra download no site do arduino.
Nele basicamente é adiciona uma string, e essa string que ira ler e interpretar as requisições html disponiveis em nossa pagina, a string primeiro passa por um filtro lenght<100 para limitar os caracteres de envio e depois é transformada numa char para pode ler as requisiões, de resto é codigo php incorporado.

No começo do código onde esta escrito "byte ip" voce geralmente terá de alterá-lo de acordo com a sua rede, então faça o seguinte, entre no prompt de comando clicando com o direito no meno iniciar
e escolher prompt de comando conforme a imagem:
depois ja no prompt de comando digite: ipconfig
tudo jundo e anote os dados que aparecem em ipv4 conforme destacamos na imagem seguinte:

De posse com esse numero, apenas altere o numero final para 177 e coloque no campo byte ip, lembre-se que o comando se dá por virgulas.

Uma vez compilado o código no arduino, abra o seu navegador e digite o numero do ip que voce configurou no byte ip: No meu caso eu digitei 192.168.0.177

Quando terminar a tela ficara assim:


Sem mais delongas vamos ao código
------------------------
ethernet shield
-------------------------------
#include <SPI.h>
#include <Ethernet.h>
  
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 177 };
     
EthernetServer server(80);
  
String readString;
int Pin = 6;
int Pin1= 7;
int Pin2=8;
int Pin3=9;

  
void setup(){
  
  pinMode(Pin, OUTPUT);
  pinMode(Pin1,OUTPUT);
  pinMode(Pin2,OUTPUT);
  pinMode(Pin3,OUTPUT);
  
  Ethernet.begin(mac, ip);
  server.begin();
}
  
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') {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
           
          client.println("<HTML>");
          client.println("<BODY>");
          client.println("<hr />");
          client.println("<br />");
          client.println("<H1>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Acionamento das cargas</H1>");
          client.println("<hr />");
          client.println("<br />");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;>");
          client.println("<a href=\"/?ledon\"\">Ligar a luz</a>");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp;/>");
          client.println("<a href=\"/?ledoff\"\">Desligar a luz</a><br />");  
          client.println("<hr />");
          client.println("<br />");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;>");
          client.println("<a href=\"/?adon1\"\">Ligar a tomada</a>");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp;/>");
          client.println("<a href=\"/?adoff1\"\">Desligar a tomada</a><br />");
          client.println("<hr />");
          client.println("<br />");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;>");
          client.println("<a href=\"/?bdon2\"\">Ligar o chuveiro</a>");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp;/>");
          client.println("<a href=\"/?bdoff2\"\">Desligar o chuveiro</a><br />");
          client.println("<hr />");
          client.println("<br />");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;>");
          client.println("<a href=\"/?cdon3\"\">Ligar o ALARME</a>");
          client.println("<&nbsp; &nbsp; &nbsp; &nbsp;/>");
          client.println("<a href=\"/?cdoff3\"\">Desligar o ALARME</a><br />");
          
           
          client.println("</BODY>");
          client.println("</HTML>");
           
          delay(1);
          client.stop();
           
          if(readString.indexOf("?ledon") > 0)
          {
            digitalWrite(Pin, HIGH);
          }
          else {
            if(readString.indexOf("?ledoff") > 0)
            {
              digitalWrite(Pin, LOW);
            }
          }
          if(readString.indexOf("?adon1") > 0)
          {
            digitalWrite(Pin1, HIGH);
            
          }
          else {
            if(readString.indexOf("?adoff1") > 0)
            {
              digitalWrite(Pin1, LOW);
            }
          }
          if(readString.indexOf("?bdon2") > 0)
          {
            digitalWrite(Pin2, HIGH);
            
            
          }
          else {
            if(readString.indexOf("?bdoff2") > 0)
            {
              digitalWrite(Pin2, LOW);
            }
          }
          if(readString.indexOf("?cdon3") > 0)
          {
            digitalWrite(Pin3, HIGH);
           
            
          }
          else {
            if(readString.indexOf("?cdoff3") > 0)
            {
              digitalWrite(Pin3, LOW);
            }
          }
          
          readString="";    
        }
      }
    }
  }
}
--------------------------------
E é isso ahe pessoal, em breve postarei o vídeo dele funcionando.
E é isso ahe pessoal, como prometido, eis o víde

Nenhum comentário: