bclose

ESP32 WIFI Modo Acces Point

Comunicaciones para IOT con  ESP32

 

 

    • Conocer los modos de trabajo del ESP32 con WIFI
    • jemplo simple del modo ACCESS POINT
    • Presentar un mensaje simple a un nodo AP .
 

Material requerido.

 

 Tienda EspañaTienda Mexico
 vista lateral del esp32
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:

 
  • Station Mode
  • Access point Mode.  

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

Red con router

En el modo ACCES POINT, en cambio, eliminamos la necesidad de router permitiendo al ESP32 que gestione la conexión de nodos externos.

Acceso al esp32

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.

 
  • Para ello podemos usar el ejemplo de servidor web de la sesión anterior y publicar cualquier cosa cuando nos conectemos con el teléfono móvil. Por ejemplo, un mensaje o el valor de algún sensor que tuviéramos por ahí.  
#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);
 
  • Cambiar el puerto estándar ayuda a que si alguien quiere colarse tenga que trabajar un poco más buscando si hay servicios no estándar y es una medida de seguridad habitual.
  • Si no quieres complicarte la vida déjalo en el puerto 80 y listo.

.  

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:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

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.

 
  • Es de perogrullo pero… te tienes que conectar desde un dispositivo con WIFI, no vale conectarte desde tu pc conectado mediante ethernet ¿Vale? Con tu telefono o tableta o portatil sin problema.
  • Según la documentación la librería viene programada para aceptar hasta un máximo de 4 conexiones simultaneas, pero si editas el código fuente puedes aumentar este número, si tienes memoria suficiente  
Busca la ESP32_

Te pedirá la clave que hemos definido en el programa y si todo va bien, deberías conectarte sin problemas (Cruza los dedos)

Conectados en modo AP

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:

Pagina del servidor web

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.

 

IMAGEN DE MARCA