En esta entrada te muestro lo que hice para corregir un error que tenía al momento de trabajar con nuestra Tarjeta de desarrollo ESP32.
Al momento de iniciar con cualquier ejemplo, el monitor serial mostraba el siguiente error:
rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1216 ho 0 tail 12 room 4 load:0x40078000,len:9720 ho 0 tail 12 room 4 load:0x40080400,len:6352 entry 0x400806b8 ets Jun 8 2016 00:22:57
Lo primero que debes hacer es asegurarte que tienes la última versión de la librería configurada dentro de tu IDE Arduino. A la fecha de escribir esta entrada, la versión es 1.0.4. Para esto seguí el tutorial que te brinda el fabricante aquí. Básicamente debes agregar la URL donde se encuentra la tarjetas de Espressif: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Luego, a través del Board Manager debes incluir las tarjetas a tu IDE Arduino. Abre la ventana de «Gestor de tarjetas» (Herramientas / Placa / Gestor de tarjetas…). En el buscador coloca «esp32». Selecciona la opción que dice esp32 by Espressif Systems
y presiona «Instalar». Al final, cierra la ventana.
Selecciona la tarjeta «ESP32 Dev Module» que se encuentra dentro de la categoría «ESP32 Arduino».
Finalmente, en las configuraciones de la tarjeta, debes CAMBIAR la Frecuencia de la Flash «Flash Frequency» a «40Mhz».
En mi caso, con este cambio ya funcionó la tarjeta y pude cargar un programa para escanear las redes WiFi.
#include "WiFi.h" void setup() { Serial.begin(115200); // Set WiFi to station mode and disconnect from an AP if it was previously connected WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.println("Setup done"); } void loop() { Serial.println("scan start"); // WiFi.scanNetworks will return the number of networks found int n = WiFi.scanNetworks(); Serial.println("scan done"); if (n == 0) { Serial.println("no networks found"); } else { Serial.print(n); Serial.println(" networks found"); for (int i = 0; i < n; ++i) { // Print SSID and RSSI for each network found Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*"); delay(10); } } Serial.println(""); // Wait a bit before scanning again delay(5000); }
La salida de este código permite visualizar en el Monitor serial las redes WiFi disponibles.
Referencias:
– esp32.com, «SW_RESET continuous reboot», Disponible en: https://github.com/espressif/arduino-esp32/issues/3033#issuecomment-517065972.