朱國(guó)力,聶冬冬
(華中科技大學(xué) 機(jī)械科學(xué)與工程學(xué)院,湖北 武漢 430074)
近年來(lái)隨著智能手機(jī)、智能平板的興起,移動(dòng)通信工具的操作系統(tǒng)平臺(tái)趨于統(tǒng)一,其計(jì)算能力不斷提升,通信功能不斷增強(qiáng),這使得利用手機(jī)與工業(yè)設(shè)備進(jìn)行便捷的無(wú)線通信成為可能。如果能將工業(yè)現(xiàn)場(chǎng)施工人員的智能手機(jī)與所操作的工業(yè)設(shè)備相結(jié)合,則可以在不增加現(xiàn)場(chǎng)設(shè)備投資的情況下,在工業(yè)現(xiàn)場(chǎng)實(shí)現(xiàn)對(duì)設(shè)備進(jìn)行監(jiān)控,并在設(shè)備發(fā)生故障時(shí)及時(shí)報(bào)警且通過(guò)移動(dòng)通信網(wǎng)絡(luò)將監(jiān)控?cái)?shù)據(jù)傳回遠(yuǎn)程數(shù)據(jù)中心。在隧道掘進(jìn)過(guò)程中,需要一套穩(wěn)定可靠的姿態(tài)測(cè)量系統(tǒng)來(lái)指導(dǎo)隧道的掘進(jìn)方向,本文主要討論隧道掘進(jìn)的作業(yè)現(xiàn)場(chǎng)中,移動(dòng)通信工具在輔助隧道掘進(jìn)系統(tǒng)進(jìn)行有效的調(diào)試、監(jiān)控、遠(yuǎn)程診斷過(guò)程中發(fā)揮的作用。
該測(cè)量系統(tǒng)中,上位機(jī)為運(yùn)行Windows操作系統(tǒng)的工控機(jī),安置在操作室中;下位機(jī)為安裝固定在掘進(jìn)機(jī)器盾體上的嚴(yán)格密封的精密測(cè)量激光標(biāo)靶,其中運(yùn)算控制單元為運(yùn)行嵌入式Linux系統(tǒng)的ARM板,上位機(jī)與下位機(jī)通過(guò)線纜連接進(jìn)行通信。
由于上位機(jī)與下位機(jī)之間距離較遠(yuǎn),它們之間的通信主要是傳達(dá)測(cè)量命令與回送測(cè)量結(jié)果,因此為了實(shí)現(xiàn)與測(cè)量系統(tǒng)的核心——激光標(biāo)靶進(jìn)行便捷的監(jiān)控調(diào)試以及更多的數(shù)據(jù)交互,需要一種可以近距離地與激光標(biāo)靶進(jìn)行數(shù)據(jù)無(wú)線通信的設(shè)備。
Android[1]是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦。由于Android豐富的硬件占有率以及系統(tǒng)平臺(tái)的開(kāi)放性和統(tǒng)一性,APP開(kāi)發(fā)速度快成本低,因此Android智能手機(jī)非常適合作為本測(cè)量系統(tǒng)中手持設(shè)備的載體。在掘進(jìn)機(jī)器運(yùn)行時(shí)測(cè)量控制人員可以通過(guò)手上的智能手機(jī)實(shí)時(shí)地查看到掘進(jìn)機(jī)器的姿態(tài);當(dāng)發(fā)生故障時(shí)可以及時(shí)對(duì)故障進(jìn)行有效定位,并將記錄數(shù)據(jù)保存下來(lái)及時(shí)通過(guò)手機(jī)網(wǎng)絡(luò)傳給遠(yuǎn)程數(shù)據(jù)中心。調(diào)試人員也可以通過(guò)智能手機(jī)獲得更大的權(quán)限,對(duì)標(biāo)靶的各種數(shù)據(jù)進(jìn)行查看、修改、采集等。測(cè)量系統(tǒng)中各終端之間的通信如圖1所示。
圖1 測(cè)量系統(tǒng)中各終端之間的通信
隨著移動(dòng)信息科技的高速發(fā)展和互聯(lián)網(wǎng)大潮的來(lái)臨,相繼誕生了眾多的短距離無(wú)線通信協(xié)議和標(biāo)準(zhǔn),有廣泛使用的無(wú)線局域網(wǎng)802.11x(Wifi)、藍(lán)牙通信(Bluetooth)、紅外數(shù)據(jù)通信(IrDa)以及一些在特定領(lǐng)域具有很強(qiáng)發(fā)展?jié)摿Φ男录夹g(shù),如zigBee、UWB、NFC等。常用無(wú)線通信協(xié)議在傳輸速度、通信距離、安全性和功耗方面的比較見(jiàn)表1。
表1 常用無(wú)線通信協(xié)議比較
目前安卓智能手機(jī)和平板一般都支持藍(lán)牙和無(wú)線局域網(wǎng)兩種無(wú)線通信方式,最新出的部分設(shè)備支持NFC,基于該解決方案的實(shí)用性,本無(wú)線通信協(xié)議應(yīng)該在藍(lán)牙與無(wú)線局域網(wǎng)二者中選擇其一。
藍(lán)牙與無(wú)線局域網(wǎng)是兩種完全不同的無(wú)線通信方式。藍(lán)牙技術(shù)實(shí)現(xiàn)的是點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò),不需要固定的基礎(chǔ)設(shè)施和接入點(diǎn)就能臨時(shí)快速自動(dòng)組成移動(dòng)網(wǎng)絡(luò)。網(wǎng)路中任何節(jié)點(diǎn)都具有報(bào)文轉(zhuǎn)發(fā)能力,節(jié)點(diǎn)間的通信允許經(jīng)過(guò)多個(gè)中間節(jié)點(diǎn)的轉(zhuǎn)發(fā)到達(dá)目的節(jié)點(diǎn),節(jié)點(diǎn)可以隨時(shí)進(jìn)出網(wǎng)絡(luò),具有很強(qiáng)的移動(dòng)性。而無(wú)線局域網(wǎng)協(xié)議應(yīng)用于組件相對(duì)固定的無(wú)線局域網(wǎng)絡(luò),其對(duì)網(wǎng)路基礎(chǔ)設(shè)施的要求較高,終端出入無(wú)線網(wǎng)路都有一定的網(wǎng)路開(kāi)銷(xiāo),但是其網(wǎng)絡(luò)覆蓋距離長(zhǎng)、速度快。此外這兩種無(wú)線通信技術(shù)在通信的安全性、可靠性和功耗成本等方面也有不同。
(1)可靠性:藍(lán)牙通信數(shù)據(jù)包小,調(diào)頻快,通信持續(xù)時(shí)間短,增強(qiáng)了信號(hào)傳輸?shù)姆€(wěn)定性和抗干擾能力。另外,藍(lán)牙技術(shù)還可以對(duì)信號(hào)進(jìn)行錯(cuò)誤校正,進(jìn)一步增強(qiáng)了信號(hào)的可靠性。而無(wú)線局域網(wǎng)調(diào)頻慢,數(shù)據(jù)包大,傳輸時(shí)間長(zhǎng),容易受到外來(lái)信號(hào)的干擾,因此藍(lán)牙比無(wú)線局域網(wǎng)穩(wěn)定性更好。
(2)安全性:藍(lán)牙技術(shù)的認(rèn)證與加密服務(wù)由連接層提供,認(rèn)證采用口令—應(yīng)答方式,其基帶部分從物理層為用戶(hù)提供保護(hù)盒信息保密機(jī)制;而無(wú)線局域網(wǎng)采用WEP加密,WEP存在諸多漏洞,其安全效能不足,極易遭到破解或者攔截,因此藍(lán)牙相對(duì)更為安全。
(3)功耗與成本:無(wú)線局域網(wǎng)的射頻和基帶協(xié)議較為復(fù)雜,實(shí)現(xiàn)成本高,而藍(lán)牙芯片價(jià)格則更加低廉。無(wú)線局域網(wǎng)的硬件功耗相對(duì)較高,散熱和硬件體積決定需要較大的容納空間,而藍(lán)牙模塊則可以?xún)?nèi)置到電子設(shè)備,甚至集成到電子主板上。另外,藍(lán)牙無(wú)數(shù)據(jù)傳輸時(shí)能以極低的功耗待機(jī),遠(yuǎn)遠(yuǎn)低于無(wú)線局域網(wǎng)功耗。
本測(cè)量系統(tǒng)中與無(wú)線終端的通信需要具有較高的安全性和穩(wěn)定性,傳輸時(shí)間短,功耗低,數(shù)據(jù)分組透明,但對(duì)數(shù)據(jù)的傳輸速率和無(wú)線網(wǎng)覆蓋范圍要求不高。所以藍(lán)牙技術(shù)更加適合本測(cè)量系統(tǒng)中的通信。
在選定藍(lán)牙無(wú)線通信技術(shù)后,需要進(jìn)一步考慮怎么在激光標(biāo)靶和Android手機(jī)之間建立可靠的藍(lán)牙連接。激光標(biāo)靶中的處理器硬件平臺(tái)是定制的工業(yè)級(jí)Arm開(kāi)發(fā)板,操作系統(tǒng)平臺(tái)是裁剪過(guò)的微型Linux,該硬件平臺(tái)有RJ45網(wǎng)口、RS232/TTL串口、USB主從口與外界通信。由于該開(kāi)發(fā)板無(wú)板載無(wú)線通信接口,也沒(méi)有相應(yīng)的無(wú)線模塊供直接選用,而重新定制一塊開(kāi)發(fā)板無(wú)論對(duì)于開(kāi)發(fā)難度還是經(jīng)濟(jì)成本都較大,所以需要在現(xiàn)有接口基礎(chǔ)上進(jìn)行模塊轉(zhuǎn)接以實(shí)現(xiàn)藍(lán)牙通信[2]。選配適當(dāng)?shù)乃{(lán)牙模塊,利用板載的串口實(shí)現(xiàn)藍(lán)牙通信,而手機(jī)端則使用 Android(2.0以上)BluetoothSocket創(chuàng)建一個(gè)SPP(UUID:00001101-0000-1000-8000-00805F9B34FB)服務(wù),以實(shí)現(xiàn)虛擬的藍(lán)牙串口,從而可以與板載藍(lán)牙模塊實(shí)現(xiàn)基于藍(lán)牙傳輸?shù)拇谕ㄐ拧?/p>
藍(lán)牙模塊選擇嵌入式藍(lán)牙串口模塊HC-06,工作在自動(dòng)連接模式下,作為從機(jī)等待主機(jī)的搜索連接,自動(dòng)根據(jù)事先設(shè)定的參數(shù)進(jìn)行響應(yīng)。本系統(tǒng)采用CSR主流藍(lán)牙芯片,藍(lán)牙V2.0協(xié)議標(biāo)準(zhǔn),具有良好的兼容性,內(nèi)置藍(lán)牙天線,發(fā)射功率為Class2,靈敏度可達(dá)-80dBm,兼容RS232和TTL的三線串口電平,其有效通信距離達(dá)到10m,建立連接后可以無(wú)障礙全雙工使用,支持豐富的AT指令對(duì)其參數(shù)進(jìn)行設(shè)置,易于實(shí)現(xiàn)權(quán)限控制,且體積小巧,貼片工藝良好,可以輕易植入到測(cè)量系統(tǒng)的標(biāo)靶中。
通信模型如圖2所示,HC-06模塊與測(cè)量設(shè)備開(kāi)發(fā)板通過(guò)RS232連接,從板載電源取電,通過(guò)其藍(lán)牙芯片,將RS232信號(hào)電平轉(zhuǎn)換成藍(lán)牙無(wú)線信號(hào)。Andriod手機(jī)的藍(lán)牙硬件與 HC-06配對(duì),通過(guò)Andriod提供的SPP服務(wù),客戶(hù)端軟件能很好地利用藍(lán)牙硬件與測(cè)量設(shè)備進(jìn)行應(yīng)用層的通信[3,4]。
客戶(hù)端軟件為使用JAVA編寫(xiě)的基于Android系統(tǒng)的APK程序,它能與藍(lán)牙模塊建立可靠的連接,能提供良好的命令發(fā)送與信息顯示窗口、自定義的命令按鈕以及數(shù)據(jù)保存?zhèn)浞莨δ堋?/p>
在通信建立過(guò)程中,Android手機(jī)客戶(hù)端程序主動(dòng)搜索并連接SPP(Serial Port Protocol)協(xié)議設(shè)備——HC-06藍(lán)牙模塊。通信連接建立流程如下:
(1)使用RegisterReceiver方法注冊(cè)一個(gè)BroadcastReceiver來(lái)接收系統(tǒng)和應(yīng)用中的廣播,獲取藍(lán)牙狀態(tài),搜索SPP設(shè)備。
(2)使用BlueAdatper進(jìn)行SPP設(shè)備搜索。
(3)BroadcastReceiver的 OnReceiveSPPData()方法獲取已經(jīng)存入到搜索列表中藍(lán)牙設(shè)備的信息(MAC,名稱(chēng)RSSI等)。
(4)將設(shè)備的 MAC地址作為唯一主鍵,建立BluetoothDevice對(duì)象。
(5)由BluetoothDevice對(duì)象衍生出Bluetooth-Socket接口,通過(guò)SOCKET來(lái)讀寫(xiě)創(chuàng)建的虛擬設(shè)備。
(6)安卓操作系統(tǒng)非常完善地支持SPP服務(wù)(UUID:00001101-0000-1000-8000-00805F9B34FB),使 用 createRfcommSocketToServiceRecord()方法將BluetoothSocket連接到SPP服務(wù),并在BluetoothSocket啟用SPP服務(wù)。
(7)啟動(dòng)SPP服務(wù)成功后進(jìn)行連接,并捕獲和處理異常。
圖2 通信模型
藍(lán)牙通信過(guò)程中的狀態(tài)主要有未連接狀態(tài)、連接中狀態(tài)、活躍狀態(tài)和低耗能狀態(tài)。在藍(lán)牙通信建立連接后,會(huì)在活躍狀態(tài)和低耗能狀態(tài)之間互相轉(zhuǎn)換,當(dāng)有數(shù)據(jù)傳輸時(shí),手機(jī)藍(lán)牙設(shè)備馬上建立數(shù)據(jù)通道傳輸數(shù)據(jù);若長(zhǎng)時(shí)間沒(méi)有數(shù)據(jù)流傳輸時(shí),則會(huì)自動(dòng)進(jìn)入通信保持狀態(tài)。如手機(jī)藍(lán)牙設(shè)備離開(kāi)通信覆蓋區(qū)域或者藍(lán)牙通信關(guān)閉時(shí),則藍(lán)牙模塊會(huì)自動(dòng)斷開(kāi)連接并進(jìn)入待機(jī)狀態(tài)等待下次重新連接。狀態(tài)轉(zhuǎn)換如圖3所示。
圖3 狀態(tài)轉(zhuǎn)換
在Connect Success之后,就可以使用Bluetooth-Socket的getInputStream()方法讀取藍(lán)牙設(shè)備數(shù)據(jù),使用getOutputStream()方法向藍(lán)牙設(shè)備發(fā)送數(shù)據(jù),以實(shí)現(xiàn)與藍(lán)牙串口模塊的發(fā)送與接收。為了在一個(gè)獨(dú)立線程中實(shí)現(xiàn)良好的讀寫(xiě)操作,對(duì)藍(lán)牙設(shè)備循環(huán)讀取串口緩沖區(qū),接收數(shù)據(jù),并顯示在接收控件中。在發(fā)送命令時(shí),通過(guò)getInputStream()寫(xiě)串口發(fā)送命令。
駐留程序是在嵌入式Linux中的一段C語(yǔ)言編寫(xiě)代碼,為保證其獨(dú)立性與響應(yīng)的實(shí)時(shí)性,采用獨(dú)立進(jìn)程或者線程實(shí)現(xiàn)。駐留程序需要和測(cè)量程序進(jìn)行大量的數(shù)據(jù)共享,所以駐留程序作為測(cè)量程序中獨(dú)立調(diào)度的線程,同時(shí)又能與其共享數(shù)據(jù),是一種很好的解決辦法。
駐留程序的基本功能包括權(quán)限控制、指令檢查、指令響應(yīng)、報(bào)告結(jié)果和報(bào)告異常等。手機(jī)客戶(hù)端通過(guò)指令對(duì)測(cè)量設(shè)備端進(jìn)行查詢(xún)?cè)O(shè)置等操作,測(cè)量設(shè)備端循環(huán)監(jiān)測(cè)設(shè)備狀態(tài),一旦發(fā)現(xiàn)有異常便主動(dòng)向手機(jī)端報(bào)告。這種主從的通信結(jié)構(gòu)可以很好地實(shí)現(xiàn)所需的功能,且結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)容易。駐留程序運(yùn)行流程如圖4所示。駐留程序隨主程序啟動(dòng)后自行完成初始化,然后循環(huán)對(duì)藍(lán)牙設(shè)備所對(duì)應(yīng)的串口進(jìn)行讀取,一旦讀取到數(shù)據(jù)則檢測(cè)數(shù)據(jù)是否為合法的可執(zhí)行命令,同時(shí)核對(duì)當(dāng)前登錄的用戶(hù)是否具有執(zhí)行該命令的權(quán)限,如果都通過(guò),則進(jìn)入命令執(zhí)行階段。相應(yīng)的命令主要有以下幾類(lèi):權(quán)限申請(qǐng)(用戶(hù)登錄)、狀態(tài)讀取、參數(shù)設(shè)置、回傳數(shù)據(jù)和執(zhí)行系統(tǒng)命令。根據(jù)命令不同,對(duì)執(zhí)行結(jié)果的處理也不同,執(zhí)行完成之后進(jìn)入一段0.2s的休眠和系統(tǒng)狀態(tài)自動(dòng)檢測(cè)過(guò)程,如果發(fā)現(xiàn)有異常,則主動(dòng)報(bào)告給手機(jī)端,接著又開(kāi)始循環(huán)讀取串口數(shù)據(jù)。
圖4 駐留程序運(yùn)行流程
本文所討論的利用現(xiàn)已普及到Andriod手機(jī)和工業(yè)設(shè)備,可進(jìn)行穩(wěn)定可靠的藍(lán)牙無(wú)線通信進(jìn)而對(duì)其進(jìn)行調(diào)試監(jiān)控,非常適用于隧道掘進(jìn)等這種空間狹小、線纜繁多且無(wú)法連接互聯(lián)網(wǎng)絡(luò)的地下作業(yè)現(xiàn)場(chǎng)。該方法已經(jīng)在實(shí)驗(yàn)和實(shí)踐中得到了很好的檢驗(yàn),可以在不增加設(shè)備成本的前提下,使設(shè)備的監(jiān)控調(diào)試變得更加輕松便捷,且具備豐富的拓展性,具有一定的實(shí)踐意義。
[1] 張?jiān)?Andriod開(kāi)發(fā)應(yīng)用實(shí)戰(zhàn)詳解[M].北京:中國(guó)鐵道出版社,2011.
[2] 李鑫.基于ARM、藍(lán)牙通信的心電采集系統(tǒng)的設(shè)計(jì)[D].西安:西北工業(yè)大學(xué),2007:48-50.
[3] 彭述清,王恩永,苗愛(ài)敏.基于藍(lán)牙技術(shù)和GSM網(wǎng)的遠(yuǎn)程數(shù)據(jù)采集[J].信息技術(shù),200(5):7-9.
[4] 周明發(fā),王治森,董伯麟.無(wú)線通信在機(jī)器人及數(shù)控機(jī)床中的應(yīng)用[J].制造業(yè)自動(dòng)化,2006(9):58-64.