Arduino LED Server
Olá pessoal,
Hoje vou passar para vocês um exemplo bem simples de um código Arduino, que pode ser utilizado em diversas aplicações IoT. Vamos lá!!
Projeto: Arduino LED Server.
Funcionamento:
O Arduino irá funcionar como um servidor, que irá receber comandos pela internet. E com isso irá ativar seus pinos, no código exemplo é utilizado 1 LED para identificar os comandos.
Com esse código estou utilizando:
-Arduino UNO
-Shield Ethernet
-1 LED
-1 Resistor
Lembrando que pode ser adaptador para shield Wifi, ou Yun. Apenas alterando as configurações de inicialização com a internet.
Vamos ao Código comentado:
--------------------------------------------------------------------------------------------------------------------------
#include <SPI.h>
#include <Ethernet.h>
// Coloque o MAC de sua placa Ethernet, e as configurações de IP
byte mac[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
// O IP depende das suas configurações de internet.
// o IP (172.22.59.193) é onde o Arduino será alocado.
IPAddress ip(172,22,59,193);
IPAddress gateway(172,22,63,254);
IPAddress subnet(255, 255, 240, 0);
// Inicializa o servidor
EthernetServer server(8081);
String readString;
// Declarando o pino 8 como o Led.
int led = 8;
void setup()
{
pinMode(led, OUTPUT); //pin selected to control
Serial.begin(9600);
//Inicializar a conexão com internet.
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.print("Server está em: ");
Serial.println(Ethernet.localIP());
Serial.println("Servidor LED V 1.0 :D");
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
Serial.println("new client");
while (client.connected())
{
if (client.available())
{
char c = client.read();
// aqui tem-se uma string que ficará lendo as requisições feitas no IP do servidor.
if (readString.length() < 100)
{
readString += c;
Serial.write(c);
if (c == '\n') {
Serial.println(readString); //mostra no monitor para debuggar.
//--------------------------------------------------------------------------------------------------------
// necessário para mostrar o servidor.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
//--------------------------------------------------------------------------------------------------------
//-------------------------------------------------
// Aqui o que será mostrado no site.
// Cria 2 botões para ligar e desligar.
client.println("<TITLE>Automação Residencial</TITLE>");
client.println("<center>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>Automação Residencial</H1>");
client.println("<hr />");
client.println("<center>");
client.println("<a href=\"/?cmd=1\"\">Acende</a>");
client.println("<br />");
client.println("<br />");
client.println("<a href=\"/?cmd=2\"\">Apaga</a><br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//para o client
client.stop();
//-------------------------------------------------
// Aqui é onde o código deve ser implementado:
if(readString.indexOf("?cmd=1") >0)//checa se está ligado
{
digitalWrite(8, HIGH); // seta pino 8 para HIGH
Serial.println("Led On");
}
else{
if(readString.indexOf("?cmd=2") >0)//checha se está desligado
{
digitalWrite(8, LOW); // seta pino 8 para LOW
Serial.println("Led Off");
}
}
//limpa a string para a próxima leitura
readString="";
//dá tempo para o browser receber uma nova informação
delay(1);
// fecha conexão
client.stop();
Serial.println("client disonnected");
}
}
}
}
}
}
--------------------------------------------------------------------------------------------------------------------------
OBS: Utilizando o código desta forma, você poderá apenas acessá-lo na rede onde ele está, e não de qualquer local do mundo visto que o endereço de IP só pode ser encontrado se estiver sendo acessado na mesma rede.
Para que você consiga acessar o Arduino de qualquer parte do mundo, você terá que alocá-lo em um servidor nuvem, ou redirecionando o IP com um roteador.
Outra forma de utilizar este código, é criando um APP Android para enviar essas requisições através da WEB, podendo assim fazer uma automação residencial via Mobile de baixo custo. Irei criar outro post mais a frente explicando como pode ser feito.
Deixo aqui um servidor nuvem que pode ser utilizado, e que uso até hoje sem problemas.
www.Yaler.net
dúvidas podem ser deixadas em forma de comentários.
forte abraço ! (:
Comentários
Postar um comentário