24 junho 2013

Ethernet shield Wiznet W5100 - Parte 1

Módulo Ethernet Shield Wiznet W5100

Parte 1 - Montagem e configuração IP

Um módulo muito interessante que temos para o Arduíno é o módulo Arduino Ethernet W5100. Com ele podemos conectar o nosso Arduino à rede local e também à internet, possibilitando acesso remoto, transferência de dados, verificação remota de status de sensores, e muito mais.

Este assunto é complexo em alguns pontos e permite muitas possibilidades de programação, que serão temas de outros artigos. Vou dividir essa parte inicial em dois tópicos :

  • Parte 1 - Montagem e configuração IP
  • Parte 2 - Envio de dados do arduino para o browser, via ethernet

O módulo que eu vou usar é o ethernet shield com chipset Wiznet W5100, como esse da foto. Este módulo é compatível tanto com Arduino Uno como com o Arduino Mega, e possui também um leitor de cartões microSD :

ethernet shield w5100

Esse módulo é ligado ao Arduino Uno simplesmente encaixando o módulo na parte superior :

Ethernet Shield W5100 - Montado

Se você tem o Arduino Mega, o encaixe será feito desta maneira :

Arduino Ethernet Shield - Placas

A princípio o encaixe fica um pouco estranho, com o shield longe da placa do Arduino, isso ocorre porque os pinos do shield são longos, mas se você reparar na foto abaixo, verá que isso evita que o shield toque no conector USB :

Arduino Ethernet Shield - Detalhe

Com o shield ethernet devidamente encaixado na placa do Arduino, basta ligar o cabo de rede. Na parte superior, temos os leds de status, que mostram o funcionamento do módulo e o status de conexão à rede :

Arduino Ethernet Shield - Leds

Arduino Ethernet Shield W5100 - Funcionamento


Vamos testar o funcionamento da placa  utilizando um programa que simplesmente configura o endereço IP, utilizando os valores abaixo. Os valores apresentados são alguns dos mais comuns usados na comunicação IP. Talvez a sua rede use endereços diferentes. Se tiver dúvidas, verifique suas configurações de rede ou deixe um comentário para que eu possa ajudá-lo :

Arduino Ethernet Shield W5100 - IP

Carregue o seguinte programa no Arduino :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Programa : Ethernet Shield Wiznet W5100 - Define endereço IP
// Autor : Arduino e Cia

#include <SPI.h>
#include <Ethernet.h>

// A linha abaixo permite que voce defina o endereço 
// fisico (MAC ADDRESS) da placa de rede
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };

// Os valores abaixo definem o endereço IP, gateway e máscara. 
// Configure de acordo com a sua rede.
IPAddress ip(192,168,0,100);         //Define o endereço IP
IPAddress gateway(192,168,0,1);    //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede

void setup() 
{
  Ethernet.begin(mac, ip, gateway, subnet); //Inicializa o Ethernet Shield
}

void loop() {}

Note que os endereços IP são separados por vírgula, ao invés de ponto, como é habitual. Para verificar o funcionamento da placa, abra um prompt de comando (janela DOS, para os mais antigos) no seu computador, e digite o seguinte comando, seguido de <ENTER> :

ping 192.168.0.100

Se tudo estiver ok, uma tela parecida com essa será apresentada, indicando que o módulo ethernet foi corretamente configurado e consegue enviar e receber dados pela rede :

Arduino Ethernet Shield W5100 - Ping

Isso encerra a parte básica de montagem e configuração IP do módulo ethernet. No próximo artigo, vamos ver como enviar dados do módulo para o browser.

Atualizado : Parte 2 nesse link : http://www.arduinoecia.com.br/2013/06/ethernet-shield-wiznet-w5100-parte-2.html

Até lá !

