NXT High Speed Communication
NXT Firmware通訊模組(Comm module)支援的功能包含:Bluetooth、USB以及High Speed Communication,其中High Speed Communication指的是使用第四個Input port 以RS485進行全雙工的非同步傳輸通訊,用法則是以NXT Cable串接兩部NXT來進行雙向的資料傳輸。
RS485應用案例
Daniele Benedettelli在“Creating Cool MINDSTORMS NXT Robots”(2008 Apress)書中第八章的 JohnNXT機器人,在這個專案中共分成:機器人本體及遙控端兩部分,由於本體總共配置了6部馬達及5個sensor,所以需要以兩部NXT來進行協力控制,而因為藍芽通訊已經作為遙控端NXT對本體Main NXT傳送指令時所使用,於是本體的兩部NXT就採用High Speed Communication來進行串接溝通。
操作JohnNXT時會由本體的Master NXT接收來自遙控端NXT的藍芽指令,當需要由另一部Slave NXT協力來完成動作時,就會由Main NXT透過Port 4以RS485傳輸指令給Slave去執行所需的功能,而Slave NXT於完成工作之後就會回覆訊息給Main確認遙控端所下達的指令都已經執行完畢,接下來Main就會進入待命狀態準備接收下一個來自遙控端的藍芽指令。
這本書的NXC程式碼可以由官網下載,在Ch8本專案的資料夾裏有High Speed Communication的API程式庫 (HSlib.nxc),當初Danny在寫API時所用的都屬於較低階的NXC函數,所以需要對IO Buffer pointer作控制,而這些技術資料Mindstorms官方並沒有對外提供,一般人可能較不容易掌握確切的用法,還好John Hansen已經在最近版本的Bricxcc中封裝成較容易使用的高階函數,不過NXT需要更新成John Hansen所加持的enhanced firmware,以解除原有官方的功能限制。
Dexter NXTBee
而Dexter的 NXTBee則是提供NXT能夠結合High Speed Communication及XBee無線通訊功能的外接模組,在傳輸的效能與距離方面都有優於藍芽的表現。
使用方式為連接Port 4並透過RS485進行無線非同步序列通訊,相當於取代實體Cable且大大的延伸連線範圍。
使用NXTBee時可以幾乎完全做到無縫切換,也就是說即使目前正以實體Cable進行有線通訊,可隨時接上NXTBee換成無線而不致於在過程中造成連線的中斷,且若切換回有線時也是一樣的穩定與可靠。
至於程式部分只須處理Port 4之RS485初始設定以及資料之傳送與接收控制,完全不須撰寫任何NXTBee相關的程式碼,NXTBee會自動接手無線傳輸工作。
接下來的測試為示範以RS485進行資料傳送與接收的流程,以及展示結合NXTBee的無線通訊能力。
RS485 over XBee應用測試
測試時共使用兩部NXT,分別為Main及Slave,進行的過程為:
1. 首先由Main NXT的畫面選單中選擇顏色指令(“R”、 “G”、 “B”),然後傳送給Slave NXT,之後就會進入等待Slave回覆執行完成指令的狀態。
2. 而Slave會先處於待命狀態並持續監聽是否有來自Main NXT的指令,一旦接收到Main指令時會先閃爍Light sensor燈號三次確認,接著依據指令執行閃爍Color sensor指定顏色燈號10次,完成之後會傳送確認字串“DONE“回覆Main已經執行完畢,然後再度進入待命狀態。
3. 而Main一但接收到Slave字串“DONE“的確認回覆時,會先閃爍Light sensor燈號三次,接下來即可再度接受選單之指令選擇。
沒有留言:
張貼留言