駱倩+施炯+李君
摘 要:室內定位是定位技術不可分割的一部分。選取Estimote Beacon作為低功耗藍牙信標節點,實現通用唯一標識碼進行周期性發送。Android Studio為集成開發環境,結合Android應用程序,通過對接收的多個Estimote Beacon藍牙信號進行三角定位運算,確定Android設備的位置,并將結果顯示給用戶,實現復雜室內環境的精確定位。
關鍵詞:室內定位;藍牙;Estimote Beacon;Android
中圖分類號:TP39;TN961 文獻標識碼:A 文章編號:2095-1302(2017)10-00-03
0 引 言
隨著人們對基于位置服務的需求與日俱增,定位導航的應用需求已不僅僅滿足于室外,室內定位正逐漸成為基于位置服務的研究熱點[1]。我國目前通過移動互聯網進行位置服務請求日均已經超過100億次[2]。
在室外空曠環境下,用戶完全能夠通過全球定位系統(GPS)獲得較精確的定位,因此市場價值和前景巨大[3]。但是受制于GPS的局限性,所以不能在室內進行精確定位。目前無線室內定位技術已得到很多技術支持,應用較為廣泛的有超聲波定位技術[4]、超帶寬定位技術、紅外線定位技術、WiFi定位技術和藍牙定位技術等[5,6]。在低功耗藍牙和移動終端不斷發展和成熟的前提下,基于低功耗藍牙的室內定位更成為研究熱點。信標節點Estimote的推出,使得室內定位的開發變得更加簡單。本文采用Estimote作為信標節點,在Android設備上采集相應的通用唯一標識碼(Universally Unique Identifier,UUID)和接收信號強度指示(Received Signal Strength Indicator,RSSI)信息,在Android平臺上實現用戶定位。
1 系統整體設計
系統硬件部分主要由多個Estimote藍牙信標節點(iBeacon)和Android手機構成。其中,iBeacon根據實際場景需要布設在室內,周期性地發布iBeacon廣播數據包。在具備藍牙LE模塊的Android終端設備上運行設計的室內定位應用程序,持有該設備的用戶可利用該應用程序進行定位。系統組成如圖1所示。
根據系統設計的功能,將室內定位系統擬分為信標節點部署、客戶端數據采集、離散位置估計、目標位置估計和客戶端UI顯示模塊等幾部分。
1.1 藍牙信標節點Estimote
藍牙信標節點Estimote硬件系統的內部框架如圖2所示。Estimote擁有強大的ARM處理器,內部由低功耗藍牙芯片、溫度傳感器、加速度計、天線、紐扣電池等組成。其中最核心的部分是nRF51822,它是來自Nordic的低功耗藍牙SoC芯片。nRF51822相較于其他低功耗藍牙而言,擁有極高的靈敏度和優越的低功耗性能,是可用于BLE、2.4 GHz無線應用且具有高性能、高靈活度特點的低功耗藍牙SoC芯片。
1.2 Android手機終端
Android是一種基于Linux的開放源代碼的操作系統,主要用于移動設備。2016年,基于Android平臺的手機已占全球手機市場份額80%以上[7]。Android手機作為目前普遍使用的手機,在本設計中的應用主要包括兩個方面,即在客戶端進行信息采集的過程中使用;將手機作為定位顯示終端。
(1)Android手機作為定位顯示終端
根據定位算法,將計算獲得的定位目標的絕對坐標以特殊標識顯示在客戶端的室內二維導航地圖上。
(2)信息采集
客戶端的信息采集包含兩方面,一方面為藍牙信標節點的ID與RSSI值信息,為定位算法的實現提供具體參數;另一方面利用手機內的微小加速度計提取加速度信息,繼而對移動目標進行速度估計。
2 軟件設計及實現
利用Android智能手機的易操作特性,在多個藍牙信標節點的協助下,利用Android應用程序從藍牙信標節點接收信息,包括藍牙發送設備的ID號、接收信號強度指示和發射功率,結合三角定位算法,對藍牙手機進行實時定位和定位信息顯示。
2.1 三角定位算法
現在目前的主流室內定位技術大部分都基于RSSI定位算法進行開發[8]。由于受運動中環境的影響,RSSI偶爾會產生較大的跳躍,為減少由于測距偏差造成的實際定位錯誤,本文使用三角定位算法[9,10]。
三角定位算法指通過兩臺或兩臺以上的探測器在不同位置探測目標的方位,然后利用三角幾何計算法確定目標的位置和距離。
三角定位原理圖如圖3所示。已知3個藍牙信標節點B1、B2、B3的位置,其中已知各點坐標B1(x1,y1)、B2(x2,y2)、B3(x3,y3),用戶位置tag到各個信標節點的距離分別為d1、d2、d3。以藍牙節點的坐標為圓心,三個圓唯一的交點就是用戶位置tag(x,y)。信標節點和用戶位置的關系見式(1):
2.2 軟件設計整體流程
本系統的開發基于Eclipse+Android Development Toolkit(ADT)開發環境,可為用戶提供藍牙定位功能。應用程序流程設計如圖4所示。
(1)藍牙提醒
在程序開始運行時,檢測用戶的Android設備是否支持低功耗藍牙、檢測用戶設備是否打開藍牙功能以及在用戶未打開藍牙時提醒用戶打開此功能,操作方便,節省時間。
(2)信標節點列表
通過掃描周圍的藍牙信標節點,并將節點信息包括UUID、Major、Minor、距離、RSSI值等實時顯示在UI上。
(3)定位
通過Android設備和信標節點之間的通信,經計算獲得用戶位置,并顯示在應用程序界面上。endprint
(4)信息顯示
對程序中顯示的一些數值的含義進行解釋。
(5)單次測量
通過掃描和計算獲得當前節點的Minor和平均距離,以列表的方式顯示在應用程序界面上。
3 實驗結果及分析
實驗測量時,將藍牙信標節點粘貼在教室的角落,打開手機上的應用程序。若此時手機尚未打開藍牙功能,程序會提醒用戶打開,界面如圖5所示。若已打開藍牙功能,則直接進入應用程序的主界面,如圖6所示。
單擊“信標節點列表”按鈕時,彈出圖7所示界面,顯示所有當前掃描到的藍牙信標節點的個數和信息,包括UUID號、Major編號、Minor編號,與手機的距離、位置等。
存在兩個及以上節點時,應用程序可以通過三角定位算法,點擊“定位”按鈕進行定位,界面顯示當前位置信息,如圖8所示。該頁面顯示了所有當前掃描到的藍牙信標節點個數、地圖尺寸、掃描測量倒計時、重置、更改地圖尺寸。“重置”按鈕可對用戶位置進行刷新,點擊“更改地圖尺寸設置”,利用按鈕可改變地圖大小,如圖9所示。
返回應用程序的主界面,點擊“信息”按鈕,可顯示與應用程序相關的術語解釋信息,如圖10所示。點擊“單次測量”按鈕,界面顯示當前掃描到的藍牙節點的部分信息,包括節點的Minor編號、平均距離,如圖11所示。
4 結 語
藍牙信標節點Estimote中集成了低功耗藍牙、加速度傳感器、溫度傳感器、紐扣電池等多種部件,為室內定位提供了一個良好的信息采集平臺,降低了室內定位開發的復雜程度。本文基于Estemote信標節點和Android系統,實現了對信標節點和用戶信息采集,包括信標節點的UUID、RSSI值、Major、Minor等數值的采集,可通過定位算法計算得出用戶位置,并在應用程序界面進行顯示。解決了以往定位系統精確度低、響應時間過長、可靠性低等諸多問題,并且本設計所用的藍牙功耗低、成本低,符合國家節能減排的發展要求。實驗表明,所測試的數據均在誤差范圍內,為今后室內定位及相關應用奠定了良好的基礎。
參考文獻
[1]華海亮.基于WiFi和藍牙的室內定位技術研究[D].錦州:遼寧工業大學,2016.
[2]蔣云染.百度地圖標注吸引超過2000家大型連鎖企業入駐[EB/OL].[2014-10-31].http://www.cctime.com/html/2014-10-31/2014103112238036.htm
[3] Misra P, Enge P. Special issue on global positioning system[J]. Proceedings of the IEEE, 1999, 87(1):3-15.
[4] Liu H, Darabi H, Banerjee P, et al. Survey of wireless indoor positioning techniques and systems[J].IEEE Transactions on Systems, Man and Cybernetics, Part C (Applications and Reviews), 2007,37(6):1067-1080.
[5]汪苑,林錦國.幾種常用室內定位技術的探討[J].中國儀器儀表, 2011(2):54–57.
[6]龔峰,宋熠.室內定位技術研究[J]. 軟件,2016,37(4):8-12.
[7]應桂芬.淺談安卓系統的應用現狀和發展[J].電腦迷,2016(5):33.
[8]萬群,郭賢生,陳章鑫.室內定位理論、方法與應用[M].北京:電子工業出版社,2012.
[9]卞合善.藍牙4.0低功耗室內定位研究[D]. 北京:北京郵電大學,2015.
[10]嚴帥,萬新軍,楊波,等.無線傳感器網絡定位算法研究[J]. 數據通信,2014(2):23-26.endprint