☆汪小慶
(江蘇省江都中學,江蘇江都 225200)
藍牙是無線數據和語音傳輸的開放式標準,它能夠將各種通信設備、計算機及其終端設備、各種數字數據系統、甚至家用電器采用無線方式聯接起來。由于藍牙采用無線接口來代替有線電纜連接,具有很強的移植性,并且適用于多種場合,加上該技術功耗低、對人體危害小,而且應用簡單、容易實現。筆者將在此討論VB2005與樂高NXT通過藍牙通信以實現計算機直接控制NXT以供共享。
在新一輪教育改革大潮的推動下,機器人走進課堂已是大勢所趨,全國很多中小學校都建立了機器人實驗室,大學也不例外。在眾多機器人產品中,樂高教育機器人系列產品走在了教育機器人的前列,尤其是樂高新一代NXT控制器,其性能比以前的RCX有了很大的提高。計算機與RCX通信是借助Active x控件通過計算機串口用紅外線發射,這種通信有諸多不便,RCX不穩定,而且對接收方沒有限制,一個信息可以發給多個RCX,造成相互干擾。NXT在這些方面有很大的改進。NXT可以建立有標記的路徑(只有符合標記的NXT才能建立聯系),藍牙通過USB發射信息,比串口紅外線穩定。
(1)計算機。在計算機上要安裝Visual Basic 2005,在Windows應用程序窗體下,加載一個工具箱中的串行端口組件SerialPort(如圖1)。

圖1

圖2
(2)NXT設置。首先要將NXT的藍牙功能打開,屏幕顯示圖標,表示NXT藍牙已打開并連接到其他藍牙設備上。
(3)建立計算機與NXT的藍牙聯系。將USB藍牙適配器插入計算機的USB口(一般是免驅動),在狀態欄下打開藍牙設備,點擊“添加”按鈕,計算機會找到附近的藍牙設備(如圖2)。send開通藍牙功能的NXT。
注意:在建立聯系的過程中一定要設置密碼,可以使用默認的密碼1234,這樣與NXT的默認密碼相同。設置密碼后就是單一通道了,如果一臺計算機要與幾個NXT通信,可以將其他的NXT設置成相同的名字和相同的密碼即可。查看COM端口,有一個傳出口和一個傳入口(如圖3)。

圖3
如果希望通過VB2005程序控制NXT,首先需要通過VB2005的程序與NXT建立聯系,然后才能控制NXT執行其他命令。建立通信聯絡的代碼如下:

目前,我國高速公路上交通事故時有發生,一旦發生事故,將使整個公路癱瘓,造成長時間的堵車。那能不能有一種創新設計,當事故發生后,后續車輛可以繞開事故現場繼續通行,并對事故區域的車輛發一個提示信息,在當前路段發生車禍,小心駕駛,并附上道路處理中心的處理措施。
針對以上的情況,可以用樂高NXT機器人來模擬這一創新項目。解決方案為:在每臺車上配置一個小型顯示器,用來接收顯示提示信息。在高速公路中間的隔離帶上安裝一定數量的護欄開啟裝置,當車禍發生后,救援指揮中心確定事故位置,打開當地位置的護欄,讓后續車輛越過護欄,走對面車道的超車道,對面的車輛走行車道。同時向該區域內的車輛發送信息,前方車禍,請謹慎駕駛。具體項目實施分兩步:打開護欄,釋放交通指揮標志;發送信息。
(1)硬件設計如圖4。

圖4
(2)軟件編輯。軟件程序都是在VB2005中編輯的,無論是打開護欄還是發送信息都需要VB2005先與NXT建立聯系,后面的指令才能被NXT執行,所以,先與NXT建立聯系。在VB2005窗體上安放一個按鈕,一個文本框,單擊按鈕,建立連接,如果成功,在文本框中返回“連接成功”字樣,否則連接失敗。程序界面如圖5。

圖5

圖6


連接成功后就可以給事故區域內的車輛發送信息了。通過計算機發送的信息顯示在NXT的液晶屏幕上。程序界面如圖6。發送信息的代碼如下:


該段代碼將文本框內的字符發送到NXT并存儲在存儲器中,用戶是看不到的,要讓用戶看到,必須通過NXT代碼在NXT的屏幕上顯示出來。代碼如圖7。

圖7
以上的程序將發送的信息顯示在液晶屏上,每隔3秒檢查一次,是否有信息,有信息就顯示出來,顯示3秒,再檢查,無限次循環。
開啟關閉護欄完整程序界面如圖8。

圖8
開啟護欄程序(VB2005)如下:

NXT接收信息后啟動MINDSTORMS Edu NXT程序,執行相應指令。代碼如圖9。

圖9
各種機器人產品都有自己的軟件平臺,但這些平臺的功能相對狹隘,擴展性能不佳。因此,在樂高機器人的RCX中使用Active x控件來擴展編程空間,用VB6.0就可以直接控制RCX。NXT則可以使用VB2005來編程控制機器人的運行。在以上案例中只要計算機上的藍牙適配器與NXT連接暢通,就可以通過VB2005應用程序向NXT發出指令,即做到通過計算機實時控制機器人的運行。
在本案例中,計算機指令轉化為NXT執行的指令,是通過計算機通過藍牙發送一個信息到NXT,NXT再根據MINDSTORMS Edu NXT程序轉換為NXT可執行的指令,來驅動其它外設。這樣的最大優點在于,可以將NXT的其它各種傳感器納入到VB2005程序中,增加了樂高機器人的適用范圍和準確性,也相對降低了難度,可以讓更多的人來學習使用樂高機器人,研制開發更好的項目,以鍛煉學生的動手能力、自主創新能力。
[1]http://www.semia.com 中國最大的樂高中文網站.
[2]http://bricxcc.sourceforge.net/NQC、NBC 和 NXC 的編譯器網站如果想使用免費的C語言給NXT編程.
[3]http://www.LEGOengineering.com/塔福茨大學工程教育研究中心,提供給教師的一個教學平臺,里面有很多樂高教學案例.
[4]http://bnxt.com/NXT 最早的博客網,內容豐富,信息快速.
[5]http://mindstorms.lego.com/樂高 NXT 官方網站;具有上千個NXT案例.
[6]http://www.nxtclub.com/兩位樂高迷 Steve 和 Lisa Chua 的NXT論壇.
[7]http://nxtasy.org/about/基于 NXT 信息發布和資源共享的網站,信息更新速度較快.
[8]http://thenxtstep.blogspot.com/信息發布速度最快,信息最全的英文博客.
[9]http://mynxt.matthiaspaulscholz.eu/樂 高開 發項 目 組 成 員 (德國)之一的網站,主要有他自己的作品分享.
[10]http://lejos.sourceforge.net/JAVA FOR NXT 和 RCX.
[11]http://philohome.com/nxt.htm 有很多 RCX 和 NXT 實用案例.