Tag Archives: modulo ethernet

Arduino + Módulo Ethernet ENC28J60

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.

  1. Baixe a biblioteca desse link: Ethercard
  2. Adicione ao seu Arduino Software clicando em: Sketch -> Import Library -> Add Library e selecionando o arquivo Ethercard.zip baixado na passo anterior.
  3. 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);
       }
    }
    
  4. Após fazer o upload do programa para o Arduino, abra o “Serial Monitor”, deverá aparecer algo como na imagem abaixo:
  5. 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:

Pinos Shield Original - Arduino + Ethernet Module - Programa backSoon

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.

Módulo conectado - Arduino + Ethernet Module - Programa backSoon

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