/* * 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" #if CONFIG_IDF_TARGET_ESP32 //#define WIFI_PIN GPIO_NUM_4 #define WIFI_PIN GPIO_NUM_27 #elif CONFIG_IDF_TARGET_ESP32S2 #define WIFI_PIN GPIO_NUM_14 #endif void reportMemoryUse(const char * label) { Serial.printf("MEMORY USE AT %s: %u total, %u free, %u max.alloc\r\n", label, ESP.getHeapSize(), ESP.getFreeHeap(), ESP.getMaxAllocHeap()); } void setup() { Serial.begin(115200); #ifdef WIFI_PIN pinMode(WIFI_PIN, OUTPUT); digitalWrite(WIFI_PIN, LOW); #endif reportMemoryUse("setup() before WiFi setup"); // 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"); reportMemoryUse("setup() after WiFi setup"); } void loop() { Serial.println("scan start"); // WiFi.scanNetworks will return the number of networks found #ifdef WIFI_PIN digitalWrite(WIFI_PIN, HIGH); #endif int n = WiFi.scanNetworks(); #ifdef WIFI_PIN digitalWrite(WIFI_PIN, LOW); #endif 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(""); reportMemoryUse("after WiFi scan"); // Wait a bit before scanning again delay(3000); }