Cómo conectar un ESP8266 a una red WiFi (modo STA) Deja un comentario

Empezamos con las entradas dedicadas a programar el ESP8266. Como no podía ser de otra forma empezamos por el caso más sencillo, cómo conectar el ESP8266 a una red WiFi existente.

En entradas anteriores hemos visto cómo programar el ESP8266 con el entorno de Arduino, y la guía de programación del ESP8266, haciendo hincapié a las diferencias entre programar un Arduino y un ESP8266.

También hemos visto dos de las placas de desarrollo más populares basadas en el ESP8266, la NodeMCU y la Wemos D1 Mini. Quedan muchas más por ver, pero de momento es más que suficiente para meternos en harina en la programación.

Así que (por fin!) podemos empezar a jugar con este divertidísimo dispositivo, conectando nuestro ESP8266 a una WiFi. En este caso el ESP8266 actuará en modo estación (STA, Station), es decir, como un dispositivo que se conecta a un punto de acceso (AP, Access Point). En la próxima entrada veremos cómo hacer que el propio ESP8266 genere su propia WiFI actuando como AP.

Conectarse a una red Wifi con el ESP8266 es muy sencillo gracias a las funciones de la librería ESP8266WiFi, que forma parte de la definición del ESP8266 que descargamos con el gestor de placas al configurar el IDE de Arduino.

Para conectarnos simplemente usamos el método ‘Wifi.begin(…)’, que tiene la siguiente definición,

Siendo:

  • ssid, nombre de la red WiFi a la que nos queremos conectar (max 32 char)
  • password, opcional, contraseña (mínimo 8 char y máximo 64)
  • channel, opcional, el canal de WiFi a emplear
  • bssid, opcional, dirección MAC del punto de acceso
  • connect, indica si queremos conectar inmediatamente (si es false, sólo guarda los parámetros)

Un ejemplo de código para conectarnos a una red WiFi existente con el ESP8266 tendría la siguiente forma.

La función WiFi.begin(…) del ESP8266 guarda los credenciales indicados en la memoria flash no volátil (que se mantiene incluso aunque carguemos otro programa). Ante un fallo de conexión, el ESP8266 se conectará automáticamente al último punto de acceso cuando esté disponible. Además, una vez configurado una vez, podemos volver a conectarnos llamando a la sobrecarga sin parámetros.

Las funciones WiFi.begin(…) devuelven el estado del ESP8266 para determinar cuándo hemos establecido la conexión con la red. También podemos obtenerlo en otro momento a lo largo de nuestro programa con la función WiFi.status(). Esta variable de estado del ESP8266 puede ser:

WL_CONNECTED Conexión establecida
WL_NO_SSID_AVAIL El SSID no se encuentra
WL_CONNECT_FAILED Contraseña incorrecta
WL_IDLE_STATUS Wi-Fi está cambiando entre estados
WL_DISCONNECTED El ESP8266 no está configurado en modo STA

La función WiFi.mode(WIFI_STA) es opcional en este ejemplo. Sirve para dejar únicamente el modo STA y desactivar el AP en caso de que lo hubiéramos configurado previamente ya que, como decíamos, el ESP8266 guarda la configuración del WiFi aunque lo reprogramemos. Las opciones de modos son:

WIFI_OFF Apagado
WIFI_STA Estacion
WIFI_AP Access point
WIFI_AP_STA Station+Acces Point

 

Veremos los dos últimos en la próxima entrada cuando veamos cómo generar nuestra propia WiFi con el ESP8266.

Ejemplo resumido

El código de conexión puede parecer un poco largo, pero si eliminamos las llamadas a Serial.print(…), en realidad vemos que únicamente necesitamos unas pocas líneas para conectarnos a una red WiFI, que quedan resumidas en este pequeño snippet.

En este caso, al prescindir de Serial y no mostrar la IP no sabremos que dirección nos ha asignado el DHCP (Dynamic Host Configuration Protocol) del AP. Algo que podemos resolver o con un escaner WiFi (no es muy práctico), un mDNS (no funciona siempre) o configurando una IP estática, como veremos en próximas entradas.

Existe otra forma de conectarse a una red WiFi, o mejor dicho, a la que tenga mejor señal de entre red WiFi disponibles. Para ello usaremos la librería ‘ESP8266WiFiMulti’.

En la configuración usaremos wifiMulti.addAP(…) para agregar varias redes WiFI proporcionando sus respectivas SSID y su contraseña. Al arrancar, el ESP8266 se conectará a la red que tenga mejor recepción.

Este modo es menos habitual que el anterior, ya que normalmente no vamos a tener varias WiFi disponibles (es más frecuente tener varios AP con el mismo SSID y contraseña). Pero resulta interesante en algunos proyectos de redes malladas, sniffers, etc.

Sin embargo, gestionar un WiFi múltiple también supone una sobrecarga de trabaja adicional para el ESP8266, aunque no demasiado grande. Por lo que usar esta función únicamente cuando realmente sea necesaria y no os acostumbréis a usarla “porque sí”.

Aquí tenemos un resumen de algunas de las funciones adicionales disponibles en ESP8266 WiFi. Los nombres son autodescriptivos de su función pero, sí tenéis dudas, podéis consultar la documentación del ESP8266.

¡Así de sencillo! ¿A que es impresionante lo que puede hacer este pequeño dispositivo? En la próxima entrada veremos algo aún más impresionante, como configurar el ESP8266 para actuar como un AP, es decir, generar su propia WiFi a la que se conecten otros dispositivos. ¡Hasta pronto!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?