Acabo de recibir el microcontrolador ESP32 DevKitC V2 NodeMCU de AZ-Delivery. Es una placa de desarrollo de bajo coste (9€ en Amazon, transporte incluido, ha llegado en 24 horas, link), bajo voltaje (3,3V) y altas prestaciones:
- Wifi integrado
- Bluetooth dual integrado
- Microprocesador Tensilica Xtensa LX6 a 160 o 240 MHz
- Memoria 520 KiB SRAM
- Doble core


Está fabricado por Espressif Systems (China), fue lanzado en 2016 y es la evolución del ESP8266 al que sustituye. El fabricante final, en mi caso, fue AZ-Delivery de Alemania y viene con los pins ya soldados en la placa pero sin conector. Las etiquetas de identificación de los pines se leen mal (hecho en Alemania?), pero es fácil localizarlos con una foto guía de AZ-Delivery. Ojo con el pin CMD (en rojo) que es un GND (corregido en la placa, pero no en la guía).

I- ARRANQUE
Lo primero que hay que hacer es instalar los drivers de la ESP32 en el IDE de Arduino (si es esa tu elección). Para ello hay que añadir la siguiente dirección (https://dl.espressif.com/dl/package_esp32_index.json) a:
- Arduino / Preferencias / Gestor de URLs Adicionales de Tarjetas.

Una vez añadida la URL para buscar el driver, acudir a:
- Herramientas / Placa / Gestor de Tarjetas

Y escribir en la pestaña de búsqueda ESP32. Darle a buscar. Nos saldrá:

A mi ya me sale instalado, pero tú tendrás que instalarlo. A mi me costó 15 minutos bajar el archivo. No debería tardar más de unos segundos (en teoría), pero bueno. A mi me funcionó bien.
II- PROBAR LA WIFI
Tras conectar el ESP32 con un cable microUSB-USB al comp, arrancamos el ejemplo WifiScan

Código de WiFiScan:
/*
This sketch demonstrates how to scan WiFi networks.
The API is almost the same as with the WiFi Shield library,
the most obvious difference being the different file you need to include:
*/
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);
}
Seleccionamos la placa (ESP32 Dev Module) el puerto (usb), y compilamos + subimos el programa.
Abrimos el Monitor Serie del Arduino IDE:

Y deberíamos ver todas las redes wifi disponibles alrededor de nuestro microcontrolador ESP32:

No te olvides de definir la frecuencia a 115200 baudios (lo especificado en el programa WiFiScan). De otro modo no verás nada en el Serial Monitor.
III- TROUBLSHOOTING Hay dos problemas frecuentes con los que te puedes encontrar: 1. Error: "Failed to connect to ESP32: Timed out waiting for packet header" al intentar subir código a la placa. Hay dos modos de resolverlo, uno temporal y transitorio, el otro permanente. Para el primero (transitorio), hay que presionar permanentemente el botón de "BOOT" en el microcontrolador antes y durante la subida del programa compilado. De no ser así, el ESP32 entra en un modo no receptivo. Hay que realizar este proceso cada vez que subes código a la placa, lo que puede llegar a ser un poco engorroso. La solución permanente pasa por soldar un capacitador electrolítico de 10uF entre el pin E y el GND (link), como explica Randomnerdtutorials (foto tomada de su web).
En resumen: la ESP32 es una placa barata pero muy potente, orientada a desarrolladores, que requiere un poquito más de trabajo en su arranque que una placa Arduino, pero sin grandes problemas. Daremos más información según la vayamos probando.