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

圖1

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

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

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

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

圖5

圖6


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


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

圖7
以上的程序?qū)l(fā)送的信息顯示在液晶屏上,每隔3秒檢查一次,是否有信息,有信息就顯示出來,顯示3秒,再檢查,無限次循環(huán)。
開啟關(guān)閉護(hù)欄完整程序界面如圖8。

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

NXT接收信息后啟動(dòng)MINDSTORMS Edu NXT程序,執(zhí)行相應(yīng)指令。代碼如圖9。

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