segunda-feira, 17 de dezembro de 2012

Review ENC28J60 Ethernet Shield V1.1

Introdução:

Nessa publicação irei mostrar como ligar o seu Arduino em Rede, mas antes vou abordar uma breve e simples introdução de como é uma Rede.

Uma rede pode ser divida em 5 camadas básicas (modelo OSI/ISO são 7 camadas) como mostrada na figura abaixo:


A camada de aplicação suporta todas as aplicações da rede, como por exemplo, os protocolos FTP, SMTP, HTTP e etc. O conteúdo dessa camada é desenvolvido pelo projetista do software.
A camada de transporte pela transferência dos dados hospedeio-hospedeiro, normalmente usa os protocolos TCP ou UDP. TCP garante que todos os dados cheguem corretamente, já o UDP não da essa garantia. Essa camada normalmente já esta implementada em alguma biblioteca.
A camada de rede é a responsável pelo roteamento do dos datagramas da origem ao destino. O protocolo utilizado é o protocolo IP
A camada de enlace é a responsável pela transferência de dados entre elementos vizinhos da rede. Utiliza-se o protocolo Ethernet.
A camada física é simplesmente o hardware, no nosso caso o Ethernet Shield.



Trabalhar em rede não é uma tarefa muito fácil como muitos pensam, e essa Shield facilita muito o trabalho para uma conexão de um Arduino na rede, pois não é necessário o computador para fazer o papel de servidor. Me lembro que a primeira vez que fui conectar meu Arduino na rede para acionar um relé via browser, tive que escrever um programa complicadíssimo em C/Linux.



Nosso projeto consistira em fazer uma leitura da temperatura ambiente, essa leitura será processada e enviada para a rede (através da Shield) onde por um browser executado em um computador ou tablet ligados à rede poderá ser visualizada.



O segredo da Shield que estamos trabalhando é o Circuito Integrado ENC28J60 da Microchip que é o controlador Ethernet que nos permitirá fazer o acesso nossa rede. A figura abaixo esclarece um pouco seus níveis de abstração.


O propósito desse artigo não é abordar o circuito integrado e sim sua funcionalidade, então para mais informações sobre o controlador Ethernet ENC28J60 acesse seu DataSheet.

Primeiramente iremos fazer as conexões do sensor de temperatura LM35 nos terminais da Shield, que por consequência estarão ligados aos do Arduino. Abaixo figura que representa as ligações no Arduino, mas lembre-se essas mesmas ligações devem ser feitas na SHIELD:


Como o LM35 é um sensor analógico, ele deve ser ligado em uma das 6 portas analógicas, seu VCC ligado em 5V e seu terra ligado no GND.

Dica: Não inverta o VCC com o GND, isso irá esquentar demais o sensor podendo causar a inutilização do equipamento.

Pronto primeira parte do projeto está OK, o sensor ja esta ligado na Shield, agora vem a parte que nos interessa. Como fazer essa captura e coloca-la na rede para podermos acessar via browser ou qualquer outro cliente HTTP?



Apos ligar o sensor, você deverá instalar a biblioteca que controla o ENC28J60 pois não é a mesma que vem como padrão no Arduino, você deverá fazer o download desse biblioteca, após feito o download a biblioteca devera ser descompactada na pasta libraries. OBS. É extremamente necessário o download dessa biblioteca ou o projeto não irá funcionar.

Após a conclusão da instalação da biblioteca, vamos ao que realmente interessa nesse momento, que é o código necessário para podermos executar nosso Ethernet Shield na rede.


#include "etherShield.h"
#include "ETHER_28J60.h"

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};       
static uint8_t ip[4] = {192, 168, 0,15};
static uint16_t port = 80; 

int analog;
float temperatura;

void setup()
{
  e.setup(mac, ip, port);
}

void loop()
{
  if (e.serviceRequest())
  {
    e.print("<html><head><title>WebServer Simples</title></head><body>");
    e.print("<H1>Temperatura</H1><br/>");
    e.print("Temperatura em Celsius: ");
    analog = analogRead(0);
    temperatura = (analog * 0.00488); 
    temperatura = temperatura * 100; 
    e.print(temperatura);
    e.respond();
  }
  delay(100);
}

Nenhum comentário:

Postar um comentário