Workaround: il modulo ESP8266 non si collega piu´ alla rete Wi-Fi

Giovanni Bernardo | 6 marzo 2017
Categorie: ESP8266

Sono quelle cose per cui si impazzisce dando la colpa a questa o quell’altra cosa perdendo giorni di tempo, quando invece il problema è più banale di quanto si possa pensare! Io ci ho sbattuto su per un bel po’: il modulo NodeMCU si rifiutava di collegarsi alla rete Wi-Fi , al che, non avendo cambiato codice nè configurazione della rete di casa… ho pensato subito che potesse essere accaduto qualcosa alla scheda dal momento che ci stavo smanettando parecchio… Ho quindi acquistato dei moduli nuovi pensando di aver guastato quello in mio possesso.

Solo quando anche i moduli nuovi rifiutavano di collegarsi ho pensato bene di cercare in altre direzioni e ho scoperto che il problema non era stato causato da me (almeno in maniera diretta!).

Dopo l’ultimo aggiornamento per l’ESP8266 (versione 2.3.0) su Arduino IDE, capita che il modulo non si riesca più a collegare alla rete Wi-Fi, questo problema è documentato su Github (issue 2186).

Ci sono 2 workaround forniti dall’autore delle librerie, io ne ho utilizzato uno che ha funzionato subito: basta inserire 3 righe nel codice prima del WiFi.Begin per accendere e spegnere il modulo WiFi e far tornare tutto alla normalità. Includo qui il workaround con un po’ di configurazione minima che uso normalmente sui miei programmi: 

WiFiServer server(80); // html server su porta 80 (standard)
const char* ssid = "[IL SSID DELLA TUA RETE WIFI]";
const char* password = "[PASSWORD DELLA TUA RETE WIFI]";
 
// le seguenti 3 righe costituiscono il workwaround per l'issue 2186
WiFi.persistent(false);
WiFi.mode(WIFI_OFF);
WiFi.mode(WIFI_STA);
 
// le seguenti righe commentate sono da usare solo se si vuole assegnare alla scheda un indirizzo IP statico
//IPAddress ip(192,168,0,105); // indirizzo ip da assegnare al modulo
//IPAddress gateway(192,168,0,1); // indirizzo ip del router
//IPAddress subnet(255,255,255,0); // subnet mask
//WiFi.config(ip,gateway,subnet); // configura il modulo wi-fi per utilizzare l'IP statico
 
WiFi.begin(ssid, password); // si collega alla rete specificata 
 
while (WiFi.status() != WL_CONNECTED) 
    {
    // qui vanno i task da eseguire fino a che il modulo NON è connesso
    }
 
// a questo punto siamo connessi alla rete wi-fi, avviamo il server:
server.begin();

 



Questo articolo ti è stato utile? Ti ha permesso di risolvere un problema o di migliorare le tue applicazioni? Ci lavori? Ti ha permesso di scrivere la tua tesina? Ti ha semplicemente fatto spendere un po' del tuo tempo in maniera costruttiva? Allora clicca il banner qui sotto:


Settorezero.com è un blog personale di Giovanni Bernardo. Non è una testata giornalistica né un sito a carattere commerciale.
Settorezero.com, il logo Zroid™ e la tagline "Play embedded electronics" sono copyright ©2007÷2018 Giovanni Bernardo.
La navigazione su settorezero.com e la fruizione dei contenuti ivi presenti sono soggette ai seguenti Termini di utilizzo - Informativa sulla privacy - Utilizzo dei Cookie.
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche.
Per poter contattare il gestore del sito potete utilizzare la sezione contatti o inviare una email a gianni[at]settorezero[dot]com.
Settorezero è presente anche su Facebook e sul canale Telegram e, meno assiduamente, anche su Twitter - Tumblr - Google+ - Blogspot - Youtube.