2016年8月2日 星期二

realtek scan wifi sample

http://www.amebaiot.com/ameba-arduino-scan-wifi/




範例說明
這個範例裡,我們使用Ameba來檢測周圍的WiFi訊號,並將檢測到WiFi的名稱,加密方式,信號強度等信息打印出來。
首先先確定天線已經接上,
接著確定板子是 Ameba, “Tools” -> “Board” -> “Arduino Ameba”

然後打開 Scan Networks 的範例, “File” -> “Examples” -> “AmebaWiFi” -> “ScanNetworks” :

上傳程式碼之後,按下Ameba的Reset按鈕, 這時候會看到**Scan Networks**下會有搜索到WiFi的數目以及每一個WiFi的訊息。




程式碼說明
1.首先使用的是顯示Ameba自己的物理地址WiFi.macAddress(mac):
https://www.arduino.cc/en/Reference/WiFiMACAddress

2.然後開始搜索周圍WiFi環境的WiFi.scanNetworks()
https://www.arduino.cc/en/Reference/WiFiScanNetworks
3.在打印WiFi具體訊息時使用到的有:
4.顯示WiFi的名稱WiFi.SSID(thisNet):
https://www.arduino.cc/en/Reference/WiFiSSID
5.顯示WiFi的訊號強度WiFi.RSSI(thisNet):
https://www.arduino.cc/en/Reference/WiFiRSSI
6.顯示WiFi的加密方式WiFi.encryptionType(thisNet):
https://www.arduino.cc/en/Reference/WiFiEncryptionType
與Arduino的差異
Arduino在完成WiFi的操作時,需要另外使用WiFi Shield來作為WiFi模塊,因此在使用WiFi是需要#include 來使用SPI與WiFi模塊進行通訊。
但是Ameba自身就具有WiFi模塊的功能,因此,不需要#include 。若想要使用Arduino的範例,要先刪掉這一項。



setup(){


printMacAddress();
}

重點是copy  WiFi.macAddress(mac);

然後把答案放到 mac 這個 byte array


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);
}


接下來看 loop

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



重點就是呼叫了    listNetworks(),  接下來看 listNetworks()



呼叫WiFi.scanNetworks() 得到ssid 的 num

然後用一個loop  ...把所有的ssid 都掃出來

WiFi.SSID(thisNet) 會得到ssid...

WiFi.RSSI(thisNet) 會得到訊號的強度

WiFi.encryptionTypeEx(thisNet) 會得到加密的方式

WiFi.encryptionType(thisNet)    會得到加密的方式

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("\tEncryptionRaw: ");
    printEncryptionTypeEx(WiFi.encryptionTypeEx(thisNet));
    Serial.print("\tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
  }
}




沒有留言:

張貼留言