Objetivos
Material requerido.
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.
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:
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í.
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.
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: