Salve a tutti, ho da poco comprato un Arduino UNO e questo shield wi-fi:
Per provare il tutto ho deciso di caricare sulla scheda lo sketch di esempio di un Server che è disponibile nella pagina che vi ho linkato.
Ho modificato i parametri secondo la mia rete ma il tutto non va. Lo sketch viene compilato e caricato correttamente ma il browser internet non mostra la pagina che dovrebbe mostrare all'indirizzo IP della scheda.
Ho letto che arduino IDE 1.0 ha qualche problema con questa libreria e quindi ho scaricato la versione 0023, che compila lo sketch senza problemi.
Un altra cosa strana, non so se è normale ma se in indirizzo Gateway metto un indirizzo sbagliato, sulla scheda si accende il LED verde, ovvero quel led che dovrebbe accendersi premendo il pulsante sulla pagina web invita da arduino. Sono giorni che ci lavoro ma non c'è modo di farla andare :~
Qui di seguito metto lo sketch che ho caricato sulla scheda, eccetto la password che è stata cambiata.
/******************************************************
SoftwareDemo1WebServerWiFi
Esempio codice Web Server tramite Wi-Fi
Autori: Ingg. Tommaso Giusto e Ing. Alessandro Giusto
Email: tommro@libero.it
******************************************************/
// Inclusione Libreria per Server Web WiFi
#include <WiServer.h>
// Definizione pin INPUT/OUTPUT
int Pin_Led_Rosso = 7; // Led rosso uscita digitale 7
// Definizione Variabili Globali Stato Led
byte Stato_Led_Rosso = 0; // Stato led rosso
// Definizione Parametri Rete Wireless
#define WIRELESS_MODE_INFRA 1 // Infrastrutturata (basata su Access Point)
#define WIRELESS_MODE_ADHOC 2 // Ad-hoc (senza Access Point)
unsigned char local_ip[] = {192, 168, 1, 25}; // Indirizzo IP
unsigned char gateway_ip[] = {192, 168, 1, 1}; // Indirizzo gateway IP
unsigned char subnet_mask[] = {255, 255, 255, 0}; // Subnet Mask
const prog_char ssid[] PROGMEM = {"Vodafone-26874622"}; // SSID access point
// Selezione tipo di cifratura rete Wireless
unsigned char security_type = 3; // 0 -> nessuna cifratura
// 1 -> cifratura WEP
// 2 -> cifratura WPA
// 3 -> cifratura WPA2
// Password cifratura per WPA/WPA2 (max. 64 cratteri)
const prog_char security_passphrase[] PROGMEM = {"12345abc"};
// Password cifratura per WEP 128-bit keys
prog_uchar wep_keys[] PROGMEM = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// Selezio ne tipo di rete Wireless infrastrutturata
unsigned char wireless_mode = WIRELESS_MODE_INFRA;
// Variabili per lunghezza SSID e password di cifratura
unsigned char ssid_len;
unsigned char security_passphrase_len;
// Inizializzazione Scheda
void setup() {
// Inizializzo pin usati come INPUT/OUTPUT
pinMode (Pin_Led_Rosso, OUTPUT);
// Inizializzo WiServer (Gestione_Richieste_Web per creare/trasmettere pagine HTML)
WiServer.init (Gestione_Richieste_Web);
// Inizializzo porta seriale
Serial.begin (9600);
WiServer.enableVerboseMode (false);
// Spengo led rosso
Led_Rosso_OFF();
}
// Programma Principale
void loop() {
// Avvio WiServer
WiServer.server_task();
}
// Gestione diverse richieste provenienti dal WEB
// INPUT: URL pagina web richiesta
// OUTPUT: Flag URL riconosciuto/non riconosciutoo
boolean Gestione_Richieste_Web (char* URL) {
// Se URL richieso corrisponde a "/" (pagina index)
if (strcmp (URL, "/") == 0) {
// Secondo gli I/O creo e invio le pagine Web
Invia_Pagina_Web();
// Ritorno URL è stato riconosciuto
return (true);
} // Chiusura if URL richieso corrisponde a "/" (pagina index)
// Se URL richieso corrisponde a "?OPERATION=ACCENDI_ROSSO
if (strcmp (URL, "/?OPERATION=ACCENDI_ROSSO") == 0) {
// Accendo led rosso
Led_Rosso_ON();
Stato_Led_Rosso = 1;
// Secondo gli I/O creo e invio le pagine Web
Invia_Pagina_Web();
// Ritorno URL è stato riconosciuto
return (true);
} // Chiusura if URL richieso corrisponde a "?OPERATION=ACCENDI_ROSSO"
// Se URL richieso corrisponde a "?OPERATION=SPEGNI_ROSSO"
if (strcmp (URL, "/?OPERATION=SPEGNI_ROSSO") == 0) {
// Spengo led rosso
Led_Rosso_OFF();
Stato_Led_Rosso = 0;
// Secondo gli I/O creo e invio le pagine Web
Invia_Pagina_Web();
// Ritorno URL è stato riconosciuto
return (true);
} // Chiusura if URL richieso corrisponde a "?OPERATION=SPEGNI_ROSSO"
// Ritorno URL non riconosciuto
return (false);
}
// Funzione che, secondo gli I/O, crea e invia le pagine Web
void Invia_Pagina_Web() {
// Usando le funzioni WiServer.print trasmette al pagina Web da visualizzare
WiServer.print ("<html>");
WiServer.print ("<head>");
WiServer.print ("<meta http-equiv=""refresh"" content=""10;url=http://");
WiServer.print (local_ip[0], DEC);
WiServer.print (".");
WiServer.print (local_ip[1], DEC);
WiServer.print (".");
WiServer.print (local_ip[2], DEC);
WiServer.print (".");
WiServer.print (local_ip[3], DEC);
WiServer.print ("/"" />");
WiServer.print ("</head>");
WiServer.print ("<p align=""center"">");
WiServer.print ("Hello World!
");
WiServer.print ("Esempio Web Server tramite librerie WiShield
");
WiServer.print ("By Ingg. Tommaso Giusto e Ing. Alessandro Giusto
");
WiServer.print ("(tommro@libero.it)
");
// Se led rosso spento
if (Stato_Led_Rosso == 0) {
WiServer.print ("<form>Led rosso spento
");
WiServer.print ("<method=GET>");
WiServer.print ("<input type=submit name=OPERATION value=ACCENDI_ROSSO></form>
");
} // Chiusura if led rosso spento
// Se led rosso acceso
else {
WiServer.print ("<form>Led rosso acceso
");
WiServer.print ("<method=GET>");
WiServer.print ("<input type=submit name=OPERATION value=SPEGNI_ROSSO></form>
");
} // Chiusura if led rosso acceso
// Termino pagina HTML
WiServer.print ("</html>");
}
// Accende il led rosso
void Led_Rosso_ON() {
digitalWrite (Pin_Led_Rosso, LOW);
}
// Spegne il led rosso
void Led_Rosso_OFF() {
digitalWrite (Pin_Led_Rosso, HIGH);
}
Un Grazie in anticipo a chi risponde.
Saluti, Simone.