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