< >
Home » Arduino库教程 » Arduino库教程-WIfi无线扩展块101-Scan Networks

Arduino库教程-WIfi无线扩展块101-Scan Networks

Scan Networks

  • 本例演示如何用Arduino WiFi扩展板101或MKR1000 浏览 802.11b/g网络。你的Arduino软件(IDE)串口监视器将打印关于开发板和网络的信息。他不用连接到网络

硬件要求

  • Arduino WiFi Shield 101
  • Arduino or Genuino Zero board
    或者
  • MKR1000

电路

  • 数字引脚7被用来作为WiFi Shield 101 和 开发板的握手引脚使用,而不应该被占用。

  • 打开你的Arduino软件(IDE)串口监视器来查看WiFi shield 101能看到的网络。WiFi shield 101可能不能看到和你的电脑一样多的网络。

请输入图片描述
图由 Fritzing 绘制
在上图,Arduino 或 Genuino Zero 开发板应该在堆叠在 WiFi shield上面。

样例代码

/*

 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 <SPI.h>
#include <WiFi101.h>

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 WiFi MAC address:
  printMacAddress();

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void loop() {
  delay(10000);
  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void printMacAddress() {
  // the MAC address of your Wifi shield
  byte mac[6];

  // print your MAC address:
  WiFi.macAddress(mac);
  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);
}

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);
    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));
    Serial.flush();
  }
}

void printEncryptionType(int thisType) {
  // read the encryption type and print out the 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;
  }
}

[Get Code]

更多

  • WiFi library – WiFi101 库的参考网页

  • WiFi Shield – WiFi 扩展板 101 的产品细节

  • MKR1000 – MKR1000 板的产品细节

  • Connect No Encryption: 演示如何连接到一个开放的网络。

  • Connect With WEP: 演示如何连接到用WEP加密的网络。

  • Connect With WPA: 演示如何连接到一个用WPA2个人加密网络。

  • Scan Networks:显示出所有在范围内的无线网络。

  • Simple Web Server WiFi: 通过打开和关闭一个LED来访问这个简单的Web服务器

  • UDP NTP Client: 通过UDP查询网络时间协议(NTP)服务器。

  • WiFi Chat Server: 建立一个简单的聊天服务器。

  • WiFi Web Client: 连接到一个远程服务器。

  • WiFi Web Client Repeating: 反复做HTTP请求到服务器。

  • WiFi Web Server: 通过模拟输入值来服务一个来自WIfi无线扩展块的网页。

  • WiFi Send Receive UDP String: 发送和接收UDP字符串。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino库教程, arduino wifi无线扩展块101, arduino scan networks