Microcontroladores , Open Hardware , Open Software e Tecnologia em Geral
Blog do Je » Page 'Teste do Shield Ethernet Seeeduino'

Teste do Shield Ethernet Seeeduino

Este post foi atualizado em 13/05/2011 - Veja o final do post para as atualizações.

Há algum tempo estava interessado em adquirir um shield Ethernet. Pesquisei as opções do shield oficial e dos clones que utilizassem o chip W5100 da WIZNET. Optei por comprar o clone fabricado pela SeeedStudio, em virtude da boa qualidade dos produtos que eles fazem, a boa experiencia que tive em comprar outros produtos deles. O preço e frete barato para o Brasil tambem contribuiram para a escolha. Esta placa é um clone da ethernet shield oficial do Arduino mas com algumas modificações, principalmente para baratear o custo:

  • Ausência do conector para memoria SD
  • Ausência dos soquetes e conectores para replicação dos sinais do Arduino. Para ter acesso a estes sinais é necessário soldar os soquetes e pinos nos pontos mais convenientes .
  • O design da placa foi refeito , colocando todos os leds indicativos de atividade, alinhado em apenas um lado da placa

A placa é bem construída e com acabamento branco. Todos os exemplos presentes no ambiente do Arduino 0018 para o shield Ethernet, funcionaram direto sem problemas. Este shield por usar o chip Wiznet5100 e estar ligado ao Arduino da mesma forma que no shield oficial, usa os exemplos do Ethernet Shield sem modificação.

Para testar o shield , construi um sketch que cria um web-server e montei um ambiente de teste com um led e um sensor de temperatura.

O programa em execução no Arduino cria um web-server, disponibiliza o formulario abaixo, e através de um browser ( firefox, internet explorer, etc), possibilita ligar e desligar o led e tambem visualizar a temperatura lida de um sensor.

Para isso, fiz uma adaptação no programa do exemplo web-server, existente na ide arduino-0018 e usei um outro exemplo do blog “http://www.scienceprog.com/” , resultando em um pequeno formulário. O programa guarda o estado do led e o mantem aceso até ser clicada a opção de desliga-lo.

O programa tem trechos de código que merecem explicação.

A definição dos endereços ip e mac para a interface e a porta onde escutará as requisições estão definidas abaixo:


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 169, 1, 201 };
Server server(80);

Lembre-se de alterar o endereço ip para a faixa utilizada na sua rede. No trecho abaixo, é feita a inicialização da interface e inicializada a execução do web-server


Serial.begin(9600) ;
Ethernet.begin(mac, ip);
server.begin();

Note que todo o codigo HTML transmitido para o browser é escrito via client.println.


client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// começa a enviar o formulário
client.print("<html>") ;
client.print("<body>");


/* le sensor de temperatura , ele fornece uma resistencia
que é função da temperatura */
int analogValue = analogRead(0);
temperatura = converteTemp( analogValue) ;
client.println("<h2>TEMPERATURA AMBIENTE</h2><hr/>");
client.println(temperatura) ;
client.println("<br>") ;
client.println("<h2>CONTROLE DO LED</h2><hr/>");
client.println("<form method=get name=LED>") ;


client.println("LIGA <input ")  ;
/* verifica o status do led e ativa o radio button
correspondente */
if(LEDON) {
client.println("checked='checked'") ;
}
client.println("name='LED' value='ON' type='radio' >");
client.println("DESLIGA <input ")  ;
if(!LEDON) {
client.println("checked='checked'") ;
}
client.println("name='LED' value='OFF' type='radio' >");

Não tem JSP, ASP, PHP e outras abstrações e facilidades oferecidas por linguagens para web. Tudo é feito na unha.
O chip W5100 esquenta  e na primeira vez que liguei pensei que tinha feito algo errado, mas consultando na internet vi que é “normal” esquentar.

O programa pode ser modificado facilmente para controlar outros pinos e exibir outras informações desejadas.

Divirtam-se.

Atualização em 13/05/2011:

Após a versão 0019 da IDE Arduino, foi introduzida a classe String para manipulações de cadeias de caracteres. Com a introdução desta classe torna-se desnecessária a biblioteca WString. O código do WebServer foi atualizado para atender esta modificação e também para as novas dependências exigidas pela biblioteca Ethernet. O código do WebServer passa a ser hospedado no GitHub, é só clicar no link do download para ser redirecionado. Os testes desta atualização foram realizadas na versão 0022 da IDE Arduino.

Download:
Sketch do Web Server no GitHub: WebServerDoJe

Links:
Exemplo de WEbServer do site Arduino.cchttp://arduino.cc/en/Reference/Ethernet
Exemplo de Formulário no site ScienceProg http://www.scienceprog.com/getting-hands-on-arduino-ethernet-shield/

Posts Relacionados:
Ethernet Shield Oficial para o Arduino

Gostou deste post ? Divulgue !
delicious digg google
stumbleupon technorati Yahoo!

12 commentarios to “Teste do Shield Ethernet Seeeduino”

  1. [...] http://blogdoje.com.br/2010/04/11/teste-do-shield-ethernet-seeeduino/ [...]

  2. Je,
    preciso fazer algo no mesmo esquema,
    para fechar reles e verificar chaves de fim de curso
    rola de boa né?!

    vc consegue me mandar o programa do arduino?

    att
    Joao azevedo

  3. Joao ,
    O seu projeto é totalmente possível. Não tenho no momento nenhum programa pronto para realizar o que voce precisa. Sugiro que voce experimente modificar o exemplo que disponibilizei, até ele ficar do jeito que voce precisa.
    Qualquer duvida é só colocar aqui nos comentários.
    Boa sorte !!!

  4. to comprando o duemilenove e o shield no http://www.webtronico.com
    e logo logo o projeto começa a tomar forma,
    valeu

  5. Muito com o projeto Je,

    tentei rodar ele no ambiente arduino 0018 e nao consegui compilar, pois nao tem a biblioteca WString.h.

    onde posso encontra-lá

  6. Olá Je,

    encontrei a biblioteca WString no arduino 0019.
    mas agora esta dando o seguinte erro:

    No arquivo incluído de /home/carlos/Downloads/arduino-0019/libraries/Ethernet/Client.cpp:1:
    /home/carlos/Downloads/arduino-0019/libraries/Ethernet/w5100.h:14:17: erro: SPI.h: Arquivo ou diretório não encontrado

    eu estou usando o ubuntu 10.10.
    vc tem ideia de como resolver esse problema??

    agradeço antecipadamente

  7. Tentei compilar no windows com o arduino 0022 e tb nao funcionou.

    ????

  8. Carlos ,
    Obrigado pelo comentário. Este post está desatualizado , é necessário trocar a bibilioteca WString para tratamento de strings pela String (http://arduino.cc/en/Reference/StringObject). É necessário tambem , verificar e adaptar o código para a nova biblioteca. Eu vou altera-lo e colocar no ar o mais rápido possível.
    Abs
    Jeronimo

  9. Já estou me sentindo um ignorante,
    Quase dois dias tentando fazer a mesma coisa e não consigo :@

    “Só” preciso que ao apertar um botão ele inverta uma saída
    o mais ‘próximo’ que cheguei foi isso:

    client.print(”");

    Mais ainda não me parece estar certo

    Depois que isso estiver funcionando, vou precisar que o a saida fique fechada por 5seg e torne a abrir

    Alguma dica amigo?

  10. tá de brincadeira….
    não apareceu o código que eu escrevi
    rssss
    client.print(”[ INPUT TYPE=BUTTON OnClick=digitalWrite(ledPin10, HIGH) VALUE= Abrir/Fechar ]“);
    *troquei os “<” por “[”

  11. qual sensor de temperatura vc usou pra esse projeto.

  12. Jaelcio , o fabricante é chines , generico e so consegui obter a tabela resistencia x temperatura. Funciona bem e me custou 1 dolar cada sensor se eu não me engano.
    Abs

Deixe um comentario

XHTML - Voce pode usar:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Topo da página / Assinar para receber novos Posts (RSS)