2012-03-07

還未上市的新版Arduino WiFi Shield初灠

Arduino2011.9Maker Fair中,曾發佈了即將要推出的Arduino WiFi Shield,不過,直到現在都還沒有任何上市的訊息。
最近由Making Things Talk (2nd Edition)這本書Chapter 6. Wireless Communication的章節中,發現了以這個Shield作為WiFi通訊功能的說明,內容附有照片與程式庫運用範例,應該是由Arduino原廠所提供的測試板,剛好可以初灠一下這個即將上市的官版無線網路介面擴充板的功能。

根據書中的內容, WiFi ShieldEthernet Shield有相同的Network Stack,程式庫也一樣具備了Server
ClientClass定義。因此,就如同當初在Maker Fair中對Arduino WiFi Shield描述的一樣,對於原來在Ethernet環境所開發的程式碼,只需稍微修改一下,就可以移轉至WiFi無線網路環境中運作。
WiFi shield連接Arduino也與Ethernet Shield一樣使用SPI介面,並提供有:WEP(含:40-bit128-bit兩種)WPAWPA2等加密方式。
以上這些都是由書中所提到的,並非Arduino正式釋出的最終規格。
API功能
書中的程式範例,說明了部份的API功能在程式庫方面,Arduino sketch與使用Ethernet
Shield
時一樣,也需要Include SPI.h>,同時新增了一個WiFi Shield使用的程式庫<WiFi.h>。

依據書中的說明,WiFi.h同樣定義有ServerClientclass,而在Arduino 1.0新增的DHCPDNSUDP等功能也都可以使用。
在網路初始化程序,在Ethernet.h,至少須提供MAC address作為網路設定:
Ethernet.begin(mac);其餘的IPGatewaysubnet等可以由dhcp取得。
至於WiFi.h則至少須提供SSID以及加密資訊作為初始化設定:
WiFi.begin(ssid, key);
而同樣也可以由dhcp來取得IP
無線網路診斷
在使用電腦或手持裝置的無線網路介面時,都會有提供查詢網路狀態的功能,而WiFi.h也具有診斷網路狀態的工具,以下是書中的範例程式。
l   掃瞄並列示鄰近無線網路的SSIDbyte numSSID = WiFi.scanNetwork(); // Scan nearby networks
for (int cnt=0; cnt<numSSID; cnt++) {
   Serial.print(cnt);
   Serial.print(“. Network: “);
   Serial.println(WiFi.SSID(cnt)); // Print network name
}

l   顯示信號強度
long rssi = WiFi.RSSI();
Serial.print(“RSSI: “);
Serial.println(rssi);

沒有留言:

張貼留言