La librería WifiManager

Objetivos

 

  • Instalar la librería WifiManager para el esp8266.
  • Aprender a cambiar el SSID y el Password de la red WiFi sin programar de nuevo el esp8266.
  •  

    Material requerido.

     

    Node MCU board Node MCU V2 o V3

    El problema

     

    Si habéis estado jugando con el esp8266, casi seguro que en algún momento lo habéis cambiado de lugar y habéis tenido que programarlo de nuevo para modificar el SSID y el Password de la nueva red WiFi a la que os habéis intentado conectar.

    No es que sea un problema insalvable. Si tienes un PC a mano, con el IDE de Arduino preparado, cambias el programa y lo vuelves a cargar. Pero desde luego sería mucho mejor no tener que pasar por eso, sobre todo si quieres que lo use alguien que no está familiarizado con la programación.

    Para solucionarlo se me ocurrió que podrías configurarlo como access point y  meterle el SSID y el Password desde el teléfono y guardarlo en la  memoria EEPROM. La verdad, nos daba un poco de pereza pensar en programarlo…

    Pero una vez más no habíamos tenido en cuenta el poder de Internet y la generosidad de la comunidad de Arduino. Alguien había tenido ese mismo problema y ha hecho una librería estupenda, WiFiManager, que sirve precisamente para eso, compartiéndola desinteresadamente con todos nosotros.

    símbolo comunidad Arduino

     

    La librería WiFiManager

     

    Pues lo dicho, podéis descargar la librería haciendo click aquí: WiFiManager-master. Recordad incluirla en el IDE como siempre.  Ahora podéis abrir el ejemplo AutoConnect dentro de la librería. Veréis que el programa es muy sencillo. Además de incluir las librerías y poner la velocidad del puerto serie, utiliza algunas funciones muy fáciles de entender:

    void setup() {
     // put your setup code here, to run once:
     Serial.begin(115200);
    
     //WiFiManager
     //Local intialization. Once its business is done, there is no need to keep it around
     WiFiManager wifiManager;
     //reset saved settings
     //wifiManager.resetSettings();
     
     //set custom ip for portal
     //wifiManager.setAPStaticIPConfig(IPAddress(10,0,1,1), IPAddress(10,0,1,1), IPAddress(255,255,255,0));
    
     //fetches ssid and pass from eeprom 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
     wifiManager.autoConnect("AutoConnectAP");
     //or use this for auto generated name ESP + ChipID
     //wifiManager.autoConnect();
     
     //if you get here you have connected to the WiFi
     Serial.println("connected...yeey :)");
    }

    Si os fijáis, lo primero que hace es inicializar la librería. Si encuentra la última red WiFi a la que se conectó, simplemente volverá a conectarse. Pero si no la encuentra es donde entra la función para configurarse como Acces Point. Si miráis el monitor serie veréis que os informa de que así es:

    WifiManager acces point

    Si es esto lo que ocurre tendréis que coger vuestro teléfono o PC y buscar las redes WiFi. Encontraréis una nueva red con el nombre «AutoConnectAP». Si os conectáis a él os saldrá la opción de iniciar sesión, tenemos que pulsar ahí.

    Buscar red wifi

    Entraremos entonces en un menú en el que podemos escanear las redes WiFi. No tenemos más que seleccionar la que queramos y meter el SSID y la contraseña. Una vez conectados, se reiniciará el módulo y se conectará automáticamente a la red WiFi que le hemos indicado. Siempre que encuentre esa red se conectará a ella a partir de ahora, y si cambiamos de lugar o no la encuentra, volverá a configurarse como Acces Point para que podamos cambiar los parámetros para la conexión.

    Acces point menu

  • Si por alguna razón queréis que olvide los datos de la conexión, aunque encuentre la red WiFi, sólo tenéis que descomentar la línea  //wifiManager.resetSettings();
  • Se puede cambiar el nombre de la red que crea el Acces Point sustituyendo «AutoConnectAP» por el nombre que queráis.
  •  

     

    Para incluirlo en un programa que ya tengamos hecho, lo único que hay que hacer es sustituir las partes en las que se conecta a la red WiFi por estás instrucciones, pudiendo prescindir de las variables en las que le indicábamos el SSID y el Password. O sea, meter estas instrucciones en el setup (e incluir la librería):

    WiFiManager wifiManager; 
    wifiManager.autoConnect("AutoConnectAP");

    Aquí os dejamos un vídeo para que veáis cómo funciona:

     

    Resumen de la sesión

     

    En esta sesión hemos aprendido algunas cosas importantes:

  • Podemos cambiar de red WiFi sin reprogramar el esp8266.
  • Hemos aprendido a usar la librería WiFiManager.
  • ¡La comunidad de Arduino es estupenda![/three-fourth][margin value=»5″ /]
  •  

    Deja una respuesta