Como usar com Arduino – Ethernet Shield W5100 (Web server)

Como usar com Arduino – Ethernet Shield W5100 (Web server)

img00_como_usar_com_arduino_ethernet_shield_w5100_uno_mega_2560_nano_internet_automacao_residencial_android_telefone_rele_web_server

– Descrição:

Ethernet Shield W5100 é uma placa que permite ao Arduino se conectar a uma rede local ou a internet. O mesmo possui o chip Wiznet W5100 e suporta até quatro conexões de socket simultaneamente. O shield possui um slot para cartão de memória (micro SD), onde é possível armazenar arquivos que podem ser enviados pela rede local / internet, e possui também bibliotecas para serem utilizadas pelo Arduino.

Devido à necessidade de ligar o Arduino a rede mundial de computadores (internet), o Ethernet Shield W5100 foi desenvolvidoMuitos projetos desenvolvidos com Arduino necessitam de acesso / controle de forma remota e ao utilizar o Ethernet Shield W5100 essa necessidade é suprida de forma simples e prática, pois basta acoplar o shield em cima do Arduino, conectar o shield ao roteador / modem através de um cabo de rede RJ45, inserir o código fonte correto no Arduino e usufruir dos benefícios.

Ao inserir o Arduino na internet, você pode acessá-lo de qualquer local do mundo, seja com um computador, smartphone ou tablet e obter informações ou solicitar que ações sejam executadas. Para projetos que envolvam integração entre Arduino e aplicações Android ou iOS, o Ethernet Shield W5100 se torna um membro importante do projeto. Por ser um shield, mesmo acoplado na parte de cima do Arduino, você ainda poderá utilizar a maior parte das portas digitais e analógicas da placa.

– Especificações e características:

– Controlador: W5100
– Tensão de operação: 3,3V – 5VDC
– Velocidade de conexão: 10 / 100Mb
– Protocolos Suportados: TCP / IP, UDP, ICMP, ARP IPv4, IGMP, PPPoE, Ethernet
– Suporte (Full-duplex e half-duplex)
– Suporte a conexão ADSL (PPPoE com PAP / CHAP no modo de autenticação)
– Suporte a 4 conexões independentes simultaneamente
– Memória Interna: 16Kb para buffers de Tx / Rx
– Conexão com o Arduino através de SPI

– Datasheet:

Datasheet W5100

– Aplicações:

Projetos com Arduino em que seja necessário conectar a placa a internet para desenvolvimento de projetos que necessitam controlar algo remotamente ou obter informações de outros dispositivos para exibir em tempo real ou armazenar em uma base de dados.

– Proposta da prática:

Utilizar o Ethernet Shield W5100 em conjunto com o Arduino para fazer uma conexão a um webserver e acessar uma página web que possui um botão para ligar / desligar um LED. O estado atual deste LED também será exibido na página.

– Lista dos itens necessários:

01 – Arduino com Cabo USB
01 – Ethernet Shield W5100
01 – LED Difuso 5mm Vermelho
01 – Resistor de 150Ω
01 – Protoboard
02 – Cabos Jumper macho-macho
01 – Cabo de rede RJ45

– Esquema de ligação da prática:

img01_como_usar_com_arduino_ethernet_shield_w5100_uno_mega_2560_nano_internet_automacao_residencial_android_telefone_rele_web_server

– Tutorial de instalação e configuração do ambiente de programação do Arduino:

Arduino – Instalação e Configuração da IDE no Windows

– Código:

1) O código está configurado para utilizar IP estático, portanto, você terá que alterar algumas informações.

2) No “byte ip[]”, coloque um endereço de IP livre na sua rede, no “byte gateway[]”, coloque o endereço de gateway na sua rede e no “byte subnet[]”, coloque as informações de máscara de sub-rede na sua rede. Se você não sabe como ter acesso a essas informações no Windows, sugiro que leia a postagem Descobrindo a faixa de IP do seu roteador e em seguida retorne para continuar.

3) Conecte o Arduino ao computador, conecte uma ponta do cabo de rede RJ45 ao Ethernet Shield e a outra ponta conecte ao roteador.

4) Após o arquivo ser carregado no Arduino, abra o navegador no seu computador, smartphone ou tablet, digite o endereço de IP (byte ip[]) que você inseriu no código e a página web será aberta.

5) Alterne entre os comandos para acender e apagar o LED.

6) Alguns pinos do Arduino serão de uso exclusivo do Ethernet Shield W5100. No caso do Arduino Uno, os pinos digitais utilizados pelo shield são 10, 11, 12 e 13, e no Arduino Mega os pinos 50, 51, 52 e 53. Além disso, em ambas as placas o pino digital 4 também é utilizado para selecionar o uso do micro cartão de memória. Portanto, estes pinos não devem ser utilizados como entrada ou saída no seu projeto enquanto estiver usando o W5100.

