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
Como comunicar com o Arduino Ethernet Shield W5100 - FilipeFlop

Como comunicar com o Arduino Ethernet Shield W5100 Deixe um comentário

Controlar sensores ou enviar informações remotamente é um dos grandes objetivos de quem mexe com Arduino. O Arduino Ethernet Shield W5100 é outro dispositivo dessa família, que além de possibilitar o acesso às informações na sua rede local, ainda pode ser conectado à internet e permitir o seu monitoramento de qualquer lugar do mundo.

Ethernet Shield W5100

CONFIGURE O ETHERNET SHIELD W5100

Acoplando o Arduino Ethernet Shield W5100 ao seu Arduino, basta um simples cabo de rede para que, em poucos minutos, você passe a monitorar o estado de sensores, chaves e outros dispositivos à partir do browser do seu computador ou celular. Este Shield é baseado no ethernet chip Wiznet W5100 (datasheet) e fornece um endereço IP compatível com os protocolos TCP e UDP.

Confira um vídeo abaixo de como este projeto ficará ao final deste tutorial:

O primeiro passo deste tutorial para setar corretamente o seu shield ethernet é configurá-lo com um endereço IP válido da sua rede. Vamos mostrar como obter as informações de rede no Windows 7, mas você pode usar o mesmo princípio para outros sistemas operacionais.

Configuração IP:

Clique em INICIAR e, na caixa de diálogo, digite CMD. Em seguida pressione a tecla ENTER :

Windows 7 - Iniciar

Na janela de prompt de comando, digite “ipconfig /all” (sem as aspas) e aperte ENTER :

Prompt de comando - Ipconfig

O comando será executado e várias informações aparecerão na tela. Procure pela informação referente à sua placa de rede principal, semelhante à esta destacada na imagem, pois são essas informações que você irá precisar para configurar o shield : Endereço IP,  Máscara de sub-rede e Gateway Padrão :

IPConfig - Resultados

Esses três parâmetros são definidos logo no início do programa, e devem ser alterados de acordo com a configuração da sua rede :

IPAddress ip(192,168,1,88) : Troque por um endereço IP no mesmo formato daquele que você copiou na janela de prompt de comando, mas o último número deve ser diferente. Exemplo : o IP do nosso equipamento é 192.168.1.120, e no programa utilizamos o 192.168.1.88. Antes de usar qualquer endereço da rede, certifique-se que o mesmo ainda não está em uso por nenhum outro equipamento.

IPAddress gateway(192,168,1,1) : Utilize o mesmo endereço do Gateway Padrão que você obteve na janela de prompt de comando. No nosso caso, 192.168.1.1

IPAddress subnet(255,255,255,0) : Utilize o mesmo endereço referente à máscara de sub-rede, que você obteve na janela de prompt de comando : 255.255.255.0

Programando o Arduino:

Altere esses parâmetros citados acima de acordo com a sua configuração de rede, salve o programa e carregue-o no seu Arduino. Lembrando que a biblioteca Ultrasonic pode ser encontrada nesse link.

//Programa : Arduino Ethernet Shield W5100 e HC-SR04
//Alteracoes e adaptacoes : FILIPEFLOP
//
//Baseado no programa exemplo de
//by David A. Mellis e Tom Igoe

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

//Define os parametros para o sensor ultrasonico HC-SR04
#define PINO_TRIGGER  6 //Porta ligada ao pino Trigger do sensor
#define PINO_ECHO     7 //Porta ligada ao pino Echo do sensor
//Inicializa o sensor ultrasonico
Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO);

//Definicoes de IP, mascara de rede e gateway
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,88);          //Define o endereco IP
IPAddress gateway(192,168,1,1);	    //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede

//Inicializa o servidor web na porta 80
EthernetServer server(80);

void setup()
{
  //Inicializa a interface de rede
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
}

void loop() {
  float cmMsec;
  long microsec = ultrasonic.timing();
  //Le e armazena as informacoes do sensor ultrasonico
  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

  //Aguarda conexao do browser
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == 'n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 2"); //Recarrega a pagina a cada 2seg
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          //Configura o texto e imprime o titulo no browser
          client.print("<font color=#FF0000><b><u>");
          client.print("Envio de informacoes pela rede utilizando Arduino");
          client.print("</u></b></font>");
          client.println("<br />");
          client.println("<br />");
          //Mostra o estado da porta digital 3
          int porta_digital = digitalRead(3);
          client.print("Porta Digital 3 : ");
          client.print("<b>");
          client.print(porta_digital);
          client.println("</b>");
          client.print("  (0 = Desligada, 1 = Ligada)");
          client.println("<br />");
          //Mostra as informacoes lidas pelo sensor ultrasonico
          client.print("Sensor Ultrasonico : ");
          client.print("<b>");
          client.print(cmMsec);
          client.print(" cm");
          client.println("</b></html>");
          break;
        }
        if (c == 'n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != 'r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    }
}

Enviando Informações pela Rede:

Encaixe o Arduino Ethernet Shield W5100 ao seu Arduino e ligue-o à um roteador ou hub usando um cabo de rede comum. Vamos usar o webserver embutido na placa para enviar ao browser duas informações sobre as portas do Arduino, uma informando sobre o estado (ligado/desligado) de um botão ligado à porta 3, e outro com informações sobre o Sensor Ultrasonico HC-SR04, ligado às portas 6 (pino trigger do sensor) e 7 (pino echo do sensor) :

Ethernet Shield e HC-SR04

Para testar o funcionamento, abra o browser no seu computador e digite na barra de endereços o IP que você configurou no programa. No nosso caso 192.168.1.88 :

Ethernet Shield - Browser

Você também pode acessar pelo celular :

Ethernet Shield - Acesso celular

As informações serão enviadas pelo webserver da placa ethernet à cada 2 segundos (veja no programa que esse tempo é configurável). Também podemos configurar no programa os comandos html para formatação, como por exemplo <font> para exibir o texto do título na cor vermelha, <b> para negrito e <u> para sublinhado. Você também pode utilizar outros comandos HTML.

 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!

Deixe uma resposta

Acesse sua conta e participe

Deprecated: wp_make_content_images_responsive está obsoleto desde a versão 5.5.0! Use wp_filter_content_tags() em seu lugar. in /home/filipeflop/homolog2302.filipeflop.com/wp-includes/functions.php on line 4861