Scan Networks
Displays all WiFi networks in range.
This example scans for 802.11b/g networks with the Arduino WiFi shield. Your
Arduino Software (IDE) serial monitor will print out information about the board
and the networks it can see. It will not connect to a network.
Hardware Required
Arduino WiFi Shield
Shield-compatible Arduino board
Circuit
The WiFi shield uses pins 10, 11, 12, and 13 for the SPI connection to HDG104 module.
Digital pin 4 is used to control the chip select pin on the SD card.
Open your serial monitor to view the networks the WiFi shield can see.
The shield may not see as many networks as your computer.
image developed using Fritzing . For more circuit examples, see the Fritzing project page
In the above image, the board would be stacked below the WiFi shield.
Code
/*H*******************************************************
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.
Circuit:
* WiFi shield attached
created 13 July 2010 by dlf (Metodo2 srl)
modified 21 Junn 2012 by Tom Igoe and Jaymes Dec
********************************************************/
#include
#include
//************************* DEFINES ************************************
//************************* PROTOTYPES ************************************
void printMacAddress();
void listNetworks();
//************************* VARIABLES ************************************
/*F********************************************************************
*
**********************************************************************/
void
setup()
{
Serial.begin(9600);
while( !Serial ) // INITIALIZE SERIAL AND WAIT FOR PORT TO OPEN
{ ; }// WAIT FOR SERIAL PORT TO CONNECT. NEEDED FOR NATIVE USB PORT ONLY
if( WiFi.status() == WL_NO_SHIELD) // CHECK FOR PRESENCE OF SHIELD
{
Serial.println( "WiFi shield not present" );
while( true ); // DON'T CONTINUE
}
String fv = WiFi.firmwareVersion();
if( fv != "1.1.0" )
Serial.println( "Please upgrade the firmware" );
printMacAddress(); // PRINT WiFi MAC ADDRESS
}
/*F********************************************************************
*
**********************************************************************/
void
loop()
{
Serial.println( "Scanning available networks..." );
listNetworks(); // SCAN FOR EXISTING NETWORKS
delay( 10000 );
}
/*F********************************************************************
*
**********************************************************************/
void
printMacAddress()
{
byte mac[6]; // MAC ADDRESS OF YOUR Wifi SHIELD
WiFi.macAddress( mac ); // PRINT YOUR MAC ADDRESS
Serial.print( "MAC: " );
Serial.print( mac[5], HEX );
Serial.print( ":" );
Serial.print( mac[4], HEX );
Serial.print( ":" );
Serial.print( mac[3], HEX );
Serial.print( ":" );
Serial.print( mac[2], HEX );
Serial.print( ":" );
Serial.print( mac[1], HEX );
Serial.print( ":" );
Serial.println( mac[0], HEX );
}
/*F********************************************************************
*
**********************************************************************/
void
listNetworks()
{
Serial.println( "** Scan Networks **" );
int numSsid = WiFi.scanNetworks(); // SCAN FOR NEARBY NETWORKS
if( numSsid == -1 )
{
Serial.println( "Couldn't get a wifi connection" );
while( true );
}
Serial.print( "number of available networks:" );
Serial.println( numSsid ); // PRINT LIST OF NETWORKS SEEN
for( int thisNet = 0; thisNet < numSsid; thisNet++ )
{ // PRINT NETWORK NUMBER AND NAME FOR EACH NETWORK FOUND
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 ) );
}
}
/*F********************************************************************
*
**********************************************************************/
void
printEncryptionType( int thisType )
{
// READ ENCRYPTION TYPE AND PRINT OUT NAME
switch( thisType )
{
case ENC_TYPE_WEP:
Serial.println( "WEP" );
break;
case ENC_TYPE_TKIP:
Serial.println( "WPA" );
break;
case ENC_TYPE_CCMP:
Serial.println( "WPA2" );
break;
case ENC_TYPE_NONE:
Serial.println( "None" );
break;
case ENC_TYPE_AUTO:
Serial.println( "Auto" );
break;
}
}