1
1
/*
2
2
* 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.
5
5
*/
6
6
#include " WiFi.h"
7
7
8
8
void setup ()
9
9
{
10
10
Serial.begin (115200 );
11
11
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.
13
13
WiFi.mode (WIFI_STA);
14
14
WiFi.disconnect ();
15
15
delay (100 );
@@ -19,30 +19,68 @@ void setup()
19
19
20
20
void loop ()
21
21
{
22
- Serial.println (" scan start" );
22
+ Serial.println (" Scan start" );
23
23
24
- // WiFi.scanNetworks will return the number of networks found
24
+ // WiFi.scanNetworks will return the number of networks found.
25
25
int n = WiFi.scanNetworks ();
26
- Serial.println (" scan done" );
26
+ Serial.println (" Scan done" );
27
27
if (n == 0 ) {
28
28
Serial.println (" no networks found" );
29
29
} else {
30
30
Serial.print (n);
31
31
Serial.println (" networks found" );
32
+ Serial.println (" Nr | SSID | RSSI | CH | Encryption" );
32
33
for (int i = 0 ; i < n; ++i) {
33
34
// 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 ();
41
76
delay (10 );
42
77
}
43
78
}
44
79
Serial.println (" " );
45
80
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.
47
85
delay (5000 );
48
86
}
0 commit comments