- https://randomnerdtutorials.com/getting-started-with-esp32/
- https://randomnerdtutorials.com/esp32-pinout-reference-gpios/
- https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
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.
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:
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.
- Station (STA): En este caso, el ESP32 se conecta, como cualquier otro dispositivo, a la red Wi-Fi a traves de un Access Point.
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:
- Abra el Arduino IDE.
- Seleccione la placa (Tools > Board > ESP32 Arduino > NodeMCU-32s).
-
Conecte el modulo NodeMCU-32S al PC.
-
Seleccione el puerto.
- 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)
- 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):
- 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:
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:
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:
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étodo | Descripción | Sintaxis |
---|---|---|
WiFi.begin() |
Inicializa la configuración de red de la biblioteca WiFi y proporciona el estado actual | WiFi.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(); |
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étodo | Descripción | Sintaxis |
---|---|---|
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(); |
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:
Clase | Descripción | Sintaxis del constructor |
---|---|---|
WiFiServer |
Crea 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étodo | Descripción | Sintaxis |
---|---|---|
begin() |
Le dice al servidor que comience a escuchar las conexiones entrantes. | server.begin(); |
La clase client crea clientes que pueden conectarse a servidores y enviar y recibir datos.
Método | Descripción | Sintaxis |
---|---|---|
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 no | client.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.
Para mayor información puede consultar:
- https://docs.espressif.com/projects/esp-idf/en/latest/esp32/
- https://www.espressif.com/en/products/socs/esp32
- https://docs.platformio.org/en/stable/boards/espressif32/nodemcu-32s.html
- https://docs.espressif.com/projects/arduino-esp32/en/latest/
- https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
- https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/index.html
- https://espressif.github.io/arduino-esp32/
- https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html
- https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html*
- https://docs.espressif.com/projects/arduino-esp32/en/latest/api/wifi.html
- https://pygmalion.tech/tutoriales/robotica-basica/tutorial-camara-termica-amg8833/
- https://pygmalion.tech/tutoriales/
- https://esp32.com/
- https://www.espressif.com/en/products/socs/esp32/resources
- https://github.com/espressif
- https://blynk.io/
- https://docs.espressif.com/projects/arduino-esp32/en/latest/libraries.html
- https://github.com/UdeA-IoT/actividad-6
- https://github.com/tamberg/fhnw-iot