83 comentários:

  1. Bom dia, muito obrigado, consegui tirar várias dúvidas. Parabéns...
    Roberto Carlos

    ResponderExcluir
  2. olá, to precisando de ajuda, eu sou iniciante nessa área, e to com dificuldade, eu não estou conseguindo fazer a configuração de IP e MAC no meu Shield Ethernet.

    ResponderExcluir
    Respostas
    1. Bom dia Clesyo ! Qual é o modelo do shield que você tem ?

      Excluir
  3. Olá, o meu não está respondendo ao ping. O que devo fazer?

    ResponderExcluir
    Respostas
    1. Bom dia Ricardo. Por favor verifique as suas configurações de rede, principalmente máscara e gateway. Você está usando roteador ?

      Excluir
    2. Remova o cabo USB antes de executar o comando Ping.

      Excluir
  4. Esta placa Ethernet Shields para Arduino possui protocolos de gerenciamentos SNMP?

    ResponderExcluir
    Respostas
    1. Boa noite Renato !

      Olha, eu andei olhando as documentações espalhadas por aí, e as informações são as mais variadas possíveis. Algumas falam que sim, outras que não, mas tudo vai depender da placa que você adquirir. Realmente não posso te garantir que vá funcionar ou não.

      Uma coisa que eu achei foi um cara chamado "agentuino", que é um agente SNMP para Arduino, que você pode usar em conjunto com essa placa ethernet :

      https://code.google.com/p/agentuino/

      Espero ter ajudado, e se tiver novidades e quiser contribuir compartilhando as informações com o pessoal do blog, agradeço.

      Abraço !

      Excluir
    2. Obrigado ajudou bastante e depois posto os resultados.
      Abraços

      Excluir
  5. Quais os Pinos que Shield ocupa ?

    ResponderExcluir
    Respostas
    1. Bom dia !

      No meu modelo específico, são usadas as portas 10,11, 12 e 13. Entretanto, já vi outras placas chinesas que usam mais portas.

      Abraço !

      Excluir
  6. Segui os passos corretamente, mas o ping responde host inacessível. Será algum problema na placa ethernet?

    ResponderExcluir
    Respostas
    1. Bom dia Gerson,

      Não necessariamente, acho mais provável ser alguma coisa na ligação entre a placa e o roteador, ou então alguma configuração de rede, como gateway ou máscara incorretos. Reveja as configurações, por favor.

      Abraço !

      Excluir
  7. Olá, estou com um projeto que irá enviar um email para uma conta de domínio, porém não estou conseguindo fazer com que o Shield envie a informação, será que alguém pode me dá uma dica de um código e configurações? Agradeço!!!

    ResponderExcluir
  8. Respostas
    1. Boa tarde,

      As linhas 13, 14 e 15 do programa acima definem o IP do shield.

      Abraço !

      Excluir
    2. O ip deve ser o mesmo ip da máquina ou pode ser um diferente?

      Excluir
    3. Boa tarde,

      diferente, senão vai entrar em conflito com o IP da máquina.

      Abraço!

      Excluir
  9. Bom dia, eu nunca mexi com esse tipo de Shield antes. Segui todos os passos e qdo o Prompt dispara o ip ele retorna como "host de destino inacessível", vc sabe me dizer oq está errado??
    Estou usando um Arduino Uno com um Shield Ethernet W5100. Obrigado.

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Você viu se o shield responde ao comando PING no prompt de comando ?

      Abraço !

      Excluir
  10. boa noite!!!!
    fiz como esta no seu exemplo e funcionou pelo CMD tudo blz.... ai passei pra sua segunda aula, ai fiz da mesma maneira ai quando fui pro browser digitei o IP e deu como reposta pagina de web não encontrada.... ai pra mim ver se estava tudo funcionando tudo normal fui fazer o teste o exemplo que vem no proprio arduino o web server... ele pegou rapidamente e depois apareceu no serial monitor a seguinte mensagem :
    server is at 192.168.0.100
    new client
    GET / HTTP/1.1
    Host: 192.168.0.100
    Connection: keep-alive
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4

    client disonnected



    Vc poderia me ajuda????

    ResponderExcluir
    Respostas
    1. Boa noite Tassyo,

      Você chegou a trocar de browser ou desconectar o Arduino da rede e conectar novamente ? Notei que às vezes o shield perde contato com a rede sem razão aparente, principalmente na hora que o Arduino é ligado.

      Abraço !

      Excluir
    2. eu ja cheguei a fazer isso... pois já tinha lido algo sobre isso... mas continua com a mensagem.....

      Excluir
  11. Sim... Já tinha lido sobre isso em outras pastagens. .. ele pegava de novo quando eu ficava um tempinho sem mexer ai logo em seguida aparecia a mesma mensagem

    ResponderExcluir
  12. Bom dia amigos, sou novo com Arduino estou com algumas duvidas: Não estou conseguindo realizar o segundo teste, o primeiro deu certo pois quando faço o segundo, que coloco o IP no browser ele da pagina não encontrada, tenho aqui um Modem Velox ZTE W300S , conectado a D-LINk 524 meu Shied é um W51000

    ResponderExcluir
    Respostas
    1. Boa tarde Sandro,

      Eu tive esse problema e resolvi reiniciando o router e o Arduino.

      Abraço.

      Excluir
  13. Quando vc fala reiniciar o router é o roteador ? E Como reinicio o Arduino

    ResponderExcluir
    Respostas
    1. Boa noite Sandro,

      Isso mesmo. Router é o roteador. E o Arduino, vc pode reiniciar utilizando o botão de reset do Arduino.

      Você fez o teste do ping para ver se a placa está respondendo ?

      Abraço

      Excluir
  14. Bom dia Amigo,

    Os Leds TX, RX e COLL não acendem quando conectado ao cabo de rede. No cabo cabo de rede só acende o verde o amarelo não. O que ocorre?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Isso está com "cara" de cabo de rede ruim ou algum pino invertido. Você consegue testar com outro ?

      Abraço.

      Excluir
  15. Boa noite. Já tentei de diversas maneiras possíveis, porém em nenhum dos casos meu ethernet shield W5100 deu sinal de vida.
    Quando conectado ao roteador, as luzes RX,FULLD,100M,LINK e PWR ficam piscando (com exceção do PWR). Porém quando passo algum código ao arduino e acesso o ip atribuído ao mesmo pela web, aparece "Esta página da web não está disponível". Pelo digito " ping IP" no prompt de comando, aparece "Host de destino inacessível".
    Já testei com dois roteadores diferentes (D-LINK e TP LINK), mas ambos sem sucesso.
    O que pode estar de errado? Será que minha shield está danificada?
    Desde já agradeço!

    ResponderExcluir
    Respostas
    1. Bom dia,

      Pode ser o shield danificado sim, mas me parece somente um problema de configuração de rede ou definição de IP.

      Um teste que você pode fazer é ligar o shield diretamente no computador e ver se o problema é no seu roteador, fazendo o teste do ping.

      Abraço !

      Excluir
  16. Eu estou com duvida para conectar o Ethernet Shield no arduino mega r3, como sou novo queria saber os pinos certos. Muito obrigado e espero a resposta de vocês.

    ResponderExcluir
    Respostas
    1. Bom dia Rodrigo,

      Você precisa do esquema de encaixe ou dos pinos que o shield utiliza para se comunicar com o Arduino ?

      Abraço !

      Excluir
  17. Olá! Gostaria de saber onde baixar as bibliotecas spi.h e a ethernet.h. Não encontrei. Agradeço desde de já

    ResponderExcluir
    Respostas
    1. Boa tarde Olavo,

      As bibliotecas que vc citou já estão incluídas na IDE do Arduino, basta copiar o programa e compilar.

      Abraço !

      Excluir
  18. Boa tarde, fiz como foi explicado, mas minha rede tem o gateway e o ipv4 diferente, modifiquei, deixei que nem o do notebook, mas só da host de destino inacessível.
    Você pode me ajudar?

    ResponderExcluir
    Respostas
    1. Boa noite Maria,

      Me fale o IP, o gateway e a máscara de rede que você está usando tanto no notebook como no shield, por favor.

      Abraço!

      Excluir
  19. Boa tarde estou tentando mandar um email com arduino ja tentei alguns códigos mais não obtive resultado poderia me ajudar.

    Obrigado.

    ResponderExcluir
  20. Estou tentando enviar um email pelo arduino, poderia me ajudar.

    Obrigado.

    ResponderExcluir
    Respostas
    1. Boa tarde Everton,

      Legal. Que tutorial você está seguindo ?

      Abraço!

      Excluir
  21. Ola eu preciso fazer uma programação para um tcc e preciso de ajuda na programação são 10 leds,
    1 motor servo simulando portão basculante, 1 motor dc ou cooler, um alarme com sensor pir , um sensor de luminosidade LDR , com Arduíno mega 2560 e o Ethernet sheld se puder me ajudar meu E-mail e edisondesouza95@gmail.com

    ResponderExcluir
  22. Uso o Arduino MEGA ADK com Ethernet Shield WZ5100
    . Fiz o ping direto do PC com o Arduino - funcionou beleza

    . Ping do Arduino+Shield com o modem - infelizmente não funciona
    no prompt de comando, aparece "Host de destino inacessível".

    IP: 192.168.25.200
    Gateway:192.168.25.1 (router)
    Máscara de rede: 255.255.255.0

    Me ajudem por favor, não consigo entender onde possa ser o erro.

    ResponderExcluir
  23. Olá amigo!
    Eu precisaria uma forma de acionar LEDs Externos baseado no acionamento dos LEDs TX, RX, e LINK da placa ethernet.
    Será que alguém pode me ajudar?

    ResponderExcluir
    Respostas
    1. Bom dia Marcio,

      Pode me explicar melhor a sua idéia ?

      Abraço!

      Excluir
  24. Olá!! Estou começando agora com Arduíno e gostei muito deste blog!
    Queria montar esse sistema e gostaria de saber se esta shield é compatível também com o Arduíno DUE.
    grato pela ajuda, pq estou perdido nesse começo!!
    abraços

    ResponderExcluir
    Respostas
    1. Bom dia!

      Eu não testei com o Due ainda, mas eu creio que não seja compatível, já que o DUE trabalha com nível de sinal de 3.3V, e o shield trabalha com 5V.

      Abraço!

      Excluir
  25. Olá! Gostei muito deste blog e deste artigo!!
    Estou começando com o Arduíno e quero de montar esse sistema, mas gostaria de saber se esta shield é compativel também com o Arduíno DUE.
    Por indicação de amigos comprei esta shield ( no mercado internacional) e também o DUE, porém agora tenho duvidas com que shields posso integra-lo em função da tensão de 3.3V que ele trabalha.
    grato pela ajuda, pq estou meio perdido com isso!
    abraços e parabéns pelo blog.

    ResponderExcluir
  26. Obrigado, amigo!!
    Acho que Comecei Comprando Errado....rs
    Vou tentar achar outra compativel!!!
    abçs :.

    ResponderExcluir
  27. boa tarde

    Minha placa Ethernet Shield Wiznet W5100 nao ping. Antes de fiz uma programa de no pino 13 levei 0 e 1, que oled. verifiquei a placa usa os pinos 10, 11, 13. pode danificar a placa

    ResponderExcluir
  28. Boa tarde. tenho Ethernet Shield Wiznet W5100, não esta pingado. verifiquei as configurações esta correto. verifique os comentários essa placa usa os pinos 11,13,etc. com a placa Ethernet Shield Wiznet W5100 conectado e fiz un teste no pino 13, fiz o led pisca. pode causar a queimar da placa.

    ResponderExcluir
  29. Prezado amigo, uso essa placa há algum tempo e nunca consegui explicar o motivo pelo qual o regulador de tensão de 3,3V e o de 5,0V do arduino esquentar tanto quando liga-se o mesmo a uma fonte de 12V. Se o arduino sozinho é ligado a uma fonte externa de 12V não há aquecimento. Quando é colocado a shield ethernet no arduino e alimentado por 12V os reguladores do arduino quase fritam. Vc saberia qual é o problema?

    ResponderExcluir
    Respostas
    1. Boa noite Izaias,

      Quando eu peguei defeitos assim, era realmente um defeito no Ethernet Shield, não notei essa alteração em outros projetos em que o shield funcionava normalmente.

      Abraço!

      Excluir
  30. boa noite,
    Nao passei da primeira etapa quando digito no prompt ping 192.168.0.100
    aparece

    C:\Users\Acer>ping 192.168.0.100

    Disparando 192.168.0.100 com 32 bytes de dados:
    Esgotado o tempo limite do pedido.
    Esgotado o tempo limite do pedido.
    Esgotado o tempo limite do pedido.
    Esgotado o tempo limite do pedido.

    Estatísticas do Ping para 192.168.0.100:
    Pacotes: Enviados = 4, Recebidos = 0, Perdidos = 4 (100% de
    perda),

    ResponderExcluir
    Respostas
    1. Olá,

      Esse ethernet shield está ligado em um roteador ? tente ligar diretamente no seu computador e veja se o problema permanece.

      Abraço!

      Excluir
  31. estou usando um roteador dir-615 mas com shield w5100 mas quando tento o ping Resposta de 192.168.0.4: Host de destino inacessível.
    minhas configurações de rede :
    Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
    Gateway Padrão. . . . . . . . . . . . . . .: 192.168.0.1

    configuração de rede Arduino:
    byte mac[] = {
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
    };
    IPAddress ip(192, 168, 0,150 );
    IPAddress gateway(192,168,0,1);
    IPAddress subnet(255,255,255,0);

    Será que tenho que configurar algo no roteador?

    ResponderExcluir
  32. bom dia tenho uma placa W5100 COMO EU DESCUBRO O MAC ADRESS NÃO VEI NENHUMA INDICAÇÃO

    ResponderExcluir
    Respostas
    1. Oi Luiz,

      O MAC não vem escrito na placa (pelo menos as que eu vi até agora não tinham). Você então define isso no programa, digamos, "inventando" um MAC...

      Siga o formato mostrado na linha 9:

      byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };

      Nesse caso o endereço MAC é AB-CD-12-34-FF-CA

      Abraço!

      Excluir
  33. Boa noite, estou com problema ao configurar minha placa, quando alimento a mesmo via USB, somente o led PWR fica aceso, a placa não reconhece o cabo de rede quando conectado e algumas vezes, acende todos os leds da placa, mesmo sem cabo de rede conectado.

    Consegue me ajudar?

    ResponderExcluir
    Respostas
    1. Oi Douglas,

      Você seguiu todos os passos dos tutoriais ? Pode ser problema na placa também....

      Abraço!

      Excluir
  34. boa tarde no meu aparece tempo esgotado inacessível enviada 4 recebido 2 50% de perdas

    ResponderExcluir
    Respostas
    1. Oi Johannes,

      Alguma coisa na conexão.. algum parâmetro que tá faltando ou incorreto.. dê uma olhada no cabo e nas configurações de rede, por favor.

      Abraço!

      Excluir
  35. Olá arduino e cia, Eu uso um notebook com linux e não sei como a pesquisa do ipconfig , já tentei algumas variações de ip mas não funcionaram.
    Se puder me ajuda, Agradeço desde já!

    ResponderExcluir
    Respostas
    1. Bom dia,

      Você está tentando dar um ping no ethernet shield ?

      Se o ping for, por exemplo: 192.168.0.22:

      $ping 192.168.0.22

      Abraço!

      Excluir
  36. Qual a diferença de ip, gateway e mac? Aqui funcionou o ping se eu ligo o cabo no modem tp link td-w8951nd, porém se ligo direto no notebook não funciona.

    ResponderExcluir
  37. estou com um problema que quando conecto os cabos, o computador nao reconheçe
    fiz o codigo compilei certo mais na hora de fazer o upload ele nao reconhece o arduino ja refiz todo o código e configurei tudo certo com o ip e gateway
    o que pode ser?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Quando você retira o shield o programa é transferido normalmente ? O ethernet shield pode estar em curto. Já vi isso acontecer algumas vezes.

      Abraço!

      Excluir
  38. Olá, estou com um problema para configurar o ip do shield. Eu digito no prompt "ping 192.168.1.100" e ele me retorna: "Resposta de 192.168.1.3(ip do meu PC e não do shield): Host de destino inacessível." Você pode me ajudar com isso? Pq ele dispara contra meu próprio PC ao invés do shield? (Configurei tudo certinho no programa). Obrigado

    ResponderExcluir
    Respostas
    1. Oi Filipe,

      Aparentemente ele não está encontrando a placa. Você ligou diretamente ao computador com um cabo de rede ou está usando um roteador no meio do caminho ?

      Abraço!

      Excluir
    2. Olá, conectei o Arduíno no meu roteador. É melhor conectar diretamente no pc então?

      Excluir
    3. Oi Filipe,

      Acho que para você identificar o problema, é melhor você ligar no computador, assim você vai descobrir se o problema é no ethernet shield ou no caminho até o roteador.

      Abraço!

      Excluir
  39. Olá

    Fiz conforme o teu scipt, mas dá erro que diz inacessível.
    O gateway é 192.168.4.1, a máscara é 255.255.255.0 e o IP que atribuí para o shield ethernet é 192.168.4.103.
    Daí carreguei o programa no Arduino, desconectei do computador e conectei o ethernet shield no roteador, daí fiz o

    ping 192.168.4.103, mas dá

    host de destino inacessível.
    O código que usei é este:

    // Programa : Ethernet Shield Wiznet W5100 - Define endereço IP
    // Autor : Arduino e Cia

    #include
    #include

    // A linha abaixo permite que voce defina o endereço
    // fisico (MAC ADDRESS) da placa de rede
    byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };

    // Os valores abaixo definem o endereço IP, gateway e máscara.
    // Configure de acordo com a sua rede.
    IPAddress ip(192,168,4,103); //Define o endereço IP
    IPAddress gateway(192,168,4,1); //Define o gateway
    IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede

    void setup()
    {
    Ethernet.begin(mac, ip, gateway, subnet); //Inicializa o Ethernet Shield
    }

    void loop() {}

    Agradeço qualquer ajuda.
    Luis Paulo
    zbluispaulo@gmail.com

    ResponderExcluir
    Respostas
    1. Oi Luis,

      Ligado direto no computador funciona ?

      Abraço!

      Excluir
  40. Oii,

    É possível ligar dois shields Ethernet em um Arduino Uno ?

    Abraços.

    ResponderExcluir
    Respostas
    1. Oi André,

      Não, a não ser que você faça alguma alteração no hardware, pq senão eles vão usar os mesmos pinos para comunicação com o Arduino e não vai funcionar.

      Abraço!

      Excluir
  41. Olá,posso fazer este projeto em um MAC?

    ResponderExcluir
  42. bom dia esses testes feito na parte um e feito direto na placa de rede do pc ou do roteador? e esses ip final 100 deve ser colocado aonde? na placa de rede do meu pc?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Os testes da parte 1 você faz à partir do seu PC, eu recomendo ligar o ethernet shield diretamente na porta ethernet do computador para garantir que o roteador não irá afetar a comunicação.

      Abraço!

      Excluir
  43. Boa noite, queria saber se tem a possibilidade de eu conseguir mudar os pinos que o shield ethernet w5100 usa para conectar com a placa, pois no meu projeto ainda tenho um keypad lcd, e esta dando erro pos o lcd nao dexa usar o pino 10. Desde ja agradeço.

    ResponderExcluir