Introdução à Robótica Educacional com Software e Hardware Livres
Tendo em vista nossa aquisição de um Shield Ethernet da Empresa Empretecnet ENC28J60, imagem abaixo:
Estamos agora partindo para testes e em seguida para a idealização de nosso primeiro projeto de automação residencial via internet.
Com base neste código, acabamos de colocar no ar, para testes de conexão, nosso servidor (Arduino+Shield+LEDs), nesse momento se encontra ativo e com 2 LEDs ligados a ele nas portas 6 e 7.
Solicitamos aos visitantes, que tiverem um tempinho livre, que usem o link abaixo, cliquem nos botões e se possível nos retornem, via comentários, se deu tudo certo, críticas ou ainda sugestões para que possamos caminhar com o desenvolvimento de mais este projeto.
Link para testar o Servidor: aqui
Observação: claro que vocês não poderão ver os LEDs apagando e acendendo, pois os mesmos estão aqui, mas com a ajuda de vocês saberemos se os botões estão funcionando bem e nós ainda podermos saber daqui quantos estão acessando ao mesmo tempo nosso Servidor de testes.
Se alguém se interessar pelo código fonte usado no Arduino, segue abaixo:
/* Programa para acender e apagar LEDs ou Lampadas, com o ETHERNET SHIELD ENC28J60
*/
// Estamos incluindo aqui as bibliotecas que vao nos ajudar no controle do Shield
#include "etherShield.h"
#include "ETHER_28J60.h"
int luz1 = 6; // LED ou Lampada ligados no pino 6
int luz2 = 7; // LED ou Lampada ligados no pino 7
static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // Aqui fica o MAC do SHIELD, nao precisamos mexer
static uint8_t ip[4] = {10, 0, 0, 181}; // Esse e o endereco IP do nosso SHIELD
static uint16_t port = 80; // Porta padrao de acesso a WEB, em nosso caso a 80
// Esse "vrlivre" sera o nome que nosso SHIELD tera daqui para baixo
ETHER_28J60 vrlivre;
void setup(){
vrlivre.setup(mac, ip, port); // Setando o MAC, IP e PORTA
pinMode(luz1, OUTPUT); // Informando que o pino e de saida
pinMode(luz2, OUTPUT); // Informando que o pino e de saida
}
void loop(){
char* params;
if (params = vrlivre.serviceRequest()){
//Agora o param recebe o que o serviceRequest retornar das requisições do navegador
vrlivre.print("<center><br><h1><a href='/?led1=off&led2=off'>Acendendo e apagando a LUZ via Web</a></h1>");
if (strcmp(params, "?led1=on&led2=off") == 0)
{
digitalWrite(luz1, HIGH);
digitalWrite(luz2, LOW);
vrlivre.print("<a href='?led1=off&led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>Luz1 Acesa</button></a><a href='?led1=on&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>Luz2 Apagada</button></a>");
}
else if (strcmp(params, "?led1=off&led2=on") == 0)
{
digitalWrite(luz1, LOW);
digitalWrite(luz2, HIGH);
vrlivre.print("<a href='?led1=on&led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>Luz1 Apagada</button></a><a href='?led1=off&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>Luz2 Acesa</button></a>");
}
else if (strcmp(params, "?led1=off&led2=off") == 0)
{
digitalWrite(luz1, LOW);
digitalWrite(luz2, LOW);
vrlivre.print("<a href='?led1=on&led2=off'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>Luz1 Apagada</button></a><a href='?led1=off&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>Luz2 Apagada</button></a>");
}
else if (strcmp(params, "?led1=on&led2=on") == 0)
{
digitalWrite(luz1, HIGH);
digitalWrite(luz2, HIGH);
vrlivre.print("<a href='?led1=off&led2=on'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>Luz1 Acesa</button></a><a href='?led1=on&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>Luz2 Acesa</button></a>");
}
vrlivre.respond();
}
}
Deixem suas dúvidas ou sugestões nos comentários.
Assinar:
Postar comentários (Atom)
Pessoal segue o http://LinkDuino.com, com ele você pode controlar vários dispositivos e sensores remotamente em tempo real. O LinkDuino é um webservice free para Arduino.
ResponderExcluirPreciso de uma ajuda com essa pergunta. Obrigado
ResponderExcluirQue endereços devem ser configurados por software para conectar um módulo ENC28J60 em uma rede IP.
Basta seguir o exemplo da postagem, trocando os endereços do post pelos da sua rede, por exemplo.....
ResponderExcluir