como-generar-una-red-wifi-con-el-esp8266-modo-ap

Cómo generar una red WiFi con ESP32 (modo AP)

  • 4 min

El modo AP permite que un ESP32 o ESP8266 genere su propia WiFi para que otros dispositivos se conecten directamente a él.

Cuando usamos el modo punto de acceso (Access Point, AP), la placa deja de ser un cliente de una red existente y pasa a crear una red propia. Esto es útil para configuración inicial, redes aisladas, dispositivos portátiles o proyectos que no dependen de un router externo.

En cierta forma la placa va a actuar “como el router de tu casa”, salvo que el router de tu casa comparte una conexión (ADSL, fibra…) con los dispositivos conectados. Sin embargo, nuestro ESP32 no va a compartir “nada”, únicamente es un AP para dispositivos. Este modo se denomina “SoftAP”.

El ejemplo está orientado a ESP32. En muchos casos también puede adaptarse a ESP8266 cambiando librerías y algunos detalles de pines.

Crear una red WiFi

Usar el modo AP para crear una red WiFi es igual de sencillo que usar el modo STA para conectarnos a una WiFI existente, gracias a la misma librería WiFi.

Para generar la red WiFi empleamos la función WiFi.softAP(…), que devuelve true si la red WiFi se ha creado correctamente y false en caso contrario.

WiFi.softAP(ssid, passphrase = NULL, channel = 1, ssid_hidden = 0, max_connection = 4)
Copied!
  • ssid, nombre de la red WiFi que vamos a generar (entre 32 char)
  • password, opcional, contraseña de la WiFi (mín 8 y máx 63 char)
  • channel, opcional, el canal de WiFi a emplear (del 1 al 13)
  • hidden, opcional, si es true no se mostrará el SSID
  • max_connection, opcional, número máximo de conexiones (máx 8)

Por lo que un ejemplo para crear una red WiFI con el ESP32 en el modo AP sería el siguiente

#include <WiFi.h>        // Include the Wi-Fi library

// Configuración de la WiFi generada
const char *ssid = "ssid";
const char *password = "password";

void setup() {
  Serial.begin(115200);
  delay(10);
  
  WiFi.mode(WIFI_AP);
  while(!WiFi.softAP(ssid, password))
  {
  Serial.println(".");
    delay(100);
  }
  
  Serial.print("Iniciado AP ");
  Serial.println(ssid);
  Serial.print("IP address:\t");
  Serial.println(WiFi.softAPIP());
  
}

void loop() { }
Copied!

Por defecto se pueden conectar 4 dispositivos a la red generada, aunque puede cambiarse el número máximo de estaciones que pueden conectarse de forma simultánea entre 0 a 8. Una vez que el número máximo se ha alcanzado, cualquier otra estación que quiera conectarse se verá forzada a esperar hasta que alguna estación conectada se desconecte.

Por su parte, la función WiFi.mode(…) establece el modo de funcionamiento de la WiFi, pudiendo ser:

WIFI_OFFApagado
WIFI_STAEstacion
WIFI_APAccess point
WIFI_AP_STAStation+Acces Point

Igual que en el caso STA, las credenciales de la red se guardan en memoria, que se mantiene incluso aunque reprogramemos la placa. Por lo que, si queremos desactivar el modo AP deberemos hacerlo explícitamente llamando a la función WiFi.mode(…). De lo contrario, el dispositivo generará su propia WiFi incluso después de reprogramarlo, aunque no hayamos usado la función WiFi.softAP(…) en el nuevo programa.

Ejemplo resumido

Si dividimos nuestro código para que sea más sencillo y reutilizable,

#include <WiFi.h>
 
#include "config.h"  // Sustituir con datos de vuestra red
#include "ESP32_Utils.hpp"
 
void setup() 
{
  Serial.begin(115200);
  
  ConnectWiFi_AP();
}
 
void loop() 
{ 
}
Copied!

Un fichero adicional que llamaremos ‘ESP32_Utils.hpp’ que contenga las funciones de conexión.

void ConnectWiFi_AP()
{ 
   Serial.println("");
   WiFi.mode(WIFI_AP);
   while(!WiFi.softAP(ssid, password))
   {
     Serial.println(".");
     delay(100);
   }

   Serial.println("");
   Serial.print("Iniciado AP:\t");
   Serial.println(ssid);
   Serial.print("IP address:\t");
   Serial.println(WiFi.softAPIP());
}
Copied!

Un fichero de ‘config.h’ con los datos de nuestra WiFi

const char* ssid     = "ssid";
const char* password = "password";
Copied!

¿Sencillo verdad? Conectar un ESP8266 tanto a una red WiFi existente como generar su propia WiFI es realmente fácil gracias a la librería ESP8266 WiFi.

Con esto ya podemos usar el ESP32 como punto de acceso. Es una configuración muy práctica para asistentes de configuración, redes locales temporales o dispositivos que tienen que funcionar sin depender de un router externo.

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github.

github-full

Versión para el ESP8266: https://github.com/luisllamasbinaburo/ESP8266-Examples

Versión para el ESP32: https://github.com/luisllamasbinaburo/ESP32-Examples