Nesse artigo vamos abordar o Ethernet Shield W5100 e suas possibilidades de integração com Arduino. O Ethernet Shield W5100 é uma forma rápida e prática de tornar sua placa Arduino on-line. É baseada no chip WIZnet ethernet W5100, que fornece acesso à rede nos protocolos TCP ou UDP. Duas bibliotecas nativas são usadas para poder usar o módulo facilmente: Ethernet Library e SD Library. Nesse exemplo, configuramos o Shield como WebServer para armazenar uma página online com o estado lido de um sensor TCRT5000.
O Ethernet Shield W5100 é compatível tanto com o Arduino Uno e Arduino Mega e possui um slot para cartão micro-SD, o que facilita a criação de dataloggers.
Usar o Ethernet Shield é uma forma simples de disponibilizar online dados referentes a sensores ou sistemas que você controle usando um Arduino. A biblioteca Ethernet da IDE oferece todos os recursos necessários para que dados lidos com o Arduino possam ser acessados online.
Do ponto de vista de hardware, trata-se de uma conexão simples. Basta encaixar o shield no seu Arduino UNO ou Mega e ter em mãos um cabo ethernet com conetores RJ45 para ligar no seu modem/roteador. Se seu Arduino estiver ligado em algum sistema em específico, é necessário refazer as ligações diretamente no Shield.
Nesse artigo, vamos fazer como exemplo a leitura de estado de um sensor TCRT5000 e apresentar a informação em uma página na internet. Ou seja, vamos atribuir um IP ao nosso Ethernet Shield e configurá-lo adequadamente, e depois vamos enviar as informações lidas pelo sensor para uma página hospedada no próprio Shield, disponibilizada na rede por meio da conexão local.
Algumas características do W5100 são importantes
Uma série de LEDs indicativos também ajuda a saber o que está acontecendo com o Shield durante sua operação:
O coração do Shield é o CI W5100, fabricado pela WIZNet. Algumas fontes recomendam a utilização de uma fonte de alimentação externa para alimentar o Shield devido ao consumo de corrente elevado desse CI, mas muitos exemplos utilizam o cabo USB para alimentação também. O datasheet indica um consumo de até 183mA, o que está dentro das capacidades dos cabos USB 2.0(500mA) e 3.0(900mA). Assim, em nosso exemplo utilizaremos o cabo USB como fonte de alimentação.
Mas atente-se que caso você esteja alimentando outras cargas como sensores e relés, pode ser que você precise de uma fonte externa. Em geral, é recomendado o uso de uma fonte de externa para garantir que todos os componentes sejam alimentados de acordo com suas características.
A figura abaixo mostra o Ethernet Shield conectado a um Arduino.
O W51000 possui um buffer interno de 16K, e a velocidade de conexão é de 10 a 100Mb. Mais do que suficiente para fazer leituras de sensores e atuadores. O slot para cartão SD é uma forma prática para montar datologgers com acesso online aos dados. Aliás, se você ainda não sabe o que é um datalogger ou está pensando em fazer um, confira o nosso post sobre o assunto.
Materiais necessários para o projeto Leitura de TCRT5000 Via Ethernet
A montagem do nosso esquema será da seguinte forma:
Para informações adicionais sobre o funcionameto do TCRT5000, leia o artigo principal sobre esse componente. A montagem acima não tem segredo. Repare que no desenho as ligações foram feitas já no Ethernet Shield, e o mesmo deve estar conectado ao seu Arduino conforme mostramos na segunda figura da seção de introdução.
Quando feita a montagem, utilize um cabo de rede e conecte o Ethernet Shield ao roteador ou hub de sua rede local e alimente o circuito. Agora você está pronto para programar o Arduino e controlar o Shield para disponibilizar as leituras do sensor online.
A primeira coisa a ser feita é determinar o endereço IP e MAC a serem atribuídos ao seu Ethernet Shield. O W5100 não possui um endereço MAC de fábrica como acontece com seu notebook ou PC. Alguns modelos vem com um endereço MAC indicado em um stick na parte de trás da placa. Em geral, você deve determinar um endereço para seu Ethernet Shield. Mais informações sobre essa questão podem ser encontradas aqui. No nosso projeto, usamos o endereço padrão do exemplo “WebServer” da biblioteca Ethernet.
Acesse na sua IDE: File -> Examples -> Ethernet -> WebServer. O código que você verá é o código base usado por quase todas aplicações e projetos disponíveis na internet para disponibilizar dados de sensores online.
Para determinar o endereço IP do shield, encontre o IP de seu PC(com ipconfig /all no windows ou ifconfig -a no terminal do linux) e altere o último número. No nosso projeto, o endereço IP foi obtido com o ifconfig -a, que exibiu no terminal linux a seguinte mensagem:
O IP está listado ao lado de inet, e no caso é: 192.168.25.120. O endereço MAC está listado ao lado de HWaddr: 5c:c9:d3:02:62:3e (mas esse não usamos para configurar o Ethernet Shield). Alteramos o IP para 192.168.25.100 e setamos dessa forma no código abaixo.
#include <Ethernet.h> // Complete com as informacoes da sua rede byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 25, 100); int leituraSensor = 0; int saidaSensor = 7; //Inicializa o webserver com a porta 80 - porta padrão do HTTP EthernetServer server(80); void setup() { Serial.begin(9600); //Pino ler o sinal no coletor do fototransistor do TCRT5000 pinMode(saidaSensor, INPUT); // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); } void loop() { leituraSensor = digitalRead(saidaSensor); //Fica escutando requisições de novos clientes EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); // Apresenta na tela a leitura do sensor client.print("<font color=#0000FF ><b><u>"); client.print("Leitura do sensor online"); client.print("</u></b></font>"); client.println("<br />"); client.println("<br />"); if (leituraSensor == 0) client.println("Nenhum Objeto identificado!"); else client.println("Nenhum bjeto identificado!"); client.println("</html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); Serial.println("client disconnected"); } }
O código acima implementa um WebServer no EthernetShield. Os trechos em inglês são referentes ao exemplo base da biblioteca Ethernet, nativa da IDE Arduino. Em geral, com esse código base e fazendo pequenas customizações, você pode configurar páginas Web e armazená-las no Ethernet Shield(WebServer) para disponibilizar informações online.
Conhecimentos de HTML e do protocolo HTTP serão muito úteis para você montar páginas mais sofisticadas. No código em questão apenas mostramos as mensagens com um pequeno título colorido(para usar outras cores, troque o código HTML correspondente na tag font color=).
Ao acessar no browser de algum computador conectado à rede de seu roteador o endereço IP do Ethernet Shield, a seguinte mensagem aparecerá:
Com esse projeto você consegue disponibilizar online os dados referentes a qualquer sensor, basta fazer pequenas modificações e mudar o layout para utilizar o sensor desejado. Aqui no blog há exemplos com sensor ultrassônico, sensor de presença piroelétrico, LDR, sensor de umidade e muitos outros. Confira e implemente suas próprias configurações.
Qualquer dúvida, deixe nos comentários!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!