– Resultado final:

Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 34 comentários para esta postagem
  1. Rodrigo às 18:43

    Boa noite, uma duvida eu conseguiria usar um módulo gsm pra acessar a internet e um modulo ethernet pra distribuir essa mesma internet?

  2. Rodrigo Aparecido da Silva às 13:24

    Obrigado Euler, pelo program. Muito bom. Aproveitando, gostaria de tirar uma dúvida. Estou utilizando o shield ethernet e gostaria de criar um gráfico na tela e também ver os valores de sensores mudando constantemente sem ter que ficar pressionando o botão de atualizar. É possível ver isso? Você teria alguma dica de aonde posso consultar esse material?

    Mais uma vez obrigado

  3. Jesio às 14:20

    Ola Euler, gostaria de inciar informações de sensores para o html. Como eu poderia incluir neste código?

  4. Matheus às 09:05

    Bom dia, Euler, ótimo blog este seu, de fato muito informativo.

    Tenho uma dúvida, sei que é possível usar este shield ethernet para que o arduino acesse um banco de dados e preencha-o com dados coletados por algum sensor conectado ao mesmo, a minha dúvida é: seria possível fazer a mesma coisa usando um shield wifi, por exemplo? E ainda nesse exemplo do banco de dados, seria possível simultaneamente guardar as informações coletadas pelo sensor num cartão sd inserido no shield? Para ter os dados como backup e para que caso aconteça da conexão cair os dados continuem sendo salvos no cartão?

    Obrigado pela atenção.

    • Euler Oliveira Autor às 13:54

      Olá Matheus.

      Agradeço pelo comentário e reconhecimento!

      Sim, é possível implementar conforme você explicou.

      • Matheus às 09:55

        Obrigado pela atenção, Euler, solucionou completamente a dúvida. Estou tendo que fazer uns projetos de automação de captura de dados e seu blog tem sido bastante elucidativo.

  5. Olgorofi às 12:02

    Bom dia.
    Neste modulo com W5100 consigo adicionar na rotina interna via plataforma do Arduino uma subrotina de ping (com entradas de IP,Gateway e Mascara) sem precisar utilizar um ESP32 ou ESP8266 ?? Obrigado por responder

    • Euler Oliveira Autor às 18:45

      Olá Olgorofi.

      Agradeço pelo comentário!

      Não temos nenhuma postagem neste sentido, mas certamente é possível.

  6. Fabio Cutrufo às 15:05

    Boa tarde Euler, Parabéns pelo excelente trabalho !
    Vc tem algum tutorial de comunicação entre 2 arduinos via tcp/ip, no qual um sera somente as entradas, enviando string texto , e o outro recebendo.
    Obrigado

    • Euler Oliveira Autor às 15:15

      Olá Fabio.

      Agradeço pelo comentário!

      Infelizmente não produzi nada semelhante.

    • Euler Oliveira Autor às 08:49

      Olá Nilton.

      Agradeço pelo comentário!

      Basicamente o que você precisa fazer é utilizar outros valores para o ledParam referente a este novo LED que adicionou. Para o LED que já estava no código é utilizado os valores de 1 e 0 para o ledParam, contudo, para o novo LED você deve usar, por exemplo, os valores 2 e 3, sendo um para sinalizar LED ligado e outro para sinalizar LED desligado.

      Dentro do laço if else você deverá fazer a tratativa no else com um novo if, pois você está trabalhando com 4 valores para o ledParam e não dois. Na hora de passar o parâmetro via URL, você deverá digitar os respectivos valores,

  7. Nilton às 19:24

    Euler, muito agradecido pela ajuda, valeu.
    Está funcionando, mas ao carregar o código, a lâmpada fica ligada enquanto que na página a informação está ao contrário.

    Ao clicar no botão [ACENDER] – apaga a lâmpada;
    http://192.168.1.148/?ledParam=1

    Ao clicar no botão [APAGAR] – acende a lâmpada;
    http://192.168.1.148/?ledParam=0

    O processamento da lâmpada está ok, mas ficou o contrário do módulo de relé.
    Uso o Módulo Relé 16 Canais 12v Com Optoacoplador Para Arduíno

    • Euler Oliveira Autor às 20:35

      Mantenha o mesmo esquema de ligação que está usando com o módulo relé, mas no código onde for HIGH mude para LOW e onde for LOW mude para HIGH.

      Em seguida carregue o código no Arduino e veja se resolve.

  8. Nilton às 10:45

    Bom dia Euler,

    Testando seu código, não passa desta linha abaixo ao clicar verificar:
    #include

    E mostra o erro:
    stray ‘\357’ in program

    No final da compilação, está informando:

    Foram encontradas múltiplas bibliotecas para “SPI.h”
    Usado: C:\Program
    Foram encontradas múltiplas bibliotecas para “Ethernet.h”
    Usado: C:\Program
    exit status 1
    stray ‘\357’ in program

    Qual a solução ???

    • Euler Oliveira Autor às 13:31

      Olá Nilton.

      Agradeço pelo comentário!

      A solução é você excluir as outras bibliotecas SPI e Ethernet que estiverem a mais nas pastas de instalação de bibliotecas do IDE do Arduino.

  9. christian garcia às 13:24

    Hola buen dia funciono al principio pero después de hacer cambios al color de pagina apague el led y encendi y se desconecto, crei que era error de mi codigo pero volvi a cargar el original con los cambios de IP y nada ya no se conecta.

    • Euler Oliveira Autor às 14:07

      Hola Christian

      Gracias por el comentario!

      Verifique que el Ethernet Shield W5100 esté asentado correctamente en el Arduino y que los contactos (soldaduras) del conector RJ45 no estén en el conector USB de la tarjeta Arduino. También verifique que el cable RJ45 no esté dañado o mal asentado.

  10. Renan às 11:56

    Euler Oliveria, obrigado por compartilhar seu conhecimento conosco.
    Eu consegui fazer algumas alterações no código para funcionar do jeito que eu precisava, mas estou com uma duvida: Toda vez que a placa é desconectada da fonte e re-ligada o pino 9 manda o comando para acionar o relé, e preciso apertar o RESET na Ethernet Shield para ela reconectar na rede. (Estou utilizando o Mega 2560 e um modulo rele 16ch 5v).

    • Euler Oliveira Autor às 12:17

      Olá Renan.

      Agradeço pelo comentário!

      Provavelmente você deve estar utilizando o contato normalmente aberto do módulo relé e está enviando LOW assim que o código começa a ser executado, desta forma, o módulo irá ligar, pois este contato é acionado com sinal baixo (LOW). Tente alterar para assim que o sistema iniciar, o código enviar HIGH, desta forma o módulo irá iniciar desligado.

  11. Marcelo Maruchi às 19:33

    Boa noite Euler!

    É possível ter um sistema arduino com um botão para acionar outro arduino com uma sirene ou luz ! Sendo essa comunicação entre eles feita por rádios wireless a um distância de 1000 metros ?

  12. Raphael Barbosa Reis às 11:43

    Boa tarde amigo,

    Gostaria de saber como acessar o web server de uma rede externa! Conectado na mesma rede que o Arduino não tive problemas, mas gostaria de atuar externamente a essa rede. Tem como?

    • Euler Oliveira Autor às 12:56

      Olá Raphael.

      Pesquise sobre NAT, pois é ele que vai permitir acessar seu W5100 através da rede externa.

  13. jefferson viana dos santos às 23:51

    olá boa noite como faço para conectar com internet mundial no caso estou desenvolvendo meu projeto para formação de analise e desenvolvimento,

    o exemplo seria um app de estacionamento, como faço pra deixa ele online ter login para cada usuário peço por gentileza que me ajuda?

    • Euler Oliveira Autor às 19:57

      Olá Jefferson.

      Recomendo que leia sobre NAT (Network address translation), pois ele vai possibilitar implementar o acesso externo ao seu Arduino.

      Para construção da página WEB, recomendo que estude HTML, CSS, JavaScript, PHP e Banco de Dados SQL.

  14. Tainara às 01:56

    Olá Euler, estou fazer um Projeto utilizando o Ethernet Shield e preciso de um botão para fazer uma sequencia de movimentos no meu braço robótico, mas estou encontrando bastante dificuldade. Você já fez a conexão, para controlar servo motores?

    • Euler Oliveira Autor às 08:36

      Olá Tainara.

      Para controle de servo motor não cheguei a fazer nenhum projeto.

      Recomendo que estude um pouco sobre HTML, CSS e Ajax para que possa implementar na página as funcionalidades que precisa.

    • Euler Oliveira Autor às 12:00

      Olá Junior.

      Recomendo que leia os comentários em cada linha do código disponibilizado para esta prática. Além disso, recomendo também que estude um pouco sobre HTML e CSS para que possa implementar novos botões e funcionalidades na página.

  15. Wagner Villas Bôas às 04:24

    Olá,

    Você saberia informar como fazer para “ao clicar num botão, além do efeito deste botão ser realizado, um outro botão é tbm (automaticamente) acionado”? (desejavelmente, melhor ainda seria se houvesse uma temporização, ou seja, o outro botão só ser acionado após uns 3s, por exemplo).

    • Euler Oliveira Autor às 18:49

      Olá Wagner.

      Você fala um outro botão na mesma página?

  16. Ruan Pablo Santos Silva às 22:53

    Amigo , parabéns. Como faço para acionar mais portas?