/* This example prints the WiFi 101 shield or MKR1000 MAC address, and scans for available WiFi networks using the WiFi 101 shield or MKR1000 board. Every ten seconds, it scans again. It doesn't actually connect to any network, so no encryption scheme is specified. BSSID and WiFi channel are printed Circuit: WiFi 101 shield attached or MKR1000 board This example is based on ScanNetworks created 1 Mar 2017 by Arturo Guadalupi */ #include #include void setup() { //Initialize serial and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue: while (true); } // print your MAC address: byte mac[6]; WiFi.macAddress(mac); Serial.print("MAC: "); printMacAddress(mac); // scan for existing networks: Serial.println(); Serial.println("Scanning available networks..."); listNetworks(); } void loop() { delay(10000); // scan for existing networks: Serial.println("Scanning available networks..."); listNetworks(); } void listNetworks() { // scan for nearby networks: Serial.println("** Scan Networks **"); int numSsid = WiFi.scanNetworks(); if (numSsid == -1) { Serial.println("Couldn't get a WiFi connection"); while (true); } // print the list of networks seen: Serial.print("number of available networks: "); Serial.println(numSsid); // print the network number and name for each network found: for (int thisNet = 0; thisNet < numSsid; thisNet++) { Serial.print(thisNet + 1); Serial.print(") "); Serial.print("Signal: "); Serial.print(WiFi.RSSI(thisNet)); Serial.print(" dBm"); Serial.print("\tChannel: "); Serial.print(WiFi.channel(thisNet)); byte bssid[6]; Serial.print("\t\tBSSID: "); printMacAddress(WiFi.BSSID(thisNet, bssid)); Serial.print("\tEncryption: "); printEncryptionType(WiFi.encryptionType(thisNet)); Serial.print("\t\tSSID: "); Serial.println(WiFi.SSID(thisNet)); Serial.flush(); } Serial.println(); } void printEncryptionType(int thisType) { // read the encryption type and print out the name: switch (thisType) { case ENC_TYPE_WEP: Serial.print("WEP"); break; case ENC_TYPE_TKIP: Serial.print("WPA"); break; case ENC_TYPE_CCMP: Serial.print("WPA2"); break; case ENC_TYPE_NONE: Serial.print("None"); break; case ENC_TYPE_AUTO: Serial.print("Auto"); break; } } void print2Digits(byte thisByte) { if (thisByte < 0xF) { Serial.print("0"); } Serial.print(thisByte, HEX); } void printMacAddress(byte mac[]) { for (int i = 5; i >= 0; i--) { if (mac[i] < 16) { Serial.print("0"); } Serial.print(mac[i], HEX); if (i > 0) { Serial.print(":"); } } Serial.println(); }