🛠 Scan des réseaux Wi-Fi
Objetivos
Descubrir la pila Wi-Fi del ESP32 (doble núcleo Xtensa, radio de 2,4 GHz integrada) realizando un escaneo pasivo de las redes circundantes. Al finalizar, sabrás inicializar el modo estación, lanzar un escaneo e interpretar el SSID, la RSSI y el canal de cada red.
Material
- 1 tarjeta ESP32 DevKit v1 (módulo ESP32-WROOM-32, flash de 4 MB)
- 1 cable micro-USB (de datos, no solo de carga)
- Un PC con un puerto serie
Código completo
#include <WiFi.h>
void setup {
Serial.begin(115200);
delay(500);
WiFi.mode(WIFI_STA); // mode station : indispensable avant un scan
WiFi.disconnect; // s'assure qu'aucune connexion ne gêne le scan
delay(200);
Serial.println(F("Scan en cours..."));
}
void loop {
int n = WiFi.scanNetworks;
if (n == 0) {
Serial.println(F("Aucun reseau trouve"));
} else {
Serial.printf("%d reseau(x) :\n", n);
for (int i = 0; i < n; i++) {
Serial.printf(" [%d] %-20s RSSI %d dBm canal %d\n",
i, WiFi.SSID(i).c_str, WiFi.RSSI(i), WiFi.channel(i));
}
}
delay(5000);
}
Verificación esperada
La consola a 115200 baudios muestra «Scan en curso...» y luego una lista de redes con, para cada una, el nombre (SSID), la potencia de la señal (RSSI entre aproximadamente -40 y -90 dBm) y el canal (1 a 13). Acercar o alejar la tarjeta hace variar la RSSI. El escaneo se repite cada 5 segundos.
Errores frecuentes
- «Failed to connect to ESP32: Invalid head of packet»: mantén pulsado el botón BOOT durante el primer segundo del flasheo, o verifica el puerto COM y el tipo de tarjeta seleccionado.
- Brown-out detectado (reinicios en bucle): el escaneo Wi-Fi provoca picos de corriente; alimenta la tarjeta mediante un buen cable, no un hub USB desgastado.
- Lista vacía aunque el router esté encendido: se olvidó WiFi.mode(WIFI_STA) antes del escaneo.
- Escaneo percibido como muy lento: barre los 13 canales; usa WiFi.scanNetworks(true) en modo asíncrono para no bloquear loop.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino