Go Down

Topic: Arduino WiShield 1.3 (Read 823 times) previous topic - next topic

Extar_blue

Nov 13, 2012, 06:54 pm Last Edit: Nov 13, 2012, 07:00 pm by Extar_blue Reason: 1
Salve a tutti, ho da poco comprato un Arduino UNO e questo shield wi-fi:
http://www.futurashop.it/allegato/8190-WIFI_SHIELD.asp?L2=SHIELD%20E%20ACCESSORI%20ARDUINO&L1=SOFTWARE%20E%20SISTEMI%20DI%20SVILUPPO&L3=&cd=8190-WIFI_SHIELD&nVt=&d=56,00
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.
Code: [Select]
/******************************************************
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!<br>");
 WiServer.print ("Esempio Web Server tramite librerie WiShield<br>");
 WiServer.print ("By Ingg. Tommaso Giusto e Ing. Alessandro Giusto<br>");
 WiServer.print ("(tommro@libero.it)<br>");
 
 // Se led rosso spento
 if (Stato_Led_Rosso == 0) {
   WiServer.print ("<form>Led rosso spento<br>");
   WiServer.print ("<method=GET>");
   WiServer.print ("<input type=submit name=OPERATION value=ACCENDI_ROSSO></form><br>");
 }    // Chiusura if led rosso spento
 // Se led rosso acceso
 else {
   WiServer.print ("<form>Led rosso acceso<br>");
   WiServer.print ("<method=GET>");
   WiServer.print ("<input type=submit name=OPERATION value=SPEGNI_ROSSO></form><br>");
 }    // 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.

uwefed

Che bello sappiamo tutti la password della Tua rete Wireless.

Ma il PC dal quale chiami Arduino é sotto lo stesso router?
Ciao Uwe


Extar_blue

Quote
Che bello sappiamo tutti la password della Tua rete Wireless.

:smiley-mr-green: magari è quella giusta sul serio... 

Quote
Ma il PC dal quale chiami Arduino é sotto lo stesso router?

Si è lo stesso, e ho già controllato eventuali conflitti di IP dato che lo wishield supporta solo l'IP statico

superzaffo

Ciao, io sto testando da un po' di tempo il micro che è installato nello shield. Ho acquistato il chip su una banale schedina per PCB.
Le prime difficoltà che ho avuto sono state, cambiare le librerie per l' ide 1.x, cambiare la libreria con il numero di pin corretto per l' interrupt.
Inizialmente sembrava funzionare tutto ma non si accendeva il led della connessione alla rete. Pensavo fosse un problema di alimentazione e invece era un problema della libreria che faceva riferimento ad un pin dell' arduino errato. Forse non è il tuo caso.. ma sempre meglio controllare..
Prova a impostare il collegamento ADHOC creandoti nel tuo pc una connessione wireless senza protezione, in modo di collegare l' arduino direttamente al tuo pc.
Se hai la criptazione abilitate, la connessione alla rete impiega un bel po', non è immediata..
Appena riesco, ti posto qualche link utile...

Extar_blue

Quote
Le prime difficoltà che ho avuto sono state, cambiare le librerie per l' ide 1.x, cambiare la libreria con il numero di pin corretto per l' interrupt.
Inizialmente sembrava funzionare tutto ma non si accendeva il led della connessione alla rete. Pensavo fosse un problema di alimentazione e invece era un problema della libreria che faceva riferimento ad un pin dell' arduino errato. Forse non è il tuo caso.. ma sempre meglio controllare..

Mi sembra strano che la libreria abbia i pin sbagliati. Lo shield che ho comprato è descritto in un rivista di elettronica dove insegnano come usarlo. Ho seguito passo passo le loro indicazioni e ho usato pure la loro stessa versione della libreria wishield e dell'IDE. Non parlavano di dover cambiare la configurazione dei pin della libreria. Inoltre non ho la più pallida idea di dove si trovi la configurazione dei pin nella libreria  :smiley-mr-green:

Quote
Prova a impostare il collegamento ADHOC creandoti nel tuo pc una connessione wireless senza protezione, in modo di collegare l' arduino direttamente al tuo pc.

Uso un pc fisso e non ho la pennina wi-fi. ma dammi qualche giorno e una pennina wi-fi la trovo per provare una ADHOC.

Quote
Se hai la criptazione abilitate, la connessione alla rete impiega un bel po', non è immediata..

Ora non ho tempo. Quando posso provo a togliere la password e riprovo. Dato che lo shield è dotato di ingresso microSD, proverò anche a inserirne una e caricarci qualcosa, giusto per provare che non sia un problema hardware.

Go Up