Objetivo
Material requerido.
Un ESP32 |
ESP32 WIFI STATION MODE
En la sesión anterior vimos que el ESP32 disponía de dos modos de trabajo con el WIFI:
El Station mode, es el habitual al que estás acostumbrado, y que te permite conectar a un router y desentenderte del resto. Con eso tenemos conexión a la red WIFI.
Pero claro en muchos proyectos que montes por ahí te vas encontrar con que no tienes un router wifi disponible para engancharte y mucho menos una conexión a Internet. Imagínate un invernadero en el campo, o el típico ejemplo de cultivos de viñas para vino, en un entorno rural y con mala conexión hasta de teléfono móvil.
En ese caso, tendría poco sentido, que para conectar tu micro ESP32 con algunos nodos WIFI, como tu móvil o sensores de humedad remotos o accionadores de riego, tuvieras que comprar e instalar un router. Para estas ocasiones el ESP32 dispone de un modo ACCES POINT en el que el propio chip interno puede actuar como router (Por software interno) y te permitirá conectarte sin necesidad de router externo. Muy útil en muchas ocasiones.
En el modo STATION conectábamos todos los nodos al router
En el modo ACCES POINT, en cambio, eliminamos la necesidad de router permitiendo al ESP32 que gestione la conexión de nodos externos.
Los dispositivos conectados funcionan como estaciones de trabajo y el ESP32 proporciona el servicio de router. Podemos montar un ejemplo sencillo (Mis preferidos)publicando en un servidor web, como el que vimos en la sesión anterior, un mensaje de bienvenida. Vamos a ver cómo podemos programar todo esto con el ESP32.
#include <WiFi.h> //#include <WiFiClient.h> #include <WebServer.h>
Cuando nos conectábamos al router teníamos que buscar su SSID o identificador y proporcionar la clave de acceso. Aunque ahora no va a haber router tendremos que publicar también un nombre de red, a la que conectarse (Que definimos nosotros), y solicitar una contraseña a quien se quiera conectar, como cualquier WIFI seria que se precie.
const char* ssid = "ESP32_"; const char* password = "12345678";
De este modo, cuando busquemos redes disponibles, veremos una llamada ESP32_ y ya nos sabemos la contraseña. Como no vamos a tener router ni DHCP que nos asigne direcciones IP, vamos a tener que configurar una a mano, así como la Gateway por defecto y la máscara de red, de momento las definimos aquí y las usaremos un poco más abajo:
IPAddress local_ip(192,168,5,1); IPAddress gateway(192,168,5,1); IPAddress subnet(255,255,255,0);
Queremos ahora, arrancar el server (Como en la sesión anterior) pero por aquello de cambiar algo, podemos situar el servicio web en un puerto no estándar, como el 312 por decir algo, y así vemos como se accede:
//WebServer server(80); WebServer server(312);
.
Vamos con el setup()
WiFi.softAP(ssid, password); //Start Acces point mode WiFi.softAPConfig(local_ip, gateway, subnet); delay(100);
Más arriba es donde definimos la SSID o ID pública de nuestra WIFI y la clave de acceso que tendrá que dar el que quiera que le dejemos pasar. La segunda línea configura los valores de nuestra IP local. Solo nos queda arrancar los servicios de callback del servidor:
server.on("/", handle_OnConnect); server.onNotFound(handle_NotFound); server.begin(); Serial.println("HTTP server started");
Y casi eso es todo. El resto es repetir el loop de la sesión anterior y las funciones handle_NotFound() y String SendHTML(String S). Aqui os dejo el programa completo:
Una vez que hayas compilado y mandado el código a tu micro, habrá arrancado el servidor web interno con el mensaje de bienvenida y para acceder basta con que en primer lugar te conectes con tu móvil o portátil, pero vía WIFI. Deberías ver la nueva WIFI llamada ESP32_ y ya puedes conectarte a ella.
Te pedirá la clave que hemos definido en el programa y si todo va bien, deberías conectarte sin problemas (Cruza los dedos)
Fíjate en primer lugar, que dice conectado, pero sin internet. Esto se debe a que te has conectado al router ESP32 que no tiene acceso a internet y por tanto tu tampoco. Pero a pesar de todo disponemos de una red WIFI entre los que se conecten correctamente a este Access Point y por ejemplo ya podemos acceder al servidor web interno sin más que ir a la dirección del ESP (192.168.5.1 que definimos en el programa) y como pusimos el puerto 312, puedes abrir tu navegador y saltar a la dirección:
192.168.5.1:312
Si has seguido todos los pasos verás:
Es el mensaje que esperábamos, pero comprobaras que al no estar conectado a internet no aparece el logo de Prometec al que el servidor no puede acceder. Pues eso es todo por hoy.