Recentemente comprei um módulo Ethernet ENC28J60, para conectar ao meu Arduino Uno, pensei que seria simples como foi ligar o drive para controle de motor de passo, mas não foi bem assim!
Para simplificar, vou me referir ao “Shield Ethernet” oficial do Arduino somente pelo nome shield, e o “Módulo Ethernet ENC28J60” somente de módulo.
Como o módulo não era o “original” precisei adicionar novas bibliotecas no Arduino Software, alguns blogs falam pra deletar as libraries quem acompanham a ferramenta de desenvolvimento, como não gostei muito dessa idéia, continuei a estudar se teria um jeito mais simples e sem ter que deletar nada. Cheguei no passo a passo abaixo.
- Baixe a biblioteca desse link: Ethercard
- Adicione ao seu Arduino Software clicando em: Sketch -> Import Library -> Add Library e selecionando o arquivo Ethercard.zip baixado na passo anterior.
- Compile e faça o upload do programa abaixo para o seu Arduino:
#include <EtherCard.h> // Caso queira definir um ip estático mude de 0 para 1 #define STATIC 0 #if STATIC // Endereço IP estático a ser definido a interface Ethernet static byte myip[] = { 192,168,1,200 }; // Endereço IP do Gateway da sua rede static byte gwip[] = { 192,168,1,1 }; #endif // MAC Address da interface ethernet - deve ser único na sua rede local static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; byte Ethernet::buffer[500]; const char page[] PROGMEM = "HTTP/1.0 200 OK\r\n" "Content-Type: text/html\r\n" "Refresh: 5\r\n" "\r\n" "<html>" " <head>" " <title>Arduino Web Server</title>" " </head>" " <body>" " <h3>Página resposta do seu Arduino.</h3>" " <p><em>fabiotomio.com.br.<br />=D</em></p>" " </body>" "</html>" ; void setup(){ Serial.begin(57600); Serial.println("\n[webserver]"); if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println( "Failed to access Ethernet controller"); #if STATIC ether.staticSetup(myip, gwip); #else if (!ether.dhcpSetup()) Serial.println("DHCP failed"); #endif ether.printIp("IP: ", ether.myip); ether.printIp("GW: ", ether.gwip); ether.printIp("DNS: ", ether.dnsip); } void loop(){ if (ether.packetLoop(ether.packetReceive())) { memcpy_P(ether.tcpOffset(), page, sizeof page); ether.httpServerReply(sizeof page - 1); } }
- Após fazer o upload do programa para o Arduino, abra o “Serial Monitor”, deverá aparecer algo como na imagem abaixo:
- Agora é só acessar o endereço IP utilizando o seu navegador preferido:
Note que o texto que aparece é o HTML correspondente às linhas 19 a 31 do programa que compilamos e fizemos o upload pro Arduino!
Mas você deve estar se perguntando, quais pinos ligar onde, não é!?
A ligação do módulo é quase igual ao shield oficial descrito na imagem abaixo:
encontrado nesse link: http://arduino.cc/en/reference/ethernet
A diferença fica no pino correspondente ao “SS for Ethernet controller“, que no Módulo Ethernet ENC28J60 é chamado de Pino CS, que é conectado no pino 8 ao invés do pino 10. Como o nosso módulo não contempla o leitor de cartões como o shield, o “SS for SD card” não tem nenhum pino correspondente no módulo, por motivos óbvios. Veja abaixo a tabela que correlacionando os pinos:
Módulo Ethernet | Arduino UNO |
Pino CS | Pino 8 |
Pino SI | Pino 11 |
Pino SO | Pino 12 |
Pino SCK | Pino 13 |
Pino VCC | Pino 3.3V |
Pino GND | Pino GND |
Segue uma imagem pra ilustrar a conexão do módulo com o Arduino que peguei na net.
Claro que o meu não ficou tão bonito assim! 😉
Creio que é isso… Tenho umas idéias para o Arduino mais esse módulo Ethernet, vou postando aqui no blog os avanços!
Grande abraço a todos e qualquer dúvida é só entrar em contato!
Dica: Com a library, vieram alguns exemplos! lol O código que coloquei aqui é baseado em um dos exemplos! Tem coisas bacanas que você pode usar como referência para desenvolver o seu projeto, para acessar, entre no menu em: File -> Examples -> Ethercard e escolha um exemplo.
Referências:
http://www.geeetech.com/wiki/index.php/Arduino_ENC28J60_Ethernet_Module
http://nathanhein.com/2013/02/getting-arduino-online-with-an-enc28j60/
http://hofmannsven.com/2013/laboratory/arduino-ethernet-module/
http://stackoverflow.com/questions/8736791/arduino-dhcp-not-working
https://www.sparkfun.com/tutorials/409
http://helpdev.com.br/2013/07/07/arduino-criando-servico-web-com-ethernet-shield/
Repositório da biblioteca no github: https://github.com/jcw/ethercard
Gerenciador de projetos da biblioteca: http://jeelabs.net/projects/ethercard
Atualização 01: Mudei o conteúdo da pagina entregue pelo Arduino para um conteúdo mais amigável, atualizo as imagens na sequência. 07-05-2014
Atualização 02: Atualizei as imagens. 08-05-2014