You are on page 1of 8

Exemplo do Ethernet Shield ENC28J60 com Arduino

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:

A camada de aplicao suporta todas as aplicaes da rede, como por exemplo, os


protocolos FTP, SMTP, HTTP e etc. O contedo dessa camada desenvolvido pelo
projetista do software.
A camada de transporte pela transferncia dos dados hospedeio-hospedeiro,
normalmente usa os protocolos TCP ou UDP. TCP garante que todos os dados
cheguem corretamente, j o UDP no da essa garantia. Essa camada normalmente j
esta implementada em alguma biblioteca.
A camada de rede a responsvel pelo roteamento do dos datagramas da origem ao
destino. O protocolo utilizado o protocolo IP
A camada de enlace a responsvel pela transferncia de dados entre elementos
vizinhos da rede. Utiliza-se o protocolo Ethernet.
A camada fsica simplesmente o hardware, no nosso caso o Ethernet Shield.

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:

Arduino Duemilanove (http://www.webtronico.com/arduino-duemilanove.html)


Ethernet Shield (http://www.webtronico.com/ethernet-shield-para-arduino.html)

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 segredo da Shield que estamos trabalhando o Circuito Integrado ENC28J60 da Microchip


que o controlador Ethernet que nos permitir fazer o acesso nossa rede. A figura
abaixo esclarece um pouco seus nveis de abstrao.

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

Primeiramente iremos fazer as conexes do sensor de temperatura LM35 nos terminais da


Shield, que por consequncia estaro ligados aos do Arduino. Abaixo figura que representa as
ligaes no Arduino, mas lembre-se essas mesmas ligaes devem ser feitas na SHIELD:
Como o LM35 um sensor analgico, ele deve ser ligado em uma das 6 portas analgicas, seu
VCC ligado em 5V e seu terra ligado no GND.

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.

Aps a concluso da instalao da biblioteca, vamos ao que realmente interessa nesse


momento, que o cdigo necessrio para podermos executar nosso Ethernet Shield na rede.

//Ethernet Shield para medir temperatura exemplo criado para o site


WebTronico.

#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};


//Endereo MAC - Camada de
Enlace
static uint8_t ip[4] = {192, 168, 0,15}; //Endereo IP - Camada de
Rede
static uint16_t port = 80; //Porta padro protocolo HTTP

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);
}

A execuo desse cdigo nos mostrar o resultado exibido na figura abaixo.


Nesse post pode-se concluir que no existe dificuldade em colocar seu Arduino na rede, o
cdigo relativamente simples, e os resultados so muito interessantes, pode-se fazer vrias
coisas com um Arduino em rede, como por exemplo controlar sua casa a longa distncia.

Espero que tenham gostado.

Allan Romanato.

Tags: Arduino, ENC28J60, Ethernet Shield, exemplo, LM35, projeto


Uncategorized | Allan Romanato | 22 May 2012 |

11 Comments

By Andr Gadelha, July 27, 2012 @ 11:47 pm

Gostaria de relatar um erro que ocorreu na instalao da biblioteca (ENC28J60). Erro:


sketch_jul27a.cpp:3:25: error: etherShield.h: No such file or directory.
Pois bem, resolvi o erro trocando uma letra no cdigo:
onde est > #include etherShield.h
deve-se ter > #include EtherShield.h
Resolvido

By eglecio, November 5, 2012 @ 9:58 am

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.

Grato de sua colaborao.


Eglecio

By Leandro, December 3, 2012 @ 8:52 am

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(Gerenciamento Esteira Seletora por Cor);

server.print(Servidor Web Embarcado);

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);

//Relatrios sero enviados quando desativar o motor da esteira

server.print(Quantidade de caixas selecionadas: Caixas Vermelhas: );


server.print(qtdRed);
server.print(Caixas Verdes: );
server.print(qtdGreen);
server.print(Caixas Azuis: );
server.print(qtdBlue);

//Quando adiciono mais codigo p/ relatorio aqui o arduino para de responder e o shield no pinga

server.print();

server.respond();

By visitante, January 7, 2013 @ 10:34 am

Parabns pelo blog


Comprei este mdulo ethernet e fiquei dias at consguir fazer um simples ping. A biblioteca dele no
/era suportada oficialmente pelo arduino. No fim usei a biblioteca do turicas e funcionou.

By Reginaldo Padilha, June 4, 2013 @ 11:28 pm

E necessario o Arduino ou ela se liga sozinha na rede?

By Webtronico, June 5, 2013 @ 7:29 am

Riginaldo, necessrio o Arduino.

By Jorge Emil, January 2, 2014 @ 10:14 pm


Prezados boa noite Algum sabe me informar se a referida biblioteca funciona tambm com PIC?
Se no, algum sabe que biblioteca poderia usar e se tem algum exemplo na net, pois s encontrei
projetos com Arduino. Grato. dsd,

By ilgner, January 21, 2014 @ 8:29 pm

Quais sao os pinos que iro ser ligados?

By rafael, June 23, 2014 @ 6:29 pm

estou tentando usar o modulo enc28j60 como cliente so tenho que enviar e receber uma string

By rafael, June 23, 2014 @ 6:31 pm

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

By rafael, June 23, 2014 @ 6:41 pm

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

You might also like