Ciao a tutti. Ho implementato un piccolo sketch il quale sfrutta l'ESP8266 per collegarsi al router WiFi di "casa mia", o cmq un ruoter qualsiasi.
Il metodo funziona abbastanza bene secondo me però volevo capire se ci sono margini di miglioramento. Il concetto è. Metto il firmware sulla mia scheda, vado a casa di Mario Rossi, attivo l'alimentazione di Arduino, esso dovrebbe collegarsi alla rete di Mario Rossi, come? Leggendo dalla EEPROM nome SSID e PASSWORD.
Non c'è nessuna info salvata ? Non c'è il router ? ALlora ti crea lui la rete mettendosi in modalità AP cosi ti colleghi e puoi configurare SSID e PASSWORD. A grandi linee io ho già implementato tutto questo e vi posto il codice:
bool ConnectWiFi() {
//SE HO GIà SALVATO SSID E PASSWORD
//RECUPERO QUESTE IMPOSTAZIONI ALTRIMENTI
//AVVIO LA SCHEDA ESP8266 IN ALTRA MODALITà
String WIFI_SSID = read_String(eeprom_ssd);
Serial.println(" " + WIFI_SSID);
delay(10);
String WIFI_PASSWORD = read_String(eeprom_pwd);
//se la password contiene un carattere speciale come il %21 va modificato
Serial.println(WIFI_PASSWORD);
Serial.println(" " + WIFI_SSID);
if(WIFI_SSID == "" || WIFI_PASSWORD == ""){
WiFi.mode(WIFI_AP);
WiFi.softAP("Mic", "pas");
Serial.println("Ready");
}else{
if(debug)
Serial.println("wifi sta");
//RECUPERO L'INDIRIZZO ip
IPAddress ip = getAddressIp(eeprom_ip);
//RECUPERO IL SUBNETMASK
IPAddress subnet = getAddressIp(eeprom_subnet);
//RECUPERO IL GATEWAY
IPAddress gateway = getAddressIp(eeprom_gateway);
WiFi.setSleepMode(WIFI_NONE_SLEEP);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID.c_str(), WIFI_PASSWORD.c_str());
WiFi.config(ip, gateway, subnet);
delay(10000);
int cont = 0;
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
delay(200);
Serial.println(WiFi.status());
Serial.println(WL_CONNECTED);
WiFi.disconnect();
delay(5000);
// WiFi.config(ip, gateway, subnet);
cont = cont + 1;
if(cont == 105){
//non riesce a collegarsi alla rete wifi.
startAPMode();
break;
}
}
delay(200);
Serial.println ("WiFi connected ");
}
return true;
}
Il baco di questo metodo è il seguente. Se per puro caso, il router viene accidentalmente spento, la scheda si mette in modalità Access Point e non si ricollega più al Router quando esso ritorna disponibile.
Secondo voi come si può ovviare a questo problema ?