🛠 Scan des réseaux Wi-Fi
Objectifs
Découvrir la pile Wi-Fi de l'ESP32 (double cœur Xtensa, radio 2,4 GHz intégrée) en effectuant un scan passif des réseaux environnants. À la fin, vous saurez initialiser le mode station, lancer un scan et interpréter le SSID, le RSSI et le canal de chaque réseau.
Matériel
- 1 carte ESP32 DevKit v1 (module ESP32-WROOM-32, flash 4 MB)
- 1 câble micro-USB (data, pas seulement charge)
- Un PC avec un port série
Code complet
#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 réseau trouve"));
} else {
Serial.printf("%d réseau(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);
}
Vérification attendue
La console à 115200 bauds affiche « Scan en cours... » puis une liste de réseaux avec, pour chacun, le nom (SSID), la puissance du signal (RSSI entre environ -40 et -90 dBm) et le canal (1 à 13). Approcher ou éloigner la carte fait varier le RSSI. Le scan se répète toutes les 5 secondes.
Erreurs fréquentes
- « Failed to connect to ESP32: Invalid head of packet » : maintenir le bouton BOOT pendant la première seconde du flash, ou vérifier le port COM et le type de carte sélectionné.
- Brown-out détecté (redémarrages en boucle) : le scan Wi-Fi provoque des pics de courant ; alimenter via un bon câble, pas un hub USB fatigué.
- Liste vide alors que le routeur est allumé : WiFi.mode(WIFI_STA) oublié avant le scan.
- Scan perçu comme très lent : il balaie les 13 canaux ; utiliser WiFi.scanNetworks(true) en mode asynchrone pour ne pas bloquer loop.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino