NXT目前可以選擇的無線應用,除了內建的藍芽功能之外,透過周邊廠商所提供的裝置,也可以使用IR、Wi-Fi、XBee等。
其中XBee具有操作簡單、低耗電的優點,實務上也常被應用在無線感應器方面。
所以在本次測試中將會用來建立與Arduino之間的無線通訊,使用的模組是通稱為Series 1的XBee 802.15.4,只需透過簡單的設定,雙方就可以進行非同步序列通訊。
(Arduino wirelessComm with NXT-01)
其中XBee具有操作簡單、低耗電的優點,實務上也常被應用在無線感應器方面。
所以在本次測試中將會用來建立與Arduino之間的無線通訊,使用的模組是通稱為Series 1的XBee 802.15.4,只需透過簡單的設定,雙方就可以進行非同步序列通訊。
(Arduino wirelessComm with NXT-01)
硬體配備
NXT 端:
Dexter的NXTBee是作為NXT使用RS485通訊的無線傳輸配接器,之前曾用來測試過兩部NXT之間的無線通訊 (NXT High speed communication over XBEE),而同樣也可以運用在對於與Arduino之間的無線傳輸。
Dexter的NXTBee是作為NXT使用RS485通訊的無線傳輸配接器,之前曾用來測試過兩部NXT之間的無線通訊 (NXT High speed communication over XBEE),而同樣也可以運用在對於與Arduino之間的無線傳輸。
Arduino端:
Arduino UNO可用於配接XBee的 Shield有:DFRobot的IO EXPANSION SHIELD FOR ARDUINO或Arduino官版的Arduino wireless shield,兩者功能相同,而在這次測試中所使用的為後者,它多了切換成為USB-To-Serial模式的開關,搭配Arduino主板可以取代XBee USB-To-Serial converter連接PC使用。
(Arduino wirelessComm with NXT-02)
上圖中在板子的右上角有一個switch,當正常與Arduino工作時須在MICRO位置,但若要由PC連接使用或進行XBee設定時,則須移至USB位置,並先上載一個不執行任何工作的sketch:
void setup () { }
void loop () { }
詳細可以參考Arduino官網對於Switch Settings的說明。
Arduino UNO可用於配接XBee的 Shield有:DFRobot的IO EXPANSION SHIELD FOR ARDUINO或Arduino官版的Arduino wireless shield,兩者功能相同,而在這次測試中所使用的為後者,它多了切換成為USB-To-Serial模式的開關,搭配Arduino主板可以取代XBee USB-To-Serial converter連接PC使用。
(Arduino wirelessComm with NXT-02)
上圖中在板子的右上角有一個switch,當正常與Arduino工作時須在MICRO位置,但若要由PC連接使用或進行XBee設定時,則須移至USB位置,並先上載一個不執行任何工作的sketch:
void setup () { }
void loop () { }
詳細可以參考Arduino官網對於Switch Settings的說明。
NXT與Arduino的XBee通訊設定
XBee是建立連接裝置之間的無線序列通訊,功能就如同Modem。
NXT的非同步序列通訊為使用第四個Sensor port的RS485功能,而Arduino則為Serial communication,兩者不同的通訊方式對於XBee設定有些許差異,但基本的網路設定規則是一致,以下將作說明:
NXT的非同步序列通訊為使用第四個Sensor port的RS485功能,而Arduino則為Serial communication,兩者不同的通訊方式對於XBee設定有些許差異,但基本的網路設定規則是一致,以下將作說明:
軟體 設定及 連接介面:
(1) 設定軟體下載:設定XBee或更新XBee Firmware,最簡便的方式是下載DiGi原廠網站的X-CTU軟體,以GUI介面進行設定,以下會簡單介紹設定的程序。
(2) 連接XBee至PC:在啟動X-CTU前,需先以XBee USB-To-Serial Converter配接器連接XBee模組至PC,或若使用Arduino wireless shield,則如前面所說明須切換至USB Mode。
(3) 連線測試:當連接XBee至PC並完成驅動程式安裝之後,會於PC產生所對應的COM Port。接著啟動X-CTU,選擇此COM Port並設定通訊協定,而在此時,可點選”Test/Query”按鈕,測試是否可正常連接XBee模組。
(4) XBee Firmware更新下載:在以X-CTU設定XBee前,建議先下載更新XBee Firmware至最新版本,避免可能有些功能無法設定使用。
※更新方式:切換至”Modem Configuration”頁籤,點選”Download new versions...”按鈕,出現對話框之後,點選”Web”按鈕。
(X-CTU_ModemConfig_DownloadNewVersions)
XBee網路設定(1) 設定軟體下載:設定XBee或更新XBee Firmware,最簡便的方式是下載DiGi原廠網站的X-CTU軟體,以GUI介面進行設定,以下會簡單介紹設定的程序。
(2) 連接XBee至PC:在啟動X-CTU前,需先以XBee USB-To-Serial Converter配接器連接XBee模組至PC,或若使用Arduino wireless shield,則如前面所說明須切換至USB Mode。
(3) 連線測試:當連接XBee至PC並完成驅動程式安裝之後,會於PC產生所對應的COM Port。接著啟動X-CTU,選擇此COM Port並設定通訊協定,而在此時,可點選”Test/Query”按鈕,測試是否可正常連接XBee模組。
(4) XBee Firmware更新下載:在以X-CTU設定XBee前,建議先下載更新XBee Firmware至最新版本,避免可能有些功能無法設定使用。
※更新方式:切換至”Modem Configuration”頁籤,點選”Download new versions...”按鈕,出現對話框之後,點選”Web”按鈕。
(X-CTU_ModemConfig_DownloadNewVersions)
要讓XBee能夠相互通訊的網路設定基本規則為:(1)頻道須相同、(2)網路ID須相同以及(3)接收端的位址須正確。而在X-CTU所提供的預設Profile幾乎可以完全符合這些要求,只需對(3)接收端位址的設定,依需求做調整。
同時,NXT與Arduino所選擇的Profile也不一樣,這是因應NXT RS485的通訊需求。
以下為對於連接Arduino與NXT的設定方式,分別說明:
以下為對於連接Arduino與NXT的設定方式,分別說明:
連接於Arduino端的XBee設定:
(A) 於”Modem Configuration”頁籤,點選”Read”按鈕,會讀出並顯示XBee目前Firmware的設定值。
(B) 於”Modem: XBEE”欄選擇”XB24”,於”Function Set”欄選擇”XBEE 802.15.4”。
(C) 檢視下圖紅色框內的5個設定值,第1與2個值分別為頻道(”CH”)與網路ID(”ID”)。
第5個”MY”表示本身16 bits的位址值,預設值為”0”,建議應將每一個XBee設成唯一值,有利於網路管理。
第4個”DL”表示所要傳送對象的”MY”位址值,當接收端的”MY”等於傳送端的”DL”時才能接收信號,而若”DL”設定為”FFFF”時,表示為廣播信號,任何相同頻道(”CH”)與網路ID(”ID”)的接收端,都能夠收取信號。
(D) 設定完成之後,須點選”Write”按鈕,將設定值存入XBee中。
(X-CTU_ModemConfig_Broadcasting.jpg)
連接於NXT端的XBee設定:(A) 於”Modem Configuration”頁籤,點選”Read”按鈕,會讀出並顯示XBee目前Firmware的設定值。
(B) 於”Modem: XBEE”欄選擇”XB24”,於”Function Set”欄選擇”XBEE 802.15.4”。
(C) 檢視下圖紅色框內的5個設定值,第1與2個值分別為頻道(”CH”)與網路ID(”ID”)。
第5個”MY”表示本身16 bits的位址值,預設值為”0”,建議應將每一個XBee設成唯一值,有利於網路管理。
第4個”DL”表示所要傳送對象的”MY”位址值,當接收端的”MY”等於傳送端的”DL”時才能接收信號,而若”DL”設定為”FFFF”時,表示為廣播信號,任何相同頻道(”CH”)與網路ID(”ID”)的接收端,都能夠收取信號。
(D) 設定完成之後,須點選”Write”按鈕,將設定值存入XBee中。
(X-CTU_ModemConfig_Broadcasting.jpg)
相較於設定Arduino端(A) - (D) 的四項步驟,連接於NXT端的設定方式只有在(B)項不一樣,差異在於對RS485通訊的支援:
(B) 於”Modem: XBEE”欄同樣選擇”XB24”,於”Function Set”欄則須選擇”XBEE 802.15.4 RS485 ADAPTER”。
(X-CTU_ModemConfig_Networking)
接著,下拉至”I/O Settings”參數設定處,修改”D7-DIO7 Configuration”設定值為”7-RS485 TX ENABLE HI”。
(X-CTU_ModemConfig_IO Settings)
而事實上,對於NXT端XBee的設定方式,主要是參考Dexter這一篇的NXTBee產品說明文件,內容資料相當的清楚與完整。
(B) 於”Modem: XBEE”欄同樣選擇”XB24”,於”Function Set”欄則須選擇”XBEE 802.15.4 RS485 ADAPTER”。
(X-CTU_ModemConfig_Networking)
接著,下拉至”I/O Settings”參數設定處,修改”D7-DIO7 Configuration”設定值為”7-RS485 TX ENABLE HI”。
(X-CTU_ModemConfig_IO Settings)
而事實上,對於NXT端XBee的設定方式,主要是參考Dexter這一篇的NXTBee產品說明文件,內容資料相當的清楚與完整。
測試案例
測試過程,使用NXT連接NXTBee作為接收來自Arduino UNO + Arduino Wireless Shield + XBee module所傳送的字串訊息,並顯示在NXT螢幕上。
兩邊所使用的程式與在”連接NXT與RS485通訊”一樣,只有拿掉Arduino的Sketch中對MAX 485 CPA晶片DE(Output enable)腳位的設定,而將有線傳輸轉換成無線通訊。
兩邊所使用的程式與在”連接NXT與RS485通訊”一樣,只有拿掉Arduino的Sketch中對MAX 485 CPA晶片DE(Output enable)腳位的設定,而將有線傳輸轉換成無線通訊。
沒有留言:
張貼留言