/* WiFiEsp example: ScanNetworks This example prints the Wifi shield's MAC address, and scans for available Wifi networks using the Wifi shield. Every ten seconds, it scans again. It doesn't actually connect to any network, so no encryption scheme is specified. For more details see: http://yaab-arduino.blogspot.com/p/wifiesp.html */ #include "WiFiEsp.h" // Emulate Serial1 on pins 6/7 if not present #ifndef HAVE_HWSERIAL1 #include "SoftwareSerial.h" SoftwareSerial Serial1(6, 7); // RX, TX #endif void setup() { // initialize serial for debugging Serial.begin(115200); // initialize serial for ESP module Serial1.begin(9600); // initialize ESP module WiFi.init(&Serial1); // 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 WiFi MAC address printMacAddress(); } void loop() { // scan for existing networks Serial.println(); Serial.println("Scanning available networks..."); listNetworks(); delay(10000); } void printMacAddress() { // get your MAC address byte mac[6]; WiFi.macAddress(mac); // print MAC address char buf[20]; sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]); Serial.print("MAC address: "); Serial.println(buf); } void listNetworks() { // scan for nearby 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); Serial.print(") "); Serial.print(WiFi.SSID(thisNet)); Serial.print("\tSignal: "); Serial.print(WiFi.RSSI(thisNet)); Serial.print(" dBm"); Serial.print("\tEncryption: "); printEncryptionType(WiFi.encryptionType(thisNet)); } } 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_WPA_PSK: Serial.print("WPA_PSK"); break; case ENC_TYPE_WPA2_PSK: Serial.print("WPA2_PSK"); break; case ENC_TYPE_WPA_WPA2_PSK: Serial.print("WPA_WPA2_PSK"); break; case ENC_TYPE_NONE: Serial.print("None"); break; } Serial.println(); }