富新輝,余之喜,蘇凱雄
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
基于BLE北斗便攜終端的安卓系統(tǒng)設(shè)計(jì)*
富新輝,余之喜,蘇凱雄
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350002)
為提高北斗終端設(shè)備的便攜性、兼容性與待機(jī)時(shí)長(zhǎng),針對(duì)北斗報(bào)文數(shù)據(jù)特點(diǎn)與低功耗藍(lán)牙(Bluetooth Low Energy, BLE)的傳輸協(xié)議,設(shè)計(jì)實(shí)現(xiàn)了一種安卓導(dǎo)航通信系統(tǒng)。通過(guò)多線程分包組裝處理增強(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í)用性。
北斗衛(wèi)星;導(dǎo)航通信;安卓;低功耗藍(lán)牙;便攜終端
北斗行業(yè)近幾年迅速崛起,相關(guān)的終端設(shè)備也正在往便攜性、小型化的方向發(fā)展。本文提出了一種基于北斗便攜終端的應(yīng)用設(shè)計(jì)方案,該方法可使北斗終端體積進(jìn)一步縮小,待機(jī)時(shí)間更長(zhǎng),交互性更好。
該方案采用安卓系統(tǒng)的移動(dòng)終端,利用BLE獲得北斗一代、二代信息并進(jìn)行交互操作,在安卓終端上實(shí)現(xiàn)北斗短報(bào)文通信與定位功能。本文針對(duì)BLE的協(xié)議特點(diǎn)與北斗數(shù)據(jù)的傳輸特性,設(shè)計(jì)了一種合理的結(jié)合方式,并經(jīng)過(guò)測(cè)試驗(yàn)證了兩者融合后數(shù)據(jù)傳輸?shù)挠行浴?/p>
本設(shè)計(jì)系統(tǒng)組成如圖1所示,主要包含北斗一代模塊、北斗二代模塊、ARM處理器、BLE模塊、安卓終端等。
圖1 系統(tǒng)組成框圖
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.2 ARM處理器
本系統(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ā)來(lái)的指令后交付給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)功率讀??;
(2)通信功能:一代模塊短報(bào)文通信、SOS緊急求救;
(3)定位功能:RDSS有源定位、RNSS無(wú)源定位;
(4)藍(lán)牙操作:連接、斷開(kāi)、搜索、丟包檢測(cè)。
2.1 指令分包發(fā)送與接收
安卓終端接收北斗終端發(fā)來(lái)的數(shù)據(jù)包,每包的長(zhǎng)度都為小于或等于20 B,數(shù)據(jù)包都需要先存入接收緩存隊(duì)列中,方便后續(xù)指令的組裝操作。向北斗終端發(fā)送數(shù)據(jù)時(shí),若數(shù)據(jù)包長(zhǎng)度大于20 B,需要主動(dòng)將指令拆分成等于或小于20 B的小包后,再放入發(fā)送緩存隊(duì)列中等待發(fā)送。
發(fā)送和接收的過(guò)程都比較耗時(shí),不適合放在主線程中執(zhí)行,因此,本設(shè)計(jì)開(kāi)啟兩路線程分別負(fù)責(zé)發(fā)送和接收(如圖2所示)。圖3所示的發(fā)送線程完成將發(fā)送數(shù)據(jù)分包并存入發(fā)送緩存的工作。
圖2 發(fā)送與接收線程
圖3 安卓終端發(fā)送線程
接收線程完成從接收緩存內(nèi)提取出數(shù)據(jù)包,再將這些數(shù)據(jù)包按照“$”開(kāi)頭和“*”結(jié)尾的指令格式組裝起來(lái),若出現(xiàn)“*”丟失的情況,則當(dāng)組裝的指令長(zhǎng)度>300 B時(shí)自動(dòng)拋棄。具體過(guò)程如圖4所示。
圖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í)間間隔較長(zhǎng)的優(yōu)勢(shì)是可顯著節(jié)省功耗[4],短的時(shí)間間隔的優(yōu)勢(shì)是可以更快地收發(fā)數(shù)據(jù),不利之處是設(shè)備因連接事件的到來(lái)而被頻繁地喚醒,會(huì)有較多功耗。
對(duì)于安卓終端上的藍(lán)牙模塊,不同終端上使用的模塊連接間隔參數(shù)通常都不相同,且安卓終端的自身配置也不相同,處理速度有快有慢,這便會(huì)出現(xiàn)如圖5所示的發(fā)送丟包問(wèn)題。
圖5 安卓終端不同配置導(dǎo)致的丟包問(wèn)題
通過(guò)圖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ù)更新速度的問(wèn)題,部分?jǐn)?shù)據(jù)還沒(méi)被發(fā)送出去就已經(jīng)被新的數(shù)據(jù)覆蓋,直觀的表現(xiàn)就是藍(lán)牙丟包。
由于藍(lán)牙底層的連接事件到達(dá)并沒(méi)有任何標(biāo)志位返回,且藍(lán)牙為透?jìng)鞯讓影l(fā)送成功的標(biāo)志位RTS[5]安卓系統(tǒng)無(wú)法讀取到,所以為了避免這種情況,使配置較高的安卓終端滿足式(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í)越長(zhǎng)。
表1 不同配置安卓終端所需最小延時(shí)
綜上,由于安卓端發(fā)送給北斗終端的信息量并不大,發(fā)送周期也較長(zhǎng),且為了兼容市面上的普遍機(jī)型和BLE模塊,在每發(fā)送20B數(shù)據(jù)包之間增加12ms~30ms的時(shí)延較為合適,這里折中選擇20ms延時(shí)。
2.3 校驗(yàn)機(jī)制
圖6 系統(tǒng)校驗(yàn)機(jī)制
為了過(guò)濾掉一些不正確的干擾信息,并且減少藍(lán)牙丟包造成的影響,本系統(tǒng)采用了一套校驗(yàn)機(jī)制以增強(qiáng)系統(tǒng)可靠性,如圖6所示。北斗終端接收到指令后,經(jīng)過(guò)初步檢驗(yàn),過(guò)濾掉不符合正確指令格式的無(wú)效信息,再進(jìn)行校驗(yàn)碼校驗(yàn),將指令按字節(jié)異或,最后的結(jié)果與指令的校驗(yàn)和進(jìn)行對(duì)比。如果相同則反饋成功,反之反饋失敗。安卓終端接收到指令后,同樣先做初步校驗(yàn)過(guò)濾無(wú)效指令信息,再進(jìn)行校驗(yàn)碼檢驗(yàn),若校驗(yàn)通過(guò)則交付后續(xù)處理,如果出錯(cuò)則統(tǒng)計(jì)錯(cuò)誤數(shù)量。
對(duì)于安卓終端發(fā)送給北斗終端的部分,由于藍(lán)牙傳輸為透?jìng)髂J?,安卓終端并不知道北斗終端是否正確地接收到信息。除了通信申請(qǐng)($CCTXA)和定位申請(qǐng)($CCDWA)指令北斗終端接收后有反饋信息,其他指令北斗終端是否接收到并無(wú)任何提示,所以有必要另外加入自定義的檢驗(yàn)協(xié)議。加入的指令如表2所示。其中校驗(yàn)結(jié)果A表示有效信息,V表示無(wú)效信息。
表2 校驗(yàn)指令格式
為了驗(yàn)證本設(shè)計(jì)方案的可行性,通過(guò)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所示。
圖7 系統(tǒng)測(cè)試結(jié)果
通過(guò)表3的數(shù)據(jù)可以分析得到,安卓終端與北斗終端連接的距離越大,藍(lán)牙丟包率越高,當(dāng)距離小于2.5 m時(shí)只要沒(méi)有明顯的阻擋物藍(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)的性能與成功率完全適用于這種情況。
表3 不同距離測(cè)試結(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)用有著一定的借鑒參考意義。
[1] 歐陽(yáng)駿,陳子龍,黃寧淋.藍(lán)牙4.0 BLE開(kāi)發(fā)完全手冊(cè): 物聯(lián)網(wǎng)開(kāi)發(fā)技術(shù)實(shí)戰(zhàn)[M].北京:化學(xué)工業(yè)出版社,2013.
[2] 鄒向陽(yáng),譚彬,何青云.無(wú)線傳感器節(jié)點(diǎn)中的BLE藍(lán)牙低功耗研究[J].現(xiàn)代電子技術(shù),2016,39(20):67-71,77.
[3] MACKENSEN E,LAI M,WENDT T M. Blue-tooth low energy(BLE)based wireless sensors[J/OL].[2016-08-30].https://www.deepdyve.com/.
[4] 鎮(zhèn)咸舜.藍(lán)牙低功耗技術(shù)的研究與實(shí)現(xiàn)[D].上海:華東師范大學(xué),2013.
[5] 沈熠,陳章進(jìn),章鴻斌,等. 基于藍(lán)牙低功耗技術(shù)的維修鑰匙設(shè)計(jì)[J]. 微型機(jī)與應(yīng)用,2016,35(18):29-31,34.
The design of Android system based on BLE for the Beidou portable terminal
Fu Xinhui,Yu Zhixi, Su Kaixiong
(College of Physics and Information Engineering, Fuzhou University, Fuzhou 350002, China)
In order to improve the portability, compatibility and standby time of the Beidou terminal equipment, according to the characteristics of the Beidou data and the transmission protocol of Bluetooth Low Energy(BLE), the Android system of navigation communication is designed and implemented. Through the multi thread sub assembly processing to increase the real-time performance of the system, and discussed different Android terminals with forwarding speed to improve usability of software. Adding Bluetooth packet loss checking mechanism, to effectively improve the system reliability. This design can be integrated in lots of interactive functions on the Beidou navigator in Android terminal. Android intelligent terminal users only need to use a smaller size of the Beidou portable terminal will be able to achieve the Beidou communication navigation function, operation experience is better.
Beidou satellite; navigation and communication ; Android; Bluetooth Low Energy (BLE); portable terminal
福州市科技項(xiàng)目計(jì)劃資助(市校合作)(2015-G-61);福建省發(fā)改委2014產(chǎn)業(yè)技術(shù)聯(lián)合創(chuàng)新專項(xiàng)資助(2014-G-100)
TN965.5
A
10.19358/j.issn.1674- 7720.2017.07.028
富新輝,余之喜,蘇凱雄.基于BLE北斗便攜終端的安卓系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(7):95-97,101.
2016-12-13)
富新輝(1992-),男,碩士研究生,主要研究方向:北斗衛(wèi)星導(dǎo)航應(yīng)用。
余之喜(1987-),男,碩士,工程師,主要研究方向:北斗衛(wèi)星導(dǎo)航定位技術(shù)及其應(yīng)用。
蘇凱雄(1959-),男,碩士,教授、博士生導(dǎo)師,主要研究方向:無(wú)線通信、多媒體通信、數(shù)字電視廣播等。