Arduíno

Servidor Web WiFi

Neste exemplo, você usará seu WiFi Shield e seu Arduino para criar um servidor Web simples. Usando a biblioteca WiFi , seu dispositivo poderá responder a uma solicitação HTTP com seu escudo WiFI . Depois de abrir um navegador e navegar para o endereço IP do seu escudo Wi-Fi , seu Arduino responderá com apenas HTML suficiente para que um navegador exiba os valores de entrada de todos os seis pinos analógicos.
Este exemplo é escrito para uma rede usando criptografia WPA. Para WEP ou WPA, altere a chamada Wifi.begin () de acordo.

Hardware necessário

  • Escudo Wi-Fi Arduino
  • Placa Arduino compatível com escudo
  • (opcional) Seis sensores analógicos conectados ao Analógico em pinos 0-5

O circuito

O escudo WiFi usa os pinos 10, 11, 12 e 13 para a conexão SPI ao módulo HDG104 . O pino digital 4 é usado para controlar o pino de seleção do escravo no cartão SD.
Você deve ter acesso a uma rede sem fio 802.11b / g que se conecta à Internet para este exemplo. Você precisará alterar as configurações de rede no esboço para corresponder às suas redes SSID específicas.
Para redes que usam criptografia pessoal WPA / WPA2 , você precisa do SSID e da senha. O escudo não se conectará a redes usando a criptografia WPA2Enterprise.
As senhas de rede WEP são seqüências de caracteres hexadecimais conhecidas como chaves. Uma rede WEP pode ter 4 chaves diferentes; cada chave recebe um valor “Índice de chaves”. Para redes criptografadas com WEP, você precisa do SSID, da chave e do número da chave.

imagem desenvolvida usando Fritzing . Para mais exemplos de circuitos, veja a página do projeto Fritzing
Na imagem acima, o Arduino seria empilhado abaixo do escudo WiFi .

Atenção

Este exemplo não requer um cartão SD. Se um cartão SD for inserido, mas não usado, é possível que o esboço seja interrompido, pois o pino 4 é usado como SS (ativo baixo) do SD e, quando não usado, ele é configurado como INPUT por padrão. Duas soluções possíveis:

  • remova o cartão SD;
  • adicione estas linhas de código no setup ()
pinMode OUTPUT 
digitalWrite ALTO ;

Código:

/ * 
  WiFi Web Server 
 Um servidor web simples que mostra o valor dos pinos de entrada analógica. 
 usando um escudo WiFi. 
 Este exemplo é escrito para uma rede usando criptografia WPA. Para 
 WEP ou WPA, altere a chamada Wifi.begin () de acordo. 
 Circuito: 
 * Escudo WiFi anexado 
 * Entradas analógicas anexadas aos pinos A0 a A5 (opcional) 
 criadas em 13 de julho de 2010 
 por dlf (Metodo2 srl) 
 modificado em 31 de maio de 2012 
 por Tom Igoe 
 * / 

#include <SPI.h> 
#include <WiFi.h > 
char ssid “sua rede”      // sua rede SSID (nome) 
char pass [“secretPassword”   // sua senha de rede 
int keyIndex                 // seu número de índice da chave da rede (necessário somente para WEP) 
int status = WL_IDLE_STATUS 
Servidor WiFiServer 80 
void setup 
// Inicializa serial e espera que a porta abra: 
Serial . começar 9600 
while Serial 
; // espera que a porta serial se conecte. Necessário apenas para Leonardo 

// verifique a presença do escudo: 
if ( WiFi. Status == WL_NO_SHIELD 
Serial . println “escudo WiFi não presente” 
// não continue: 
while true 

// tenta conectar-se à rede Wi-Fi: 
while ( status ! = WL_CONNECTED 
Serial . print “Tentando se conectar ao SSID:” )
Serial . println ( ssid 
// Conecte-se à rede WPA / WPA2. Altere esta linha se estiver usando rede aberta ou WEP:    
    status = WiFi. começar ( ssid , passar 
// aguarde 10 segundos para conexão: 
delay 10000 
}
  servidor. begin 
// você está conectado agora, então imprima o status:
  printWifiStatus 

void loop {
// ouve os clientes de entrada
  WiFiClient client = server. disponível 
if ( cliente 
Serial . println “novo cliente” 
// uma solicitação http termina com uma linha em branco 
booleana currentLineIsBlank true 
while ( client. connected 
if ( cliente. disponível 
char c = cliente.ler 
Serial . escrever ( c 
// se você chegou ao final da linha (recebeu um 
caractere // de nova linha ) e a linha está em branco, a solicitação http foi encerrada, 
// para que você possa enviar uma resposta 
se ( c == ‘ \ n ‘ && currentLineIsBlank 
// envia um
          cliente de cabeçalho de resposta HTTP padrão . println “HTTP / 1.1 200 OK” 
          cliente. println “Tipo de Conteúdo: text / html” ;
          cliente. println “Conexão: fechar”  // a conexão será fechada após a conclusão do
          cliente de resposta . println “Atualizar: 5”  // atualiza a página automaticamente a cada 5 segundos do
          cliente. println 
          cliente. println “<! DOCTYPE HTML>” 
          cliente. println “<html>” 
// saída do valor de cada pino de entrada analógica 
para int analogChannel = analogChannel analogChannel ++ 
int sensorReading analogRead ( analogChannel 
            cliente. impressão “entrada analógica” 
            cliente. impressão ( analogChannel 
            cliente. print “é” 
            cliente. impressão ( sensorReading 
            cliente. println (“<br />” 
}
          cliente. println “</ html>” 
pausa 

if ( c == ‘ \ n ‘ 
// você está iniciando uma nova linha
          currentLineIsBlank true 

else if ( c ! = ‘ \ r ‘ 
// você obteve um caracter na linha atual
          currentLineIsBlank false 


}
// fornece ao navegador da web tempo para receber o 
atraso de dados 
// fecha a conexão:
    client. stop 
Serial . println “cliente desassociado” 


void printWifiStatus 
// imprime o SSID da rede à qual você está conectado: 
Serial . print “SSID:” 
Serial . println ( WiFi. SSID ;
// imprima o endereço IP do seu escudo WiFi:
  IPAddress ip = WiFi. localIP 
Serial . print “endereço IP:” 
Serial . println ( ip 
// imprime a intensidade do sinal recebido: 
long rssi = WiFi. RSSI 
Serial . print “intensidade do sinal (RSSI):” 
Serial . impressão ( rssi 
Serial .println “dBm” 
}

Veja também:

 
[Fonte]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *