sábado, 29 de setembro de 2012

Review Ethernet Shield com Wiznet W5100 / TF Slot

O Ethernet Shield utiliza o chip Wiznet W5100, que é confiável e tem como grande concorrente o Microchip ENC28J60. O bom do Ethernet Shield com Wiznet é que possui uma biblioteca bem difuncida no Arduino, alem disso ele funciona com todos microcontroladores.
Eu recomendo comprar no dealextreme, porque o preço está em promoção, esse shield geralmente é caro pois tem grande demanda, e o DX está com uma promoção muito boa para componentes eletrônicos e Arduino, mesmo que demore um pouco mais para receber, vale a pena fazer o pedido.

Visão Geral:


A placa é muito bem feita, possui próprio regulador de tensão, e os pinos do Arduino continuam acessíveis:

Ele funciona diretamente com a biblioteca oficial do Arduino e possui um slot para cartão micro-SD, que pode ser usado para armazenar arquivos, como uma pagina na web, ou até mesmo para fazer logs.
É compatível com o Arduino Duemilanove (168 ou 328), Uno,assim como Mega (1280/2560) e pode ser acessadausando a biblioteca SD.O W5100 Wiznet oferece suporte a TCP e UDP,e suporta até quatro conexões de soquete simultânea.

O que as luzes significam:


PWR: indica que a placa e shield são alimentados
LINK: indica a presença de um link de rede e pisca quando o escudo transmite ou recebe dados
FULLD: indica que a conexão de rede é full duplex
100M: indica a presença de uma ligação de rede 100 Mb / s (em vez de 10 Mb / s)
RX: pisca quando o shield recebe dados
TX: pisca quando o shield envia dados
COLL: pisca quando colisões de rede são detectados


O shield não é fornecido com o módulo PoE embutido, que é um componente separado que deve ser adicionada.
Arduino se comunica tanto com o W5100 e cartão SD utilizando o canal SPI (através do conector ICSP). Isto é em pinos digitais 11, 12, e 13 no Duemilanove e os pinos 50, 51, e 52 no Mega. Em ambas as placas, pinos 10 é utilizado para selecionar o W5100 e o pino 4 para o cartão SD. Estes pinos não pode ser usado como i/o. No Mega, o hardware SS pino, 53, não é usado para selecionar o W5100 ou o cartão SD, mas deve ser mantido como uma saída ou a interface SPI não irá funcionar.

Observe que, como o W5100 e SD usam barramento SPI, apenas um pode estar ativo de cada vez. Se você estiver usando ambos os periféricos em seu programa, deve se tomar cuidado de ligar e desligar os periféricos. Se você não está usando um dos periféricos em seu programa, no entanto, você precisa explicitamente desliga-lo. Para fazer isso com o cartão SD, definir pino 4 como uma saída e escrever como saída alta para ele. Para o W5100, definir pino digital 10 como uma saída alta.


Código de exemplo:


Esse código é bem simples, ele vai criar um servidor web sobre o IP do Ethernet Sheild, na porta 80. Nesse client você pode colocar todos tipos de informações, nesse casso ele esta mostrando uma frase, o codigo esta muito bem comentado e fácil de entender, so compilar e gravar.

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

byte mac[]= {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Aqui vc coloca seu MAC
byte ip[] =(192,168,0,120); // Aqui vc coloca um IP, varia de acordo com sua rede

EthernetServer server(80); // iniciando servidor na porta 80

void setup() 
  {
  Serial.begin(9600); // Abre comunicacao serial
  Ethernet.begin(mac, ip); // define seu mac e IP
  server.begin(); // inicia servidor
  Serial.print("server is at "); // imprime endereco IP na serial
  Serial.println(Ethernet.localIP());
}

void loop() 
{
  EthernetClient client = server.available(); // procura clients conectados
  if (client) {
    Serial.println("new client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (== '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println ("<center>");
           client.println ("<H1>DEALEXTREME ETHERNET</H1>");
          client.println ("</center>");
          client.println("</html>");
          break;
        }
        if (== '\n') {
          currentLineIsBlank = true;
        } 
        else if (!= '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
}

Vale lembrar que esses e outros exemplos podem ser encontrados na própria pagina do Arduino, e em meu blog.
Isso é o que vai aparecer quando você abrir o http:// SEU IP:80 


Essas são imagens do circuito funcionando:





Esse modulo é muito bom, vale a pena ter, pois eleva o nível dos seus projetos, é relativamente barato, e pode ser usado com todos microcontroladores. Fica na sua imaginação de como vai usar.
Lembrando que ele é 2 em 1 pois tem o cartão SD, que serve para varias outras aplicações. Vou deixar agora umas imagens com zoom, para mostrar como a qualidade das placas é boa:

Mostrando o chip wiznet, que pode esquentar um pouco, é normal:


Mostrando o conector RJ45, o botão de reset :


Slot de cartão SD, muito útil para paginas web grandes:



Os pinos são bem longos, assim ele não encosta no seu Arduino, prevenindo contra curto circuito:


É isso ai, até a próxima!!





Nenhum comentário:

Postar um comentário