Skip to main content

Sesión 7 - Conexión Wifi para el ESP32

Objetivos
  • Comprender los pasos necesarios para configurar y conectar una placa ESP32 a una red Wifi.
  • Aprender a usar las estructuras de datos de la libreria Wifi del API de Arduino para hacer aplicaciones que hagan uso de comunicación usando Wifi.
  • Ilustrar diferentes escenarios de aplicación en los que se puede usar la conexión Wifi.

Arduino core for the ESP32

Como previamente se habia mencionado, el ESP32 es una evolución del ESP8266. En el laboratorio se cuentan con varios modulos NodeMCU-32S. La siguiente lista resalta algunas referencias de utilidad si lo que se desea es sobre el ESP32:

  • ESP32 - Pagina del fabricante (link)
  • ESP-IDF Programming Guide (link)
  • Arduino core for the ESP32 (link)

En nuestro caso vamos a hacer enfasis en el Arduino core for the ESP32 (link) que es donde se encuentra toda la información para programar el ESP32 haciendo uso del API de arduino (link).

Antes de empezar es importante ver las librerias disponibles en el API las cuales se pueden ver en el siguiente link.

Arduino core for the ESP32: Wi-Fi API

Como en nuestro caso, lo que nos interesa es analizar como se puede conectar el ESP32 a una red WiFi, la información mas relevante se encuentra en Wi-Fi API asi que nos concentraremos en dar una vista rapida de este antes de poner algunos ejemplos.

Sobre el API, en la pagina se menciona:

About

The Wi-Fi API provides support for the 802 11b/g/n protocol driver. This API includes:

  • Station mode (STA mode or Wi-Fi client mode)ESP32 connects to an access point
  • AP mode (aka Soft-AP mode or Access Point mode) Devices connect to the ESP32
  • Security modes (WPA, WPA2, WEP, etc).
  • Scanning for access points

Como punto de partida básico es bueno recordar los roles que puede tomar el ESP32 dentro de una red Wi-Fi:

  • Access Point (AP): En este modo, el ESP32 es configurado como un access point (AP) permitiendo la conexión entre los otros dispositivos (Stations) de la red.

wifi_esp32_ap

  • Station (STA): En este caso, el ESP32 se conecta, como cualquier otro dispositivo, a la red Wi-Fi a traves de un Access Point.

wifi_esp32_sta

Prueba de conectividad

Antes de empezar, lo primero que debemos realizar es una prueba basica para verificar el Wi-Fi del modulo NodeMCU-32S. De modo que siga los siguientes pasos:

  1. Abra el Arduino IDE.
  2. Seleccione la placa (Tools > Board > ESP32 Arduino > NodeMCU-32s).

seleccion_modulo

  1. Conecte el modulo NodeMCU-32S al PC.

  2. Seleccione el puerto.

seleccion_puerto

  1. En la sección de ejemplos (examples) busque los ejemplos relacionados con el NodeMCU-32S (Examples for NodeMCU-32S) y busque el que dice WifiScan,asi: File > Examples > Wifi > WiFiScann)

ejemplo_scan

  1. Compile y descargue el ejemplo a la tarjeta. A diferencia de las otras tarjetas, antes de proceder a la descarga del firmware, en este caso debe dejar presionado el boton 1OO de la tarjeta y liberarlo apenas aparezca el mensaje Connecting... en los mensajes de la consola de descarga (Para mas infromación ver: Getting Started with the ESP32 Development Board):

conexion

  1. Probar el ejemplo configurando la terminal serial en mismo valor que aparece en el codigo del programa (115200 para este caso). Si todo esta bien, saldrá en el monitor serial la información de las redes Wi-Fi disponibles tal y como se muestra a continuación:

scaneo

Librerias Wifi

Para hacer posible una conexión empleando Wifi, es necesario contar con un Access Point (AP). Un AP es un dispositivo que permite la conexión de dispositivos Wi-Fi a una red cableada tal y como se muestra en la siguiente figura:

AP_connection

Para permitir la conexión de una placa Arduino a un red wifi se emplea el Arduino WiFi. Esto es posible gracias a la libreria WiFi (link) (la cual viene incluida en el Arduino IDE). A continuación se muestran las clases de mayor uso de esta libreria.

Clase WiFi

La clase WiFi inicializa la biblioteca de ethernet y la configuración de red. La siguiente tabla muestra algunos de los principales métodos:

MétodoDescripciónSintaxis
WiFi.begin()Inicializa la configuración de red de la biblioteca WiFi y proporciona el estado actualWiFi.begin();
WiFi.begin(ssid);
WiFi.begin(ssid, pass);
WiFi.disconnect()Desconecta la placa WiFi de la red actual.WiFi.disconnect();
WiFi.status()Devuelve el estado de la conexión (WL_CONNECTED, WL_CONNECTION_LOST, WL_DISCONNECTED y WL_CONNECT_FAILED entre otros).WiFi.status();

Para mayor información puede consultar:

  1. Arduino WiFi library
  2. ESP8266 Arduino Core’s
  3. ESP8266 Arduino Core’s en español

Clase IPAddress

La clase IPAddress proporciona información sobre la configuración de la red. La siguiente tabla muestra los métodos de la clase Wifi que son empleados con esta clase:

MétodoDescripciónSintaxis
WiFi.localIP()Obtiene la dirección IP de la placa WiFi.WiFi.localIP();
WiFi.subnetMask()Obtiene la mascara de subred de la placa WiFi.WiFi.subnetMask();
WiFi.gatewayIP()Obtiene la dirección IP de la puerta de enlace de la placa WiFi.WiFi.gatewayIP();

Clase Server

La clase Server crea servidores que pueden enviar y recibir datos de clientes conectados (programas que se ejecutan en otras computadoras o dispositivos). Esta clase, es la clase base de Wifi Server. Para su instanciación se emplea el siguiente constructor:

ClaseDescripciónSintaxis del constructor
WiFiServerCrea un servidor que escucha las conexiones entrantes en el puerto especificado.Server(port);

A continuación se resumen algunos de los principales métodos asociados a esta clase.

MétodoDescripciónSintaxis
begin()Le dice al servidor que comience a escuchar las conexiones entrantes.server.begin();

Clase Client

La clase client crea clientes que pueden conectarse a servidores y enviar y recibir datos.

MétodoDescripciónSintaxis
WiFiClient()Crea un cliente que puede conectarse a una dirección IP y un puerto de Internet especificados como se define en client.connect().WiFiClient();
connected()Determina si el cliente está conectado o noclient.connected();

Debido al uso masivo del ESP8266, se creo una libreria WiFi (la cual trata de conservar la filosofia de la libreria original para Arduino) para esta plataforma. Para consultar mas sobre esta libreria puede dirigirse a la sección del ESP8266WiFi library API de ESP8266 Arduino Core.

Referencias