/* * This sketch demonstrates how to scan WiFi networks. For chips that support 5GHz band, separate scans are done for all bands. * The API is based on the Arduino WiFi Shield library, but has significant changes as newer WiFi functions are supported. * E.g. the return value of `encryptionType()` different because more modern encryption is supported. */ #include "WiFi.h" void setup() { Serial.begin(115200); // Enable Station Interface WiFi.STA.begin(); Serial.println("Setup done"); } void ScanWiFi() { 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"); Serial.println("Nr | SSID | RSSI | CH | Encryption"); for (int i = 0; i < n; ++i) { // Print SSID and RSSI for each network found Serial.printf("%2d", i + 1); Serial.print(" | "); Serial.printf("%-32.32s", WiFi.SSID(i).c_str()); Serial.print(" | "); Serial.printf("%4ld", WiFi.RSSI(i)); Serial.print(" | "); Serial.printf("%2ld", WiFi.channel(i)); Serial.print(" | "); switch (WiFi.encryptionType(i)) { case WIFI_AUTH_OPEN: Serial.print("open"); break; case WIFI_AUTH_WEP: Serial.print("WEP"); break; case WIFI_AUTH_WPA_PSK: Serial.print("WPA"); break; case WIFI_AUTH_WPA2_PSK: Serial.print("WPA2"); break; case WIFI_AUTH_WPA_WPA2_PSK: Serial.print("WPA+WPA2"); break; case WIFI_AUTH_WPA2_ENTERPRISE: Serial.print("WPA2-EAP"); break; case WIFI_AUTH_WPA3_PSK: Serial.print("WPA3"); break; case WIFI_AUTH_WPA2_WPA3_PSK: Serial.print("WPA2+WPA3"); break; case WIFI_AUTH_WAPI_PSK: Serial.print("WAPI"); break; default: Serial.print("unknown"); } Serial.println(); delay(10); } } // Delete the scan result to free memory for code below. WiFi.scanDelete(); Serial.println("-------------------------------------"); } void loop() { Serial.println("-------------------------------------"); Serial.println("Default wifi band mode scan:"); Serial.println("-------------------------------------"); #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2) WiFi.setBandMode(WIFI_BAND_MODE_AUTO); #endif ScanWiFi(); #if CONFIG_SOC_WIFI_SUPPORT_5G // Wait a bit before scanning again. delay(1000); Serial.println("-------------------------------------"); Serial.println("2.4 Ghz wifi band mode scan:"); Serial.println("-------------------------------------"); WiFi.setBandMode(WIFI_BAND_MODE_2G_ONLY); ScanWiFi(); // Wait a bit before scanning again. delay(1000); Serial.println("-------------------------------------"); Serial.println("5 Ghz wifi band mode scan:"); Serial.println("-------------------------------------"); WiFi.setBandMode(WIFI_BAND_MODE_5G_ONLY); ScanWiFi(); #endif // Wait a bit before scanning again. delay(10000); }