Teste do Servidor Web com Arduino


Projeto Piloto
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.

0 comentários:

O conteúdo deste blog/site pode e deve ser divulgado, conforme lei a 9.610/98 meus direitos estão assegurados, portanto eu permito a copia e reprodução gratuita, seja total ou parcial, não acarretando qualquer onûs financeiro aos interessados, porém, vedo o uso para fins lucrativos, toda reprodução para o público deve citar a fonte extraída, no caso o Técnico Linux - O Espaço do Software Livre e seja citada junto com um link para a postagem original, onde a referência deve estar numa fonte de tamanho igual ou maior a do texto, obviamente que os links citados não estão sujeitos ao mesmo termo. O conteúdo textual original desta página está disponível sob a licença GNU FDL 1.2.

Todas as marcas citadas pertencem aos seus respectivos proprietários. Os direitos autorais de todas as ilustrações pertencem aos respectivos autores, e elas são reproduzidas na intenção de atender ao disposto no art. 46 da Lei 9.610 - se ainda assim alguma delas infringe direito seu, entre em contato para que possamos removê-la imediatamente ou ainda lhe dar os devidos créditos.

Copyright © 2016 O Espaço do Software Livre