(All Devices)
2012-03-21
以瀏覽器控制Mindstorms NXT
若要以瀏覽器來控制NXT,會需要透過Web Server處理來自Client端的HTTP Request,主要是解析HTTP Header中對NXT的控制資訊。 而能使用瀏覽器的最大優點在於不限裝置,只要能支援TCP/IP,則無論是電腦或蘋果(iOS)還是芒果(Windows Mobile7.5),都能用來控制NXT,而且只需要Arduino開發環境,也不需要XCode或Visual Studio,簡單又容易。
(All Devices)
(All Devices)
標籤:
arduino Notes
2012-03-07
還未上市的新版Arduino WiFi Shield初灠
Arduino於2011.9在Maker Fair中,曾發佈了即將要推出的Arduino WiFi Shield,不過,直到現在都還沒有任何上市的訊息。
最近由Making Things Talk (2nd Edition)這本書Chapter 6. Wireless Communication的章節中,發現了以這個Shield作為WiFi通訊功能的說明,內容附有照片與程式庫運用範例,應該是由Arduino原廠所提供的測試板,剛好可以初灠一下這個即將上市的官版無線網路介面擴充板的功能。
根據書中的內容, WiFi Shield與Ethernet Shield有相同的Network Stack,程式庫也一樣具備了Server、Client等Class定義。因此,就如同當初在Maker Fair中對Arduino WiFi Shield描述的一樣,對於原來在Ethernet環境所開發的程式碼,只需稍微修改一下,就可以移轉至WiFi無線網路環境中運作。
根據書中的內容, WiFi Shield與Ethernet Shield有相同的Network Stack,程式庫也一樣具備了Server、Client等Class定義。因此,就如同當初在Maker Fair中對Arduino WiFi Shield描述的一樣,對於原來在Ethernet環境所開發的程式碼,只需稍微修改一下,就可以移轉至WiFi無線網路環境中運作。
而WiFi shield連接Arduino也與Ethernet Shield一樣使用SPI介面,並提供有:WEP(含:40-bit與128-bit兩種)、WPA、WPA2等加密方式。
以上這些都是由書中所提到的,並非Arduino正式釋出的最終規格。
API功能
書中的程式範例,說明了部份的API功能。在程式庫方面,Arduino sketch與使用Ethernet
Shield時一樣,也需要Include <SPI.h>,同時新增了一個WiFi Shield使用的程式庫<WiFi.h>。
依據書中的說明,WiFi.h同樣定義有Server、Client等class,而在Arduino 1.0新增的DHCP、DNS、UDP等功能也都可以使用。
書中的程式範例,說明了部份的API功能。在程式庫方面,Arduino sketch與使用Ethernet
Shield時一樣,也需要Include <SPI.h>,同時新增了一個WiFi Shield使用的程式庫<WiFi.h>。
依據書中的說明,WiFi.h同樣定義有Server、Client等class,而在Arduino 1.0新增的DHCP、DNS、UDP等功能也都可以使用。
在網路初始化程序,在Ethernet.h,至少須提供MAC address作為網路設定:
Ethernet.begin(mac);其餘的IP、Gateway、subnet等可以由dhcp取得。
至於WiFi.h則至少須提供SSID以及加密資訊作為初始化設定:
WiFi.begin(ssid, key);而同樣也可以由dhcp來取得IP。
至於WiFi.h則至少須提供SSID以及加密資訊作為初始化設定:
WiFi.begin(ssid, key);而同樣也可以由dhcp來取得IP。
無線網路診斷
在使用電腦或手持裝置的無線網路介面時,都會有提供查詢網路狀態的功能,而WiFi.h也具有診斷網路狀態的工具,以下是書中的範例程式。
在使用電腦或手持裝置的無線網路介面時,都會有提供查詢網路狀態的功能,而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
}
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);
long rssi = WiFi.RSSI();
Serial.print(“RSSI: “);
Serial.println(rssi);
標籤:
arduino Notes
2012-03-04
使用Mindsensors的Magic Wand來呈現LED特效
Mindsensors的Magic Wand是依據Extreme NXT這本書中的I2C專題所製作的套件,原設計是藉由連接在一個搖擺機構以及控制8顆LED的輸出作出能夠顯示圖案的”視覺暫留”(POV)效果。
兩年多以前,曾經由Mr. Deepak提供了一組作測試。
(加油)
(Lego)
兩年多以前,曾經由Mr. Deepak提供了一組作測試。
(加油)
(Lego)
控制方式
控制Magic Wand 8顆LED開與關的方式是透過I2C寫入8 個bits(1個Byte)的資料到裝置位址 (0x70) 中。
每個bit(b0 ~ b7)分別對應一顆LED(D0 ~ D7),當bit值為0時會ON該顆LED,1則為OFF。所以,若寫入byte值為0時,8顆LED全亮,而0xFF時則全部OFF。
控制Magic Wand 8顆LED開與關的方式是透過I2C寫入8 個bits(1個Byte)的資料到裝置位址 (0x70) 中。
每個bit(b0 ~ b7)分別對應一顆LED(D0 ~ D7),當bit值為0時會ON該顆LED,1則為OFF。所以,若寫入byte值為0時,8顆LED全亮,而0xFF時則全部OFF。
視覺化應用
按照前面的控制方式,就可以運用Magic Wand來作為NXT的視覺化輸出,例如,當使用超音波感應器偵測障礙物時,以顯示的LED數目來表示接近物體的程度,愈近LED亮的愈多,非常的直覺與有提醒效果。
按照前面的控制方式,就可以運用Magic Wand來作為NXT的視覺化輸出,例如,當使用超音波感應器偵測障礙物時,以顯示的LED數目來表示接近物體的程度,愈近LED亮的愈多,非常的直覺與有提醒效果。
LED特效
另外,還可以用來製作一些有趣的特效,以下影片共展示了三種效果:
●霹靂車(Knight Rider)
●煙火(Firework)
●心跳(Heart Beats)
另外,還可以用來製作一些有趣的特效,以下影片共展示了三種效果:
●霹靂車(Knight Rider)
●煙火(Firework)
●心跳(Heart Beats)
((Video))
標籤:
NXT notes
訂閱:
文章 (Atom)