Ethernet Shield W5100
Um modulo interessante e que faz o usuário entender e empregar o conceito de Internet of Things (IoT) é o Arduino Ethernet Shield 5100.
fonte: warehouse 3D
Com essa placa é possível que o usuário acesse comandos com o Arduino conectado na rede utilizando acesso remoto, troca de dados, verificação de dispositivos remotos, entre outros. O modulo é facilmente encontrado no mercado de eletrônicos e dispositivos, e com bom custo benefício, além do mais é compatível com o Arduino UNO, Mega e possui um leitor de cartão MicroSD.
O modulo baseia-se no chip WIZnet Ethernet W5100 que possibilita o acesso a rede IP no protocolo TCP, utilizando a biblioteca Ethernet Library e SD Library.
Ao observar na parte de cima do modulo, é possível ver alguns LEDs que indicam o estado de funcionamento.
O modulo baseia-se no chip WIZnet Ethernet W5100 que possibilita o acesso a rede IP no protocolo TCP, utilizando a biblioteca Ethernet Library e SD Library.
Utilizando o modulo
Primeiramente é necessário testar a placa utilizando um programa que configura o endereço de IP, utilizando os valores mais comuns nesse tipo de comunicação :
- Endereço de IP: 192.168.0.100
- Gateway: 192.168.0.1
- Máscara: 255.255.255.0
Faça o acoplamento do modulo sobre a placa Arduino UNO e conecte os cabos de alimentação e de rede.
fonte: próprio autor
fonte: próprio autor
Feito as conexões é hora de carregar um programa para configurar o endereço IP. Os valores apresentados são os mais comuns e foram apresentados acima no texto.
Carregue o programa na IDE do Arduino, abra o prompt de comado do seu computador e digite o seguinte comando seguido de <ENTER>:
ping 192.168.0.100
#include <SPI.h>
#include <Ethernet.h>
// A linha abaixo permite que voce defina o endereço
// fisico (MAC ADDRESS) da placa de rede
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
// Os valores abaixo definem o endereço IP, gateway e máscara.
// Configure de acordo com a sua rede.
IPAddress ip(192,168,0,100); //Define o endereço IP
IPAddress gateway(192,168,0,1); //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet); //Inicializa o Ethernet Shield
}
void loop() {}
Se tudo estiver de acordo uma janela como a apresentada abaixo deve ser apresentada indicando que o modulo está corretamente configurado para enviar e receber dados.
fonte: próprio autor
Testando um programa simples
Agora é hora de acionar um pino do Arduino por meio do browser do seu computador, monte um circuito simples como o demonstrado abaixo.
Utilize um LED de qualquer cor e um resistor no valor de 220 ohms.
Nesse circuito, vai ser acionado um LED, onde o comando vai ser por meio do seu navegador, algo bastante parecido com um projeto desenvolvido anteriormente com o NodeMCU (LINK).
Abra a IDE do Ardino, copie e cole o código abaixo para testar a comunicação da seua rede ethernet com a Shield.
Utilize um LED de qualquer cor e um resistor no valor de 220 ohms.
fonte: próprio autor
Nesse circuito, vai ser acionado um LED, onde o comando vai ser por meio do seu navegador, algo bastante parecido com um projeto desenvolvido anteriormente com o NodeMCU (LINK).
Abra a IDE do Ardino, copie e cole o código abaixo para testar a comunicação da seua rede ethernet com a Shield.
#include <SPI.h>
#include <Ethernet.h> // Biblioteca utilizada para comunicação com o Arduino
// A linha abaixo permite definir o endereço físico (MAC ADDRESS) da placa...
//de rede.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 104 }; // Define o endereço IP.
// Porta onde estará aberta para comunicação Internet e Arduino.
EthernetServer server(80);
String readString;
int Pin = 7; // Pino digital onde será ligado e desligado o LED.
void setup(){
pinMode(Pin, OUTPUT); // Define o Pino 9 como saída.
Ethernet.begin(mac, ip); // Chama o MAC e o endereço IP da placa Ethernet.
// Inicia o servidor que esta inserido junto a placa Ethernet.
server.begin();
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// A partir daqui começa os códigos html.
client.println("<HTML>");
client.println("<BODY>");
client.println("<H1>Acende LED</H1>");
client.println("<H1>Projeto basico Demonstrar Shield Ethernet</H1>");
client.println("<hr />");
client.println("<br />");
client.println("<a href=\"/Mecatronizando/LedOn\"\">Acender led</a>");
client.println("<a href=\"/Mecatronizando/LedOff\"\">Apagar led</a><br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
if(readString.indexOf("Mecatronizando/LedOn") > 0)
{
digitalWrite(Pin, HIGH); // Liga LED.
}
else {
if(readString.indexOf("Mecatronizando/LedOff") > 0)
{
digitalWrite(Pin, LOW); // Desliga LED.
}
}
readString="";
}
}
}
}
}
É importante observar que, o endereço da rede está com IP: 192.168.0.100, mas para evitar conflitos, deve ser alterado o IP da utilização da Shield, no meu caso por exemplo foi utilizado o endereço 192.168.0.104.
fonte: próprio autor
Enviando e recebendo dados pela rede Ethernet
Agora vamos elaborar um projeto onde dados vão trafegar por meio da rede Ethernet.
Para isso é necessário que você tenha disponível:
O circuito
Para que o controle seja feito, é necessário montar um circuito conforme abaixo e carregar o código na IDE do seu Arduino.
fonte: próprio autor
O código
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 106 }; // Define o endereço IP.
EthernetServer server(80);
String readString;
int Pin = 7;
const int LM35 = A0;
float tempc = 0;
void setup(){
pinMode(Pin, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
}
void loop(){
tempc = (float(((analogRead(LM35))* 5.0 *100) / 1024.0)/2);
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
// A partir daqui começa os códigos html.
client.println("<HTML>");
client.println("<BODY>");
client.println("<H1>Acende LED</H1>");
client.println("<H1>Projeto basico para demonstracao com Shield Ethernet</H1>");
client.println("<div id='wrapper'><img src='http://i.imgur.com/cam8R9X.jpg' width=200 height=100 /><br/>");
client.println("<hr />");
client.println("<br />");
client.println("</BODY>");
client.println("</HTML>");
client.println("<H1>Mecatronizando</H1><br/>");
client.println("<a href=\"/mecatronizando/LedOn\"\">Acender led</a>");
client.println("<br/><br/>");
client.println("<a href=\"/mecatronizando/LedOff\"\">Apagar led</a><br />");
client.println("<br/><br/>");
client.println("<b>Valor potenciometro porta analogica 5 : ");
client.println(analogRead(A5)/ 204.6);
client.println("<br/><br/>");
client.println("Valor temperatura (*Celsius): ");
client.println(tempc);
client.println("°<br/><br/>");
client.println("<div id='wrapper'><img src='http://i.imgur.com/ftgQPBX.png' width=100 height=100 /><br/>");
delay(1);
client.stop();
if(readString.indexOf("mecatronizando/LedOn") > 0)
{
digitalWrite(Pin, HIGH);
}
else {
if(readString.indexOf("mecatronizando/LedOff") > 0)
{
digitalWrite(Pin, LOW);
}
}
readString="";
}
}
}
}
}
No vídeo abaixo é possível ver o funcionamento do circuito de forma completa.
Gostou?
Curta a FanPage! Compartilhe!
Inscreva-se no canal!
Todos os componentes podem ser adquiridos por meio deste LINK!
Os arquivos do projetos podem ser baixados pelo LINK!
Continue com a gente e bons estudos!
Digamos que a necesssidade fosse de controlar 8 leds distintos. O que mudaria no codigo de forma a criar os 8 hiperlinks liga e os 8 desliga?
ResponderExcluirBasicamente nada, somente os endereçamentos dos pinos.
Excluir