Professional Documents
Culture Documents
Nessa publicao irei mostrar como ligar o seu Arduino em Rede, mas antes vou abordar uma
breve e simples introduo de como uma Rede.
Uma rede pode ser divida em 5 camadas bsicas (modelo OSI/ISO so 7 camadas) como
mostrada na figura abaixo:
Trabalhar em rede no uma tarefa muito fcil como muitos pensam, e essa Shield facilita
muito o trabalho para uma conexo de um Arduino na rede, pois no necessrio o
computador para fazer o papel de servidor. Me lembro que a primeira vez que fui conectar meu
Arduino na rede para acionar um rel via browser, tive que escrever um
programa complicadssimo em C/Linux.
Nosso projeto consistira em fazer uma leitura da temperatura ambiente, essa leitura ser
processada e enviada para a rede (atravs da Shield) onde por um browser executado em um
computador ou tablet ligados rede poder ser visualizada.
Obs. Para fazer a leitura do termmetro utilizarei o mesmo algoritimo feito no post Arduino +
LM35 Como montar um termometro
Materiais Utilizados:
Sensor de Temperatura
LM35 (http://www.webtronico.com/arduinos/sensores/temperatura-e-
umidade/lm35-sensor-de-temperatura.html)
Quem estiver interessado em ver o esquema eltrico do Ethernet Shield a WebTronico fornece
o PDF clicandoaqui
O propsito desse artigo no abordar o circuito integrado e sim sua funcionalidade, ento
para mais informaes sobre o controlador Ethernet ENC28J60 acesse seu DataSheet
clicando aqui
Dica: No inverta o VCC com o GND, isso ir esquentar demais o sensor podendo causar
a inutilizao do equipamento.
Pronto primeira parte do projeto est OK, o sensor ja esta ligado na Shield, agora vem a parte
que nos interessa. Como fazer essa captura e coloca-la na rede para podermos acessar via
browser ou qualquer outro cliente HTTP?
Apos ligar o sensor, voc dever instalar a biblioteca que controla o ENC28J60 pois no a
mesma que vem como padro no Arduino, voc dever fazer o download desse biblioteca
clicando aqui, aps feito o download a biblioteca devera ser descompactada na
pasta libraries . OBS. extremamente necessario o download dessa biblioteca ou o
projeto no ir funcionar.
#include "etherShield.h"
#include "ETHER_28J60.h"
ETHER_28J60 e;
int analog;
float temperatura;
void setup()
{
e.setup(mac, ip, port);
}
void loop()
{
if (e.serviceRequest())
{
e.print("<html><head><title>WebServer
Simples</title></head><body>");//Instrues HTML.
e.print("<H1>Temperatura</H1><br/>");
e.print("Temperatura em Celsius: ");
analog = analogRead(0);
temperatura = (analog * 0.00488); // 5V / 1023 = 0.00488
(preciso do A/D)
temperatura = temperatura * 100; //Converte milivolts para graus
celcius, lembrando que a cada 10mV equi
e.print(temperatura);
e.print("<br><br><b>Desenvolvido por Allan
Romanato</b></body></html>");
e.respond();
}
delay(100);
}
Allan Romanato.
11 Comments
Ol Allan, primeiramente parabns pelo seu blog e pelo exemplo, realmente muito til e muito bem
feito e apresentado seu exemplo.
Gostaria de lhe pedir se vc sabe se possvel fazer o mesmo exemplo, (sem complicaes claro),
com o adaptador wireless para arduino, como no endereo http://dx.com/p/jy-mcu-arduino-
bluetooth-wireless-serial-port-module-104299?item=10 . Pergunto isso porque no sei se estas
bibliotecas se comportam da mesma maneira, e estou pensando em adquirir um para colocar meu
arduino em rede.
Allan, parabns pelo tutorial, tambm estou fazendo um projeto com o Ethernet Shield ENC28J60 e
o Arduino UNO onde controlamos um sensor de cor feito com LEDs e LDR e os relatrios gerados
(como por exemplo, qtd de caixas selecionadas, percent de cada cor) so publicados na web,
porm qdo adiciono vrios comandos pro e.print o servidor embarcado para de responder e no
pinga mais o ip da shield Voc saberia o pq que isso acontece? E como pode ser solucionado?
Segue parte do meu cdigo, Obg!
void loop(){
char* params;
if(params = server.serviceRequest()) {
server.print();
server.print();
server.print();
if(strcmp(params,?Esteira=10) == 0) //Ligar esteira, rele ativado
{
digitalWrite(pinoRele,HIGH);
}
else if(strcmp(params,?Esteira=01) == 0) // Desligar esteira, rele desativado
{
digitalWrite(pinoRele,LOW);
//Quando adiciono mais codigo p/ relatorio aqui o arduino para de responder e o shield no pinga
server.print();
server.respond();
estou tentando usar o modulo enc28j60 como cliente so tenho que enviar e receber uma string
estou tentando usar o modulo enc28j60 como cliente so tenho que enviar e receber uma string para
um servidor local estou usando a lib ethercard-master
mais nao estou conseguindo nada alguem pode me ajudar
estou tentando usar o modulo enc28j60 como cliente so tenho que enviar e receber uma string para
um servidor local estou usando a lib ethercard-master
mais nao estou conseguindo nada alguem pode me ajudar