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