WeMos WifiManager

WeMos WiFiManager potrebbe essere la soluzione che stai cercando per i tuoi progetti IoT e consentirti di connettere ogni progetto alla tua rete domestica senza problemi di configurazione.

WeMos WifiManager connected iphone

L’autore della libreria WiFiManager è tzapu e la puoi scaricare dal suo gitHub ufficiale.

La libreria, unita ad un ESP8266 o altra scheda WiFi, ti permette di sfruttare la parte di memoria interna del chip.

Usando tale area puoi memorizzare i dati di connessione WiFi sulla WeMos WifiManager rendendo autonomo il tuo progetto IoT.

WeMos WifiManager

Come funziona WeMos WifiManager

Prima di tutto ho eseguito il test su di una scheda WeMos e la WeMos WifiManager che all’accensione verifica la presenza, nel raggio di connessione, di una delle reti WiFi conosciuta, la cui configurazione sia tra quelle precedentemente salvate.

Ciascuna configurazione è composta dalla coppia SSID/Password e WeMos tenta di collegarsi ad una delle reti “conosciute”.

WiFi ScanNetwork

Se nessuna delle reti conosciute è nel raggio della WeMos WifiManager ( l’immagine è stata eseguita con una shield WiFi in Scan ) avrai come conseguenza che il dispositivo si metterà in modalità AP con un DNS server ed un WebServer sul ip 192.168.4.1

Se ti colleghi alla nuova rete creata con il tuo dispositivo, visualizzerai il Captive Portal, che ti riporta alla pagina di default:  

WefiManager AutoConnectAP

Fonte: gitHub Tzapu

grazie a questa tecnica potrai configurare una nuova connessione WiFi ( SSID/Password ) e consentire alla WeMos WifiManager di salvare le credenziali di accesso alla tua rete WiFi ed al successivo riavvio, se il tuo progetto si trova nel raggio della tua rete, si collegherà automaticamente a quest’ultima.

Sketch di esempio della libreria

Tra gli esempi presenti nel gitHub di tzapu trovi anche “AutoConnectWithFeedbackLED.ino che procediamo ad analizzare linea per linea:

#include "ESP8266WiFi.h"
//needed for library
#include "DNSServer.h"
#include "ESP8266WebServer.h"
#include "WiFiManager.h"          //https://github.com/tzapu/WiFiManager

//for LED status
#include "Ticker.h"
Ticker ticker;

void tick() {
  //toggle state
  int state = digitalRead(BUILTIN_LED);
  digitalWrite(BUILTIN_LED, !state);
}

//gets called when WiFiManager enters configuration mode
void configModeCallback (WiFiManager *myWiFiManager) {
  Serial.println("Entered config mode");
  Serial.println(WiFi.softAPIP());
  //if you used auto generated SSID, print it
  Serial.println(myWiFiManager->getConfigPortalSSID());
  //entered config mode, make led toggle faster
  ticker.attach(0.2, tick);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  
  //set led pin as output
  pinMode(BUILTIN_LED, OUTPUT);
  // start ticker with 0.5 because we start in AP mode and try to connect
  ticker.attach(0.6, tick);

  //WiFiManager
  //Local intialization. Once its business is done,
  //there is no need to keep it around
  WiFiManager wifiManager;
  //reset settings - for testing
  //wifiManager.resetSettings();

  //set callback that gets called when connecting to previous WiFi fails
  //and enters Access Point mode
  wifiManager.setAPCallback(configModeCallback);

  //fetches ssid and pass and tries to connect
  //if it does not connect it starts an access point with the specified name
  //here  "AutoConnectAP"
  //and goes into a blocking loop awaiting configuration
  if (!wifiManager.autoConnect("WeMos MauroAlfieri")) {
    Serial.println("failed to connect and hit timeout");
    //reset and try again, or maybe put it to deep sleep
    ESP.reset();
    delay(1000);
  }

  //if you get here you have connected to the WiFi
  Serial.println("connected...yeey :)");
  ticker.detach();
  //keep LED on
  digitalWrite(BUILTIN_LED, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
}

Descrizione dello sketch

Partendo dalle linee 01-08 che includono le librerie necessarie alla comunicazione WiFi, DNS, Wifi Manager e Ticker.h per la gestione del led;

linea 09: crea una istanza ticker che userai per la gestione del lampeggio del led;

linee 11-15: crea la funzione che si occuperà di gestire il lampeggio del led. Recupera lo stato del led e lo inverte sul pin a cui tale led è connesso;

linee 18-25: definisci una funzione di callback che richiamata da un metodo della libreria in condizioni particolari, come in questo esempio, scrive sul monitor seriale le informazioni di configurazione e del successivo utilizzo del WiFi impostando, infine,  il lampeggio del led a 0.2 sec;

linea 29: attiva la comuicazione seriale tra WeMos WifiManager e computer a 115200;

linea 32: imposta il led come OUTPUT e per farlo utilizza il comando pinMode;

linea 34: imposta il lampeggio a 0.6 sec per indicare la fase di connessione del WeMos;

linea 39: crea l’istanza wifiManager dall’omonima classe che utilizzerai per i metodi disponibili;

linea 45: imposti la chiamata alla funzione di callback che sarà richiamata qualora il WeMos non trovi una delle reti precedentemente salvate;

linea 51: esegue una doppia funzione, la prima tenta la connessione ad una rete precedentemente conosciuta, in caso di fallimento passa alla modalità AP; tra parentesi puoi impostare un SSID personalizzato”WeMos MauroAlfieri” in modo da riconoscere facilmente la nuova rete dal tuo device. Se non definisci alcun SSID di default avrai: “AutoConnectAp”. Qualora la connessione, attraverso il captive portal, dovesse impiegare più del timeout impostato ti restituisce un valore false e lo sketch si blocca in un ciclo interno alla libreria;

linea 59: quando la connessione va a buon fine, come conseguenza, scrive sul monitor seriale “connected…yeey:)”;

linea 60: usa il metodo detouch per inibire il led evitando altri lampeggi;

linea 62: porta il pin del LED_BUILTIN a LOW per mantenerlo acceso dopo la connessione;

linee 65-68: la funzione loop() è vuota perché tu possa utilizzarla per inserire il codice che vorrai far eseguire al tuo progetto.

WeMos WifiManagerconnected

Video demo

In conclusione il video che ho realizzato:

 osserva il collegamento alla rete WiFi che avviene usando il captive portal della WeMos Wifimanager library

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/wemos-wifimanager.html

1 ping

  1. […] WeMos WiFi Manager […]

Lascia un commento

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.