Tutorial: Como utilizar o Ethernet Shield com Arduino

 

Olá Garagistas! Neste tutorial mostraremos como você pode utilizar o Ethernet Shield com Arduino. Como demonstração, faremos a leitura da temperatura do nosso sistema utilizando um Thermistor NTC e também faremos 3 tipos de acionamentos no nosso sistema: LED Blink, LED Fade e Acionamento de Lâmpada.

 

Materiais Utilizados:

1x Arduino

1x Ethernet Shield V1.0 ou 1x Arduino Ethernet Shield R3

1x Thermistor NTC 10kΩ

1x LED Amarelo 3mm

1x LED Vermelho 3mm

1x Módulo Relé

2x Resistor 330R

1x Resistor 10kΩ

1x Protoboard

1x Barra Fêmea - 40 Pinos

Alguns Jumpers

Cabo Ethernet conectado à Rede

 

1. Ethernet Shield

Imagem 1 - Modelos de Ethernet Shield

 

Na imagem acima você pode ver dois modelos de Ethernet Shield, o da esquerda foi desenvolvido pela Seed Studio, e o da direita pela Arduino. Com qualquer um desses shields você irá conseguir realizar este tutorial, pois ambos operam com o chip Wiznet W5100, o qual as bibliotecas SPI.h e Ethernet.h da Arduino IDE dão suporte. A diferença de uma para outra é basicamente o suporte a cartão micro SD, o Ethernet Shield da Seed Studio não possui conector para cartão micro SD. Contudo, para fins de transmissão via Ethernet ambos dão conta do recado, e caso você deseje fazer um Data Logger, utilizando um cartão micro SD, você pode utilizar um Ethernet Shield da Arduino, ou juntamente com o Ethernet Shield da Seed Studio, utilizar um breakout para cartão micro SD.

O Ethernet Shield da Seed Studio, vem somente com os pinos para se fazer a conexão com o Arduino, por isso utilizamos uma barra fêmea de 40 pinos para que pudéssemos conectar o Ethernet Shield com os componentes de acionamento utilizando jumpers:

 

Imagem 2 - Ethernet Shield com barras fêmea

 

 

2. Funcionamento

 

Nosso sistema é composto por uma interface gráfica, essa interface é visualizada por uma página HTML desenvolvida no próprio sketch do Arduino e também contém uma montagem feita em protoboard (placa de controle), onde teremos um Thermistor NTC, um LED Vermelho, um LED Amarelo e um Módulo Relé. 

 

2.1) Placa de Controle: A placa de controle possui 4 componentes:

 

- Thermistor NTC: O Thermistor NTC fica responsável por pegar a temperatura ambiente do sistema.

- LED Amarelo: Quando acionado, o LED Amarelo gera um efeito de Blink, onde fica piscando em um intervalo de 1 segundo.

- LED Vermelho: Quando acionado, o LED Vermelho gera um efeito de Fade, onde fica variando a intensidade de brilho de 0 a 100%, dependendo do valor de PWM enviado a ele (0 a 255).

- Módulo Relé: Quando acionado, faz a ligação da lâmpada com a rede elétrica, acendendo a mesma.

 

2.1) Interface Gráfica (Página HTML):

 

Image 3 - Interface Gráfica (Página HTML - COD: B1xxx)

 

O sistema possui uma interface gráfica, desenvolvida em uma página HTML. Como padrão, a página que está armazenada dentro do Arduino, fica gerando um Refresh, e a cada 5 segundos quando é dado o Refresh, o valor da temperatura é atualizado. Essa página também disponibiliza 3 botões de acionamento, e em nosso sistema cada botão fica responsável por um único acionamento. O primeiro botão quando acionado ativa o efeito Blink no LED Amarelo, o segundo botão quando acionado ativa o efeito de Fade no LED vermelho, e o terceiro botão controla o acionamento do módulo relé, acendendo ou apagando a lâmpada. No canto inferior da página, mostramos o nibble (4 bits) de controle do sistema, o primeiro bit (bit menos significativo) é controlado pelo primeiro botão, e quando o mesmo está em estado ON esse bit recebe 1, e quando em OFF esse bit recebe 0, e isso funciona da mesma maneira para o segundo botão (segundo bit) e para o terceiro botão (terceiro bit). O bit mais significativo controla a estrutura da página HTML, quando em 1, a página mostra qual a temperatura que está sendo aferida pelo Thermistor, e o valor do COD ATUAL é mostrado em valor binário, variando de 1000b a 1111b, quando em 0, a página não mostra a temperatura ambiente e o valor de COD ATUAL é mostrado em valor hexadecimal, variando de 0h a 7h. Para alterar o modo da estrutura da página HTML, basta alterar esse quarto bit dentro do sketch do Arduino na linha "byte COD = B1000;", como pode ser visto na imagem abaixo:

 

Imagem 4 - Interface Gráfica (Página HTML - COD: 0xxx)

 

 

Para alterar o nome de cada botão, basta alterar as Strings de cada acionamento, conforme o trecho do código selecionado na imagem abaixo:

 

Imagem 5 - Trecho para alterar o nome dos botões

 

 

Ainda com relação a estrtura da página HTML, neste sistema você pode alterar toda a estrutura da página, que se encontra dentro da condição "if (c == '\n' && currentLineIsBlank)". É necessário não só um conhecimento básico de HTML, como também um pouco de jeito para integrar o código HTML dentro do código C. Na imagem abaixo, você pode visualizar o trecho do código onde é iniciado a página HTML e escrito a estrutura da mesma:

 

Imagem 6 - Trecho para alterar a estrutura da página HTML

 

 

Como foi dito anteriormente, cada botão é responsável por um bit do sistema, logo, quando esse botão é colocado em estado ON ou OFF ele envia um código para o sistema, esse código vai após o endereço de IP. Em nosso sistema esse código pode ser uma das três opções abaixo:

 

192.168.1.2/0001: Representando que o primeiro botão foi clicado

192.168.1.2/0010: Representando que o segundo botão foi clicado

192.168.1.2/0100: Representando que o terceiro botão foi clicado

 

Na imagem abaixo, está contido o trecho do código que faz o tratamento do dado que é recebido após o endereço de IP (192.168.1.2/xxx...x). Como foi dito acima, nosso sistema trata apenas 3 opções:

 

Imagem 7 - Trecho que trata os dados que são enviados pelos botões

 

 

Quando um botão é clicado, é invertido também o estado de seu respectivo acionamento. Esse estado é tratado dentro da função "acionamentos()".

Dentro da função "acionamentos()", você pode alterar o que cada botão irá executar quando colocado em estado ON ou quando colocado em estado OFF. Na imagem abaixo pode ver o controle do acionamento para o primeiro botão (A1 - Acionamento 1) que foi utilizado neste tutorial:

 

Imagem 8 - Trecho para o controle de cada acionamento

 

 

3. Montagem

 

Faça as ligações de sua lâmpada com o módulo relé, conforme a imagem abaixo:

Imagem 9 - Montagem do módulo relé com toma e bocal de lâmpada

 

Faça a montagem na Protoboard, conforme a figura abaixo:

 

Figura 1 - Circuito da demonstração

 

 

Alimente o Arduino pelo cabo USB ou por uma Fonte DC, e também conecte o Cabo Ethernet ao seu roteador ou em seu próprio computador, configurando a Rede a seu gosto:

 

Imagem 10 - Montagem da placa de controle

 

 

4. Sketch

 

Você pode baixar o sketch que foi utilizado neste tutorial clicando neste link. No vídeo você pode ver a explicação do código.

 

Então é isso Garagistas! Esperamos que tenham gostado deste tutorial!

C ya! =D

 

Referências:

http://www.seeedstudio.com/wiki/Ethernet_Shield

http://arduino.cc/en/Main/ArduinoEthernetShield

http://labdegaragem.com/profiles/blogs/tutorial-controlar-pan-tilt-...

 

 

Exibições: 83416

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Lucas de Carvalho em 18 outubro 2016 às 19:02

Alguem sabe como Aplicar a Bibiblioteca Ir Remote no ethernet Shield 

Comentário de Luciano Victor em 22 junho 2016 às 19:24
Assim como o David garajan rohwedder eu preciso colocar mais botões na página, é possível? É só multiplicar o código?
Comentário de Tito Augusto em 21 junho 2016 às 11:29

Olá galera! Por favor! Quais modificações terei que fazer no código do botão deste browser, para que ele funcione da seguinte forma?: Eu preciso que o led fique aceso, somente enquanto o botão do mouse estiver pressionado, ou em um tablet, apenas quando o meu dedo estiver pressionado. E assim que eu soltar o dedo, que o led se apague. Pois quero montar esses botões, para que eles se comportem como os botões de um joystick. Desde já, agradeço.

Comentário de david garajan rohwedder em 13 abril 2016 às 22:44

Boa Noite gostaria de saber se é possivel utilizar 10 bits  no Byte Cod ex:( Byte Cod =1000000000)

10 botões ou outra função 

Comentário de Angelo Ventura em 7 março 2016 às 11:29
Utilizando Arduíno, é possível fazer transmissão dos dados salvos no cartão SD utilizando a porta Ethernet???
Comentário de Rogerio A. Filho em 26 janeiro 2016 às 1:46

Fiz um video com Arduino com AJAX, dar uma olhada :D
https://www.youtube.com/playlist?list=PLbUAcqHuByzfm9od5kHKArjKIAtf...

Comentário de Leonardo Amaral em 19 junho 2015 às 17:20

O time que desenvolvel esse tutorial, será que poderia mostrar esse mesmo experimento mas com a aplicação de um sensor de temperatura e umidade DTH11 por favor? Ou explicar como aplicamos os códigos referentes ao sensor? 

Comentário de Anderson Ribeiro em 17 maio 2015 às 23:21

ninguém?

Comentário de Anderson Ribeiro em 16 maio 2015 às 10:02

Bom dia, estou montando um código parecido mas quero armazenar o site no cartão SD, como faço para o arquivo html chamar e mostrar a temperatura como neste exemplo montado pelo LdG.

Outra questão, se eu acender um lâmpada e sair do site, quando eu voltar no site o botão está mostrando o estado de ligado ou volta para o estado padrão q é desligado? Caso volte, como faço para que ele armazene o estado para que eu saiba c está ligado ou desligado.

Agradeço a quem puder ajudar. 

Comentário de Jorge Moises em 20 abril 2015 às 1:13
Ola
estava usando esse exemplo, mas apos eu usar o sketch com outro codigo (Bluetooth)
outro dia voltei a usar o meu shield w5100 e nao aparece mais nada como estava funcionando antes.
ja conferi o ip, mascara e se o ip esta na rede
e mesmo assim nao monstra nada no navegador
o codigo esta carregando normal
alguma ideia disso?
Grato

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço