A primeira coisa a fazer é identificar qual o modelo do seu shield ethernet para Arduino, os modelos mais comuns são esses dois abaixo:
Enc28j60 Modelo W5100
As principais diferenças entre os dois é modelos, é que o modelo R3 é fácil para encaixar no arduino e possui entrada para cartão microSD, diferente do Enc28j60. Para este experimento iremos utilizar o modelo W5100.
EXPERIMENTO
Este experimento basicamente irá mostrar em um endereço WEB o valor recebido de sensor de temperatura e umidade. Para isso iremos precisar dos seguintes componentes:
- 1 Arduino
- 1 Ethernet Shield Modelo R3
- 1 Sensor de Temperatura e Umidade
- Jumpers
Primeiramente é necessário conectar todos os componentes, como mostra a Figura abaixo.
O próximo passo é preciso que o IP do seu computador esteja na mesma faixa do IP que será colocado no shield. No windows, você irá em Iniciar->Executar e digitar CMD, e pressionar ENTER, após isso abrirá uma página de prompt de comando preta, digite "ipconfig /all", no Linux também abra o terminal de comando e digite "ifconfig".
No Linux, foi fixado o IP. Como mostra a Figura abaixo.
No Windows também é possível fazer isso, basta ir em Iniciar->Painel de Controle->Rede e Internet->Conexões de Rede, então com o botão direito ir em propriedades da sua conexão de rede, após isso ir em propriedades do IPv4, marcar a opção "Usar o seguinte endereço de IP", como mostra na Figura abaixo.
No Linux, foi fixado o IP. Como mostra a Figura abaixo.
No Windows também é possível fazer isso, basta ir em Iniciar->Painel de Controle->Rede e Internet->Conexões de Rede, então com o botão direito ir em propriedades da sua conexão de rede, após isso ir em propriedades do IPv4, marcar a opção "Usar o seguinte endereço de IP", como mostra na Figura abaixo.
Neste experimento iremos utilizar o shield como um Servidor Web, a leitura da temperatura e umidade é um experimento realizado anteriormente, para maiores dúvidas pode ser visto AQUI. Veja abaixo o código que foi utilizado, com comentários:
/*
Utilizando shield arduino e sensor de temperatura e umidade!
Nov de 2014
Fernando Puntel - Ajudino
*/
#include <SPI.h>
#include <Ethernet.h>
#include <dht.h>
#define sensor A2
dht DHT;
int temperatura, umidade;
int contador;
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,2,2); // IP utilizado para acessar via navegador
// Inicia o servidor da internet, com endereço IP e porta que sera utilizada
// Porta 80 utilizada para HTTP
EthernetServer server(80);
void setup() {
Serial.begin(9600); // Aguarda a conexao serial abrir
while (!Serial) {
;
}
// Inicia a conexao com a internet e o servidor
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
EthernetClient client = server.available(); // Aguarda clientes de entrada
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true; // Uma requisicao Ethernet termina com uma linha em branco
while (client.connected()) {
if (client.available()) {
char c = client.read();
// Se chegou ao fim da linha e recebeu uma linha em branco
// a requisicao terminou
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
// Envia um cabeçalho de resposta HTTP padrao
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 5");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// Leitura dados sensor e imprimindo no navegador
for(contador = 0; contador < 5; contador++){
// TEMPERATURA
client.print ("Temperatura: ");
temperatura = DHT.temperature;
client.print (temperatura);
client.println (" graus");
// UMIDADE
client.print("Umidade: ");
umidade = DHT.humidity;
client.print(umidade);
client.println("%");
client.println("<br />"); //Enter
}
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
// Fechando a conexao
client.stop();
Serial.println("client disonnected");
}
}