2011-04-14

NXT High Speed Communication over XBee

NXT High Speed Communication


NXT Firmware通訊模組(Comm module)支援的功能包含:BluetoothUSB以及High Speed Communication,其中High Speed Communication指的是使用第四個Input port RS485進行全雙工的非同步傳輸通訊,用法則是以NXT Cable串接兩部NXT來進行雙向的資料傳輸。


 


RS485應用案例


Daniele BenedettelliCreating Cool MINDSTORMS NXT Robots”(2008 Apress)書中第八章的 JohnNXT機器人,在這個專案中共分成:機器人本體及遙控端兩部分,由於本體總共配置了6部馬達及5sensor,所以需要以兩部NXT來進行協力控制,而因為藍芽通訊已經作為遙控端NXT對本體Main NXT傳送指令時所使用,於是本體的兩部NXT就採用High Speed Communication來進行串接溝通。


操作JohnNXT時會由本體的Master NXT接收來自遙控端NXT的藍芽指令,當需要由另一部Slave NXT協力來完成動作時,就會由Main NXT透過Port 4RS485傳輸指令給Slave去執行所需的功能,而Slave NXT於完成工作之後就會回覆訊息給Main確認遙控端所下達的指令都已經執行完畢,接下來Main就會進入待命狀態準備接收下一個來自遙控端的藍芽指令。


這本書的NXC程式碼可以由官網下載,在Ch8本專案的資料夾裏有High Speed CommunicationAPI程式庫 (HSlib.nxc),當初Danny在寫API時所用的都屬於較低階的NXC函數,所以需要對IO Buffer pointer作控制,而這些技術資料Mindstorms官方並沒有對外提供,一般人可能較不容易掌握確切的用法,還好John Hansen已經在最近本的Bricxcc中封裝成較容易使用的高階函數,不過NXT需要更新成John Hansen所加持的enhanced firmware,以解除原有官方的功能限制。


Dexter NXTBee




Dexter NXTBee則是提供NXT能夠結合High Speed CommunicationXBee無線通訊功能的外接模組,在傳輸的效能與距離方面都有優於藍芽的表現。

使用方式為連接Port 4並透過RS485進行無線非同步序列通訊,相當於取代實體Cable且大大的延伸連線範圍。
使用NXTBee時可以幾乎完全做到無縫切換,也就是說即使目前正以實體Cable進行有線通訊,可隨時接上NXTBee換成無線而不致於在過程中造成連線的中斷,且若切換回有線時也是一樣的穩定與可靠。
至於程式部分只須處理Port 4RS485初始設定以及資料之傳送與接收控制,完全不須撰寫任何NXTBee相關的程式碼,NXTBee會自動接手無線傳輸工作。


接下來的測試為示範以RS485進行資料傳送與接收的流程,以及展示結合NXTBee的無線通訊能力。





RS485 over XBee應用測試


測試時共使用兩部NXT,分別為MainSlave,進行的過程為:


1.          首先由Main NXT的畫面選單中選擇顏色指令(“RGB”),然後傳送給Slave NXT,之後就會進入等待Slave回覆執行完成指令的狀態。


2.          Slave會先處於待命狀態並持續監聽是否有來自Main NXT的指令,一旦接收到Main指令時會先閃爍Light sensor燈號三次確認,接著依據指令執行閃爍Color sensor指定顏色燈號10次,完成之後會傳送確認字串DONE回覆Main已經執行完畢,然後再度進入待命狀態。


3.          Main一但接收到Slave字串DONE的確認回覆時,會先閃爍Light sensor燈號三次,接下來即可再度接受選單之指令選擇。




<Video>


 




 


範例程式:

Main NXT 端程式:RS485Comm-Main.nxc


Slave NXT 端程式:RS485Comm-Slave.nxc



 


結論:


NXTBee雖然傳輸效能優於藍芽,但有安全性的顧慮,很有可能遭受到擷取或干擾,因此在Dexter的部落格中有一篇文章:Setting up a NXTBee Secure Network For Mindstorms NXT教導設定安全網路的方式。



 



沒有留言:

張貼留言