Arduino – Criando um serviço web com a Ethernet Shield (HanRun/HR911105A/W5100)

shield-ethernet-sd-para-arduino

Vamos desenvolver um simples Servidor Web que mostra os valores dos pinos das entradas analógicas A0 à A5, usando uma Ethernet Shield original ou compatível, como, a Han Run HR911105A, W5100, entre outras que tem a comunicação com os pinos 10, 11, 12, 13 do Arduino.

Arduino Ethernet shield
Arduino ethernet shield sample
Arduino ethernet shield web service
Sample webservice ethernet shield
Como usar o Arduino Ethernet Shield
Arduino HanRun
Arduino W5100

Segue abaixo o código responsável:

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

// Entre com os dados do MAC e ip para o dispositivo.
// Lembre-se que o ip depende de sua rede local
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,101);

// Inicializando a biblioteca Ehternet
// 80 é a porta que será usada. (padrão http)
EthernetServer server(80);

void setup() {
 // Abrindo a comunicação serial para monitoramento.
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // Inicia a conexão Ethernet e o servidor:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("Servidor iniciado em: ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // Aguardando novos clientes;
  EthernetClient client = server.available();
  if (client) {
    Serial.println("Novo Cliente");
    // Uma solicitação http termina com uma linha em branco
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // Se tiver chegado ao fim da linha (recebeu um novo 
        // Caractere) e a linha estiver em branco, o pedido http terminou,
        // Para que você possa enviar uma resposta
        if (c == '\n' && currentLineIsBlank) {
          // Envia um cabeçalho de resposta HTTP padrão
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // a conexão será fechada após a conclusão da resposta
	  client.println("Refresh: 5");  // atualizar a página automaticamente a cada 5 segundos
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // Saída do valor de cada pino de entrada analógica (A0 à A5)
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("Entrada analógica ");
            client.print(analogChannel);
            client.print(" , valor: ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // Você está começando uma nova linha
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // Você recebeu um caracter na linha atual.
          currentLineIsBlank = false;
        }
      }
    }
    // Dar tempo ao navegador para receber os dados
    delay(1);
    // Fecha a conexão:
    client.stop();
    Serial.println("Cliente desconectado");
  }
}

Pronto, basta rodar a aplicação e abrir no seu navegador o endereço configurado:

arduino ethernet shield

Projeto: (Link DropBox)

Lembre-se sempre de verificar a porta serial o modelo de seu dispositivo e verificar o código antes de subir a aplicação para seu Arduino!

Help DEV – Analista desenvolvedor Java / Android

http://helpdev.com.br/zarelli

6 thoughts on “Arduino – Criando um serviço web com a Ethernet Shield (HanRun/HR911105A/W5100)

  1. Pingback: Help DEV | Arduino – Usando a Ethernet shield com LCD 16×2 (Use an ethernet shield and LCD at a time)

  2. Pingback: Arduino + Módulo Ethernet ENC28J60 | Fábio Tomio

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>