11/*
22 * This sketch demonstrates how to scan WiFi networks.
3- * The API is almost the same as with the WiFi Shield library,
4- * the most obvious difference being the different file you need to include:
3+ * The API is based on the Arduino WiFi Shield library, but has significant changes as newer WiFi functions are supported.
4+ * E.g. the return value of `encryptionType()` different because more modern encryption is supported.
55 */
66#include "WiFi.h"
77
88void setup()
99{
1010 Serial.begin(115200);
1111
12- // Set WiFi to station mode and disconnect from an AP if it was previously connected
12+ // Set WiFi to station mode and disconnect from an AP if it was previously connected.
1313 WiFi.mode(WIFI_STA);
1414 WiFi.disconnect();
1515 delay(100);
@@ -19,30 +19,68 @@ void setup()
1919
2020void loop()
2121{
22- Serial.println("scan start");
22+ Serial.println("Scan start");
2323
24- // WiFi.scanNetworks will return the number of networks found
24+ // WiFi.scanNetworks will return the number of networks found.
2525 int n = WiFi.scanNetworks();
26- Serial.println("scan done");
26+ Serial.println("Scan done");
2727 if (n == 0) {
2828 Serial.println("no networks found");
2929 } else {
3030 Serial.print(n);
3131 Serial.println(" networks found");
32+ Serial.println("Nr | SSID | RSSI | CH | Encryption");
3233 for (int i = 0; i < n; ++i) {
3334 // Print SSID and RSSI for each network found
34- Serial.print(i + 1);
35- Serial.print(": ");
36- Serial.print(WiFi.SSID(i));
37- Serial.print(" (");
38- Serial.print(WiFi.RSSI(i));
39- Serial.print(")");
40- Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
35+ Serial.printf("%2d",i + 1);
36+ Serial.print(" | ");
37+ Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
38+ Serial.print(" | ");
39+ Serial.printf("%4d", WiFi.RSSI(i));
40+ Serial.print(" | ");
41+ Serial.printf("%2d", WiFi.channel(i));
42+ Serial.print(" | ");
43+ switch (WiFi.encryptionType(i))
44+ {
45+ case WIFI_AUTH_OPEN:
46+ Serial.print("open");
47+ break;
48+ case WIFI_AUTH_WEP:
49+ Serial.print("WEP");
50+ break;
51+ case WIFI_AUTH_WPA_PSK:
52+ Serial.print("WPA");
53+ break;
54+ case WIFI_AUTH_WPA2_PSK:
55+ Serial.print("WPA2");
56+ break;
57+ case WIFI_AUTH_WPA_WPA2_PSK:
58+ Serial.print("WPA+WPA2");
59+ break;
60+ case WIFI_AUTH_WPA2_ENTERPRISE:
61+ Serial.print("WPA2-EAP");
62+ break;
63+ case WIFI_AUTH_WPA3_PSK:
64+ Serial.print("WPA3");
65+ break;
66+ case WIFI_AUTH_WPA2_WPA3_PSK:
67+ Serial.print("WPA2+WPA3");
68+ break;
69+ case WIFI_AUTH_WAPI_PSK:
70+ Serial.print("WAPI");
71+ break;
72+ default:
73+ Serial.print("unknown");
74+ }
75+ Serial.println();
4176 delay(10);
4277 }
4378 }
4479 Serial.println("");
4580
46- // Wait a bit before scanning again
81+ // Delete the scan result to free memory for code below.
82+ WiFi.scanDelete();
83+
84+ // Wait a bit before scanning again.
4785 delay(5000);
4886}
0 commit comments