富新輝,余之喜,蘇凱雄
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
摘要:為提高北斗終端設(shè)備的便攜性、兼容性與待機時長,針對北斗報文數(shù)據(jù)特點與低功耗藍(lán)牙(Bluetooth Low Energy, BLE)的傳輸協(xié)議,設(shè)計實現(xiàn)了一種安卓導(dǎo)航通信系統(tǒng)。通過多線程分包組裝處理增強系統(tǒng)實時性,并討論得出兼容不同安卓終端的轉(zhuǎn)發(fā)速度提高軟件適用性。加入藍(lán)牙丟包校驗機制,有效提高系統(tǒng)傳輸可靠性。本設(shè)計可將北斗導(dǎo)航儀的各種交互功能集成在安卓終端上,安卓智能終端用戶只需使用體積更小的北斗便攜終端便能實現(xiàn)北斗通信導(dǎo)航功能,操作體驗性更好,更具實用性。
關(guān)鍵詞:北斗衛(wèi)星;導(dǎo)航通信;安卓;低功耗藍(lán)牙;便攜終端
中圖分類號:TN965.5文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.028
引用格式:富新輝,余之喜,蘇凱雄.基于BLE北斗便攜終端的安卓系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2017,36(7):95-97,101.
0引言
*基金項目:福州市科技項目計劃資助(市校合作)(2015 G 61);福建省發(fā)改委2014產(chǎn)業(yè)技術(shù)聯(lián)合創(chuàng)新專項資助(2014 G 100)北斗行業(yè)近幾年迅速崛起,相關(guān)的終端設(shè)備也正在往便攜性、小型化的方向發(fā)展。本文提出了一種基于北斗便攜終端的應(yīng)用設(shè)計方案,該方法可使北斗終端體積進(jìn)一步縮小,待機時間更長,交互性更好。
該方案采用安卓系統(tǒng)的移動終端,利用BLE獲得北斗一代、二代信息并進(jìn)行交互操作,在安卓終端上實現(xiàn)北斗短報文通信與定位功能。本文針對BLE的協(xié)議特點與北斗數(shù)據(jù)的傳輸特性,設(shè)計了一種合理的結(jié)合方式,并經(jīng)過測試驗證了兩者融合后數(shù)據(jù)傳輸?shù)挠行浴?/p>
1系統(tǒng)組成
本設(shè)計系統(tǒng)組成如圖1所示,主要包含北斗一代模塊、北斗二代模塊、ARM處理器、BLE模塊、安卓終端等。
1.1低功耗藍(lán)牙BLE模塊
本文的北斗便攜終端采用的BLE模塊具有低功耗、高速率、體積小、成本低的特點。并且該藍(lán)牙模塊采用單模模式[1],使得設(shè)備集成度更高,鏈路層更輕量且支持超低功耗待機模式操作。模塊連接間隔為20 ms,當(dāng)串口波特率為115 200 b/s 時,模塊具有最高轉(zhuǎn)發(fā)能力4 KB/s。模塊可以從串口一次性最多傳輸200 B數(shù)據(jù)包,并會根據(jù)數(shù)據(jù)包大小自動分包發(fā)送,每包最大載荷為20 B[2]。
1.2ARM處理器
本系統(tǒng)中采用的ARM處理器為STM32,其主要功能為轉(zhuǎn)發(fā)數(shù)據(jù),將北斗一代、二代數(shù)據(jù)分包并插入適當(dāng)?shù)陌l(fā)送間隔時間,轉(zhuǎn)發(fā)給BLE模塊。當(dāng)藍(lán)牙模塊接收到安卓終端發(fā)來的指令后交付給STM32,處理器對指令進(jìn)行協(xié)議頭判斷并校驗,若符合標(biāo)準(zhǔn)和協(xié)議,則按照相應(yīng)的指令內(nèi)容轉(zhuǎn)發(fā)給北斗一代或二代模塊。
1.3安卓終端應(yīng)用軟件功能
安卓系統(tǒng)4.3以后的版本支持BLE技術(shù)。本文的安卓終端采用的系統(tǒng)版本為Android6.0。
本文設(shè)計的安卓系統(tǒng)軟件主要功能有:
(1)基本功能:北斗卡檢測、北斗便攜終端電量讀取、北斗衛(wèi)星信號功率讀??;
(2)通信功能:一代模塊短報文通信、SOS緊急求救;
(3)定位功能:RDSS有源定位、RNSS無源定位;
(4)藍(lán)牙操作:連接、斷開、搜索、丟包檢測。
2核心軟件處理過程
2.1指令分包發(fā)送與接收
安卓終端接收北斗終端發(fā)來的數(shù)據(jù)包,每包的長度都為小于或等于20 B,數(shù)據(jù)包都需要先存入接收緩存隊列中,方便后續(xù)指令的組裝操作。向北斗終端發(fā)送數(shù)據(jù)時,若數(shù)據(jù)包長度大于20 B,需要主動將指令拆分成等于或小于20 B的小包后,再放入發(fā)送緩存隊列中等待發(fā)送。
發(fā)送和接收的過程都比較耗時,不適合放在主線程中執(zhí)行,因此,本設(shè)計開啟兩路線程分別負(fù)責(zé)發(fā)送和接收(如圖2所示)。圖3所示的發(fā)送線程完成將發(fā)送數(shù)據(jù)分包并存入發(fā)送緩存的工作。
圖3安卓終端發(fā)送線程接收線程完成從接收緩存內(nèi)提取出數(shù)據(jù)包,再將這些數(shù)據(jù)包按照“$”開頭和“*”結(jié)尾的指令格式組裝起來,若出現(xiàn)“*”丟失的情況,則當(dāng)組裝的指令長度>300 B時自動拋棄。具體過程如圖4所示。
2.2發(fā)送延時兼容性
藍(lán)牙BLE存在連接間隔這個固定參數(shù),指的是兩個連接事件之間的時間間隔,藍(lán)牙只有在連接事件內(nèi)處理發(fā)送接收事件,連接間隔[3]的值一般為7.5 ms~4 s。不同的應(yīng)用可能要求不同的時間間隔。時間間隔較長的優(yōu)勢是可顯著節(jié)省功耗[4],短的時間間隔的優(yōu)勢是可以更快地收發(fā)數(shù)據(jù),不利之處是設(shè)備因連接事件的到來而被頻繁地喚醒,會有較多功耗。
對于安卓終端上的藍(lán)牙模塊,不同終端上使用的模塊連接間隔參數(shù)通常都不相同,且安卓終端的自身配置也不相同,處理速度有快有慢,這便會出現(xiàn)如圖5所示的發(fā)送丟包問題。
通過圖5可看出,由于配置較低的安卓終端,處理速度較慢,分裝完一個數(shù)據(jù)包的時間普遍大于藍(lán)牙的連接間隔時間,即:
Ts≥nTL(n為正整數(shù))(1)
式中,Ts為安卓終端的處理時間、TL為藍(lán)牙連接間隔。這種情況下,當(dāng)藍(lán)牙連接事件到達(dá)時,發(fā)送的數(shù)據(jù)總是最新的。但當(dāng)安卓終端配置較高,數(shù)據(jù)分裝速度較快時,會出現(xiàn)藍(lán)牙模塊的發(fā)送速度跟不上數(shù)據(jù)更新速度的問題,部分?jǐn)?shù)據(jù)還沒被發(fā)送出去就已經(jīng)被新的數(shù)據(jù)覆蓋,直觀的表現(xiàn)就是藍(lán)牙丟包。
由于藍(lán)牙底層的連接事件到達(dá)并沒有任何標(biāo)志位返回,且藍(lán)牙為透傳底層發(fā)送成功的標(biāo)志位RTS[5]安卓系統(tǒng)無法讀取到,所以為了避免這種情況,使配置較高的安卓終端滿足式(1)條件,需要主動地加入延時。因為安卓終端的發(fā)送操作被放進(jìn)獨立的線程中,線程每次運行的間隔取決于不同安卓終端CPU的性能,理論上CPU越慢的安卓終端所需要的線程休眠時間越短。本文選取了配置性能不同的4種安卓終端,調(diào)整不同時延觀察是否出現(xiàn)丟包現(xiàn)象,測試所需的最小時延,測試結(jié)果如表1所示??梢钥闯鯟PU性能越好的手機配合自己本身的藍(lán)牙模塊所需要的延時越長。
綜上,由于安卓端發(fā)送給北斗終端的信息量并不大,發(fā)送周期也較長,且為了兼容市面上的普遍機型和BLE模塊,在每發(fā)送20 B數(shù)據(jù)包之間增加12 ms~30 ms的時延較為合適,這里折中選擇20 ms延時。
2.3校驗機制
圖6系統(tǒng)校驗機制為了過濾掉一些不正確的干擾信息,并且減少藍(lán)牙丟包造成的影響,本系統(tǒng)采用了一套校驗機制以增強系統(tǒng)可靠性,如圖6所示。北斗終端接收到指令后,經(jīng)過初步檢驗,過濾掉不符合正確指令格式的無效信息,再進(jìn)行校驗碼校驗,將指令按字節(jié)異或,最后的結(jié)果與指令的校驗和進(jìn)行對比。如果相同則反饋成功,反之反饋失敗。安卓終端接收到指令后,同樣先做初步校驗過濾無效指令信息,再進(jìn)行校驗碼檢驗,若校驗通過則交付后續(xù)處理,如果出錯則統(tǒng)計錯誤數(shù)量。
對于安卓終端發(fā)送給北斗終端的部分,由于藍(lán)牙傳輸為透傳模式,安卓終端并不知道北斗終端是否正確地接收到信息。除了通信申請($CCTXA)和定位申請($CCDWA)指令北斗終端接收后有反饋信息,其他指令北斗終端是否接收到并無任何提示,所以有必要另外加入自定義的檢驗協(xié)議。加入的指令如表2所示。其中校驗結(jié)果A表示有效信息,V表示無效信息。
3系統(tǒng)測試結(jié)果
為了驗證本設(shè)計方案的可行性,通過BLE將Android終端與北斗便攜終端連接后,進(jìn)行通信與定位的測試。將發(fā)送接收的北斗卡號設(shè)置為同一張實現(xiàn)自發(fā)自收。系統(tǒng)運行效果如圖7所示。測試采用混發(fā)模式,使用3級北斗卡連續(xù)短報文通信,發(fā)送內(nèi)容為39個漢字的滿報文,發(fā)送周期為62 s。測試數(shù)據(jù)如表3所示。
通過表3的數(shù)據(jù)可以分析得到,安卓終端與北斗終端連接的距離越大,藍(lán)牙丟包率越高,當(dāng)距離小于2.5 m時只要沒有明顯的阻擋物藍(lán)牙丟包率為0。當(dāng)距離大于5 m后成功率低于95%,在藍(lán)牙丟包率較低的情況下,通信成功率主要取決于北斗衛(wèi)星的信號強度,所以會出現(xiàn)小于1 m的通信成功率反而比2.5 m的低的狀況。在實際使用情況下,便攜北斗終端一般隨身攜帶,藍(lán)牙連接距離一般都小于5 m。該系統(tǒng)的性能與成功率完全適用于這種情況。
4結(jié)論
北斗產(chǎn)業(yè)不斷壯大,北斗產(chǎn)品也漸漸出現(xiàn)在百姓生活中。北斗終端設(shè)備的小型化是必然趨勢。本文針對使用BLE連接北斗終端設(shè)備與安卓設(shè)備的系統(tǒng)提供一種設(shè)計方案。在一般正常的使用情況下,本方案出現(xiàn)的丟包現(xiàn)象基本可以忽略。因此本方案滿足北斗通信的要求,并提供了人性化的交互功能,具有良好的擴展性與移植性,對北斗設(shè)備的其他便攜式、兼容性的應(yīng)用有著一定的借鑒參考意義。
參考文獻(xiàn)
?。?] 歐陽駿,陳子龍,黃寧淋.藍(lán)牙4.0 BLE開發(fā)完全手冊: 物聯(lián)網(wǎng)開發(fā)技術(shù)實戰(zhàn)[M].北京:化學(xué)工業(yè)出版社,2013.
?。?] 鄒向陽,譚彬,何青云.無線傳感器節(jié)點中的BLE藍(lán)牙低功耗研究[J].現(xiàn)代電子技術(shù),2016,39(20):67-71,77.
?。?] MACKENSEN E,LAI M,WENDT T M. Blue tooth low energy(BLE)based wireless sensors[J/OL].[2016 08 30].https://www.deepdyve.com/.
?。?] 鎮(zhèn)咸舜.藍(lán)牙低功耗技術(shù)的研究與實現(xiàn)[D].上海:華東師范大學(xué),2013.
?。?] 沈熠,陳章進(jìn),章鴻斌,等. 基于藍(lán)牙低功耗技術(shù)的維修鑰匙設(shè)計[J]. 微型機與應(yīng)用,2016,35(18):29-31,34.