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 Ethernet Shield V1.0 ou 1x Arduino Ethernet Shield R3
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-...
Comentar
Tenho um LM35 como faço para substituir no circuito pelo Thermistor NTC 10kΩ ?
Luiz Carlos da Silva Garcia,
Boa tarde.
Já consegui solucionar o problema. Instalei a biblioteca do termistor. Esse erro deu na compilação do programa.
Obrigado.
Ola, boa tarde,
para efetuar a comunicação do shield com o pc,
basta usar um cabo ethernet ligado direto do
pc ao shield?
grato e no aguardo
Bom dia.
Estou tentando montar, sou principiante. Deu erro na biblioteca do Thermistor, veja o erro abaixo.
TUTOEthernetShield:11: error: 'Thermistor' does not name a type
TUTOEthernetShield.ino: In function 'void loop()':
TUTOEthernetShield:57: error: 'temp' was not declared in this scope
Olá, gostaria de sabem onde está aquela imagem do labdegaragem no código do arduino.
Olá, gostaria de sabem onde está aquela imagem do labdegaragem no código do arduino.
Olá, boa noite.
Utilizei o código do projeto removendo apenas o que fazia referência a temperatura e a lâmpada. Assim, não consigo acessar o IP definido no código. Outra coisa, qual endereço MAC devo configurar no código? Alguém pode me ajudar?
Obrigado!
Olá Kleubson! Se você manter dessa forma, ele irá sempre para o IP: 192.168.1.2 de 5 em 5 segundos.
Abraços.
Olá
Tenho uma dúvida no caso do refresh dessa pagina quando estiver acessando de fora, ou seja na rede de fora como ficaria neste trecho de código (client.print(" <meta http-equiv=\"refresh\" content=\"5; url=http://192.168.1.2/\"> )
Como faço para que a pagina seja atualizada tanto na rede interna como externa ? Fica dessa forma mesmo ?
Obrigado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)