冉莉莉, 石繁榮, 車洪彬
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010)
智能iBeacon測距報(bào)警系統(tǒng)*
冉莉莉, 石繁榮, 車洪彬
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010)
針對隨身重要物品防丟失和找回的需求,基于最新的藍(lán)牙低能耗技術(shù),以iBeacon設(shè)備為核心、結(jié)合Android終端設(shè)計(jì)了一種低成本短距離測距報(bào)警系統(tǒng)。通過將iBeacon設(shè)備嵌入到重要物品中,并周期向Android終端發(fā)送Beacon幀,終端服務(wù)程序根據(jù)幀信息和RSSI值計(jì)算設(shè)備與終端的大致距離。服務(wù)程序可根據(jù)用戶設(shè)置的報(bào)警閾值,向用戶提供物品在范圍內(nèi)、不在范圍內(nèi)和在目標(biāo)設(shè)備上三類信息。經(jīng)驗(yàn)證,系統(tǒng)平均有效報(bào)警距離在2 m左右,觸發(fā)報(bào)警平均時(shí)間20 s以內(nèi)。
藍(lán)牙低能耗; iBeacon; Android; 測距警報(bào)
iBeacon技術(shù)是一種短距離定位的測距報(bào)警防物品遺失的技術(shù),由美國蘋果公司在2013年發(fā)布,本質(zhì)是兩個(gè)藍(lán)牙低能耗(Bluetooth low energy,BLE)設(shè)備之間傳輸標(biāo)識碼(universally unique identifier,UUID)并作出報(bào)警。iBeacon體積小巧,便于置入,具有成本低、功耗低的特點(diǎn),通過短距離定位能夠感應(yīng)對象在近距離、范圍內(nèi)、范圍外3種狀態(tài)。目前智能設(shè)備行業(yè)中對BLE技術(shù)的支持較廣泛,iBeacon技術(shù)被廣泛研究并在室內(nèi)定位、物品索引管理等領(lǐng)域得到應(yīng)用[1~4]。
本文闡述了基于iBeacon技術(shù)的短距離測距警報(bào)系統(tǒng)設(shè)計(jì),結(jié)合iBeacon設(shè)備低功耗、低成本、短距離測距定位,以及移動監(jiān)控端便捷性,通過用戶終端程序?qū)崿F(xiàn)短距離測距報(bào)警,用戶可添加報(bào)警對象,為用戶提供方便、快捷、有效的物品防遺失報(bào)警服務(wù)。
針對上述需求設(shè)計(jì)系統(tǒng)需要能夠?qū)σ韵聽顟B(tài)進(jìn)行判斷:1)物品不在目標(biāo)范圍內(nèi);2)物品在目標(biāo)范圍內(nèi);3)物品在目標(biāo)設(shè)備上。
采用基于低功耗藍(lán)牙技術(shù)的iBeacon設(shè)備結(jié)合其小范圍室內(nèi)定位功能,設(shè)計(jì)了一種具有物品遺落報(bào)警并輔助找回的智能硬件系統(tǒng)。
1.1 系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)主要包含下位機(jī)iBeacon模塊和Android手機(jī)端定位App兩大部分。系統(tǒng)通過交換Beacon廣播幀,獲取Beacon傳播的接收信號強(qiáng)度指示(RSSI)并估計(jì)設(shè)備間的空間距離[5~7],從而實(shí)現(xiàn)實(shí)時(shí)感知物品與用戶的距離位置,并在用戶物品遺落時(shí)在遺落物品的大致區(qū)域,通過手機(jī)作為iBeacon信號接收器搜尋遺失物品。非測距定位原理與文獻(xiàn)[6~8]相關(guān)研究類似,如圖1。
圖1 系統(tǒng)功能結(jié)構(gòu)圖
iBeacon設(shè)備被安裝在防丟失的物品上處于低功耗服務(wù)狀態(tài),主要功能:1)運(yùn)行并維護(hù)藍(lán)牙低能耗協(xié)議棧;2)監(jiān)聽周圍的呼叫信號;3)周期廣播設(shè)備信息。廣播幀包含設(shè)備基本信息和RSSI值等。
Android端定位App處于后臺運(yùn)行轉(zhuǎn)態(tài),具備以下主要功能:1)初始化,對下位機(jī)設(shè)備進(jìn)行配置,APP參數(shù)初始化,如報(bào)警閾值等;2)服務(wù)UUID綁定;3)信號強(qiáng)度校準(zhǔn);4)超出閾值報(bào)警。
信號強(qiáng)度校準(zhǔn)功能為針對不同iBeacon設(shè)備、不同的應(yīng)用環(huán)境等因素中,信號強(qiáng)度值表現(xiàn)出來的差異性,而進(jìn)行統(tǒng)一刻度的措施。超出閾值報(bào)警則是根據(jù)RSSI值的大小,大致判斷設(shè)備與主機(jī)的距離并與設(shè)置閾值進(jìn)行比對,從而判斷發(fā)出報(bào)警類型。
1.2 系統(tǒng)應(yīng)用場景分析
iBeacon模塊安裝在受控物品上,以一定的周期發(fā)射廣播信號,必要時(shí)與手機(jī)進(jìn)行信號值校準(zhǔn)。廣播幀包含極少的數(shù)據(jù)量,即基礎(chǔ)UUID等數(shù)據(jù),從而保證極小的傳輸消耗。
當(dāng)手機(jī)端程序接收并解析綁定的UUID后,提取本地配置信息進(jìn)行匹配,進(jìn)一步提醒告知用戶物品當(dāng)前的狀態(tài)。系統(tǒng)應(yīng)用場景如圖2所示。iBeacon的廣播幀包含:UUID,Service,有效數(shù)據(jù)大小,Major value(主要值),Minor value(次要值),輸出功率。
圖2 應(yīng)用場景圖
系統(tǒng)硬件主要為iBeacon節(jié)點(diǎn)和移動終端(手機(jī))。iBeacon節(jié)點(diǎn)以SOC無線芯片nRF51822為核心,采用藍(lán)牙4.0BLE技術(shù)工作于2.4 G免費(fèi)頻段,整合了Nordic ARM Cortex M0,256 kBflash,16 kBRAM和無線電收發(fā)器,支持BLE和專用的2.4 GHz協(xié)議棧。系統(tǒng)硬件結(jié)構(gòu)如圖3所示,集成紐扣電池、微型擴(kuò)展接口等,可供節(jié)點(diǎn)擴(kuò)展傳感器感知等功能。
圖3 硬件結(jié)構(gòu)框圖
可編程外設(shè)互聯(lián)(PPI)系統(tǒng)提供了一個(gè)16通道的總線,支持系統(tǒng)在沒有MCU參與的情況下進(jìn)行自主通信,從而降低能耗和外設(shè)間通信延遲。設(shè)備由紐扣電池供電(CR1632)可持續(xù)工作一周以上,帶有擴(kuò)展串口用于固件升級,程序優(yōu)化。
3.1 系統(tǒng)程序流程分析
系統(tǒng)程序包含下位機(jī)程序和Android端程序。
下位機(jī)程序運(yùn)行在BLE協(xié)議棧上,程序主要流程如圖4所示,完成iBeacon設(shè)備初始化、定位服務(wù)初始化、廣播定位幀、參數(shù)校準(zhǔn)和定位響應(yīng)等。程序在啟動設(shè)備和服務(wù)程序后默認(rèn)進(jìn)入廣播模式。用戶可在系統(tǒng)啟動時(shí)設(shè)置模式配合Android端程序設(shè)置參數(shù)。
圖4 下位機(jī)程序流程圖
Android端程序流程如圖5所示,服務(wù)程序啟動后可選擇進(jìn)入設(shè)置模式或服務(wù)模式。設(shè)置模式與下位機(jī)iBeacon設(shè)備進(jìn)行初始化設(shè)置和參數(shù)配置,如綁定iBeacon設(shè)備、設(shè)備定義、校準(zhǔn)RSSI值和報(bào)警閾值設(shè)置等。系統(tǒng)進(jìn)入服務(wù)模式后,則周期檢測iBeacon設(shè)備,測量其與手機(jī)的距離,并與設(shè)置的參數(shù)進(jìn)行比較進(jìn)而判斷設(shè)備與手機(jī)的狀態(tài),作出相應(yīng)的報(bào)警行為。
圖5 Android端程序流程圖
3.2 下位機(jī)程序設(shè)計(jì)
下位機(jī)軟件基于Nordic公司提供的iBeacon SDK庫開發(fā),程序工程含主要的啟動主函數(shù)(相關(guān)初始化及功能定義)、藍(lán)牙服務(wù)框架函數(shù)。
藍(lán)牙iBeacon設(shè)備作為該系統(tǒng)的基礎(chǔ)硬件設(shè)備,用于發(fā)送藍(lán)牙Beacon幀與手機(jī)端進(jìn)行通信。手機(jī)端藍(lán)牙設(shè)備接收到Beacon并采集RSSI信號值后,再計(jì)算當(dāng)前iBeacon設(shè)備與手機(jī)的大致相對距離,再根據(jù)本地服務(wù)程序的設(shè)定執(zhí)行相應(yīng)的動作。
1)iBeacon初始化
iBeacon設(shè)備啟動后按照順序?qū)︽溌穼佑布橄髮印⒅鳈C(jī)控制器接口、操作系統(tǒng)抽象層、邏輯鏈路控制和適配協(xié)議通用訪問配置、通用屬性配置、安全管理器等進(jìn)行初始化,結(jié)束后調(diào)用藍(lán)牙低能耗外圍設(shè)備初始化函數(shù)進(jìn)行參數(shù)設(shè)置和回調(diào)函數(shù)注冊,包括廣播設(shè)置掃描、應(yīng)答數(shù)據(jù)、廣播數(shù)據(jù)包、最大最小連接間隔等。
藍(lán)牙低能耗初始化外圍設(shè)備后,系統(tǒng)進(jìn)入事件等待循環(huán),并主要處理3種事件:1)系統(tǒng)消息事件,調(diào)用操作系統(tǒng)抽象層消息處理函數(shù)處理該消息,處理結(jié)束后清除該事件標(biāo)志;2)啟動設(shè)備事件,注冊兩個(gè)事件回調(diào)函數(shù),分別在RSSI被讀取時(shí)和通用訪問配置事件(比如建立連接或者斷開連接)發(fā)生時(shí)調(diào)用;3)重啟設(shè)備事件,則重啟設(shè)備并清除事件標(biāo)志。
主要相關(guān)初始化代碼如下:
GAP Role_SetParameter(GAP ROLE_ADVE RT_ENAB
LED,sizeof(uin8),&initial_advertising_enable);
∥開啟廣播
GAP Role_SetParameter(GAP ROLE_SCAN_RSP_DAT
A,sizeof(scan RspData),scan RspData);
∥設(shè)置掃描應(yīng)答數(shù)據(jù)
GAP Role_SetParameter(GAP ROLE_ADVE RT_DATA
sizeof(advertData),advertData)’
∥設(shè)置廣播數(shù)據(jù)
GAP Role_SetParameter(GAP ROLE_MIN_CONN_INTE
RVAL sizeof(uint16),&desired_min_interval);
∥設(shè)置最小連接間隔
GAP Role_SetParameter(GAP ROLE_MAX_CONN_INTE
RVAL,sizeof(uint16),&desired_max_interval);
∥設(shè)置最大連接間隔
在iBeacon 中廣播數(shù)據(jù)需要按照藍(lán)牙低能耗的數(shù)據(jù)格式進(jìn)行封裝,定義如下:
static uint8 advertData []=
{ 0x02 ∥數(shù)據(jù)段的長度為2字節(jié)
GAP_ADTYPE_FLAGS,∥廣播數(shù)據(jù)類型
DEFAULT_DISCOVE RABLE_MODE/GAP_ADTYPE_
FLAGS_B RED R_NOT_SUPPO RTED,
0x1A,∥第二個(gè)數(shù)據(jù)段的長度為26個(gè)字節(jié)
GAP_ADTYPE_MANUPFACTU RER_SPECIFIC,
0x4C,0x00,0x02,0x15,∥蘋果公司標(biāo)志字符
∥iBeacon的通用唯一識別碼
0x00,0x3D,0x5A,0x72,0x1B,0xA3,0x11,0xE4,
0x9F,0x4F,0x00,0x25,0x4B,0xD0,0xC2,0x30,0x00,0x01,∥major編號,根據(jù)具體應(yīng)用場合來編號
0x00,0x02,∥minor編號,每個(gè)景點(diǎn)和展品編號不同
0xCD∥設(shè)備發(fā)射功率
};
設(shè)備啟動后開始廣播數(shù)據(jù)包,如果附近有其他支持藍(lán)牙4.0的設(shè)備監(jiān)聽并發(fā)送掃描請求,設(shè)備將發(fā)送掃描應(yīng)答數(shù)據(jù),定義如下:
static uint8 scan RspData[]={0x00,};
2)功能模塊程序設(shè)計(jì)
下位機(jī)程序模塊包含:廣播Beacon幀、管理設(shè)備連接、用戶配置接口。程序執(zhí)行流程如圖6。
圖6 下位機(jī)運(yùn)行流程圖
下位機(jī)可通過按鍵中斷觸發(fā)進(jìn)入配置模式、設(shè)備管理模式和廣播模式。支持用戶實(shí)時(shí)管理iBeacon設(shè)備與Android應(yīng)用程序的參數(shù)配置和連接狀態(tài)。完成外設(shè)、BLE Stack、設(shè)備管理等初始化操作后進(jìn)入廣播周期,廣播事件通過定時(shí)器中斷產(chǎn)生,廣播的周期根據(jù)當(dāng)前iBeacon設(shè)備與主機(jī)設(shè)備的相對位置進(jìn)行調(diào)整。
3.3 Android服務(wù)程序設(shè)計(jì)
Android端服務(wù)程序主要功能有:1)檢測設(shè)備是否提供藍(lán)牙4.0;2)啟動藍(lán)牙4.0;3)掃描并綁定周圍iBeacon設(shè)備;4)校準(zhǔn)RSSI值;5)設(shè)置設(shè)備相關(guān)參數(shù)。
上述5個(gè)功能通常按順序執(zhí)行。服務(wù)程序從本地?cái)?shù)據(jù)庫獲取用戶設(shè)定保存的數(shù)據(jù)信息,再根據(jù)檢測到綁定UUID的iBeacon設(shè)備RSSI值的強(qiáng)度來解析iBeacon設(shè)備的范圍,從而判斷距離位置進(jìn)行報(bào)警。
Android服務(wù)程序中藍(lán)牙設(shè)備按照如下步驟啟用:
1)使用BluetoothAdapter.startLeScan()方法掃描藍(lán)牙低能耗設(shè)備(iBeacon設(shè)備);
2)在掃描到iBeacon設(shè)備后,在回調(diào)函數(shù)中會得到BluetoothDevice的實(shí)例化對象,并通過調(diào)用BluetoothAdapter.stopLeScan()方法停止掃描;
3)通過BluetoothDevice.connectGatt()方法來獲取到BluetoothGatt對象;
4)執(zhí)行BluetoothGatt.discoverServices()方法,方法為異步操作,在回調(diào)函數(shù)onServicesDisco vere d()中得到status的值,通過判斷status是否和BluetoothGatt.GATT_SUCCESS的相等來判斷查找Service是否成功;
5)如果成功,則調(diào)用BluetoothGatt.getService()來獲取BluetoothGattService;
6)通過調(diào)用BluetoothGattService.getCha- rcteristic()方法去獲取BluetoothGattCharacteristic;
7)通過調(diào)用BluetoothGattCharacteris- tic.get Descriptor()方法獲取BluetoothGattDescriptor。
結(jié)合下位機(jī)程序的程序流程,服務(wù)程序根據(jù)Beacon幀信息判斷,當(dāng)iBeacon設(shè)備與手機(jī)藍(lán)牙的RSSI值發(fā)生變化時(shí),服務(wù)程序?qū)⒏鶕?jù)RSSI值計(jì)算iBeacon設(shè)備與主機(jī)設(shè)備的大致距離從而根據(jù)用戶設(shè)置的報(bào)警閾值做出相應(yīng)的報(bào)警操作。Android服務(wù)程序端iBeacon設(shè)備連接與參數(shù)配置操作界面如圖7所示。
圖7 設(shè)備連接與參數(shù)設(shè)置
系統(tǒng)結(jié)合iBeacon定位技術(shù)與Android系統(tǒng),設(shè)計(jì)一種防物品丟失測距警報(bào)系統(tǒng),通過手機(jī)端服務(wù)程序可以檢測iBeacon設(shè)備大致范圍:在范圍內(nèi)、在范圍外、在設(shè)備上。并根據(jù)用戶設(shè)定的報(bào)警范圍和報(bào)警方式,達(dá)到觸發(fā)條件時(shí)觸發(fā)報(bào)警提醒用戶。為用戶提供物品與用戶之間大致距離,該系統(tǒng)平均有效警報(bào)范圍約2 m,觸發(fā)警報(bào)響應(yīng)平均時(shí)間約20 s。
[1] 石志京,徐鐵峰,劉太君,等.基于iBeacon基站的室內(nèi)定位技術(shù)研究[J].移動通信,2015,39(7):88-91.
[2] 卞合善.基于藍(lán)牙4.0低功耗室內(nèi)定位研究[D].北京:北京郵電大學(xué),2015.
[3] 張 浩,趙千川.藍(lán)牙手機(jī)室內(nèi)定位系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2011,31(11):3152-3156.
[4] 吳棟淦.基于iBeacon的智能導(dǎo)覽系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].貴陽學(xué)院學(xué)報(bào):自然科學(xué)版, 2014,9(4):9-13.
[5] 王滿意,丁恩杰.基于WSNs的RSS無源被動定位算法評述[J].傳感器與微系統(tǒng),2015,34(3):1-7.
[6] 林方旭,朱明華.基于RSSI的自適應(yīng)分段曲線擬合室內(nèi)定位算法[J].傳感器與微系統(tǒng),2015,34(10):151-153.
[7] 姜 華,何風(fēng)行,陳文權(quán),等.一種基于超聲和射頻融合的無線傳感器網(wǎng)絡(luò)網(wǎng)格定位方法[J] .傳感器與微系統(tǒng),2015,34(3):25-27.
[8] Matthew S Gast.Building applications with iBeacon[M].California:O’Reilly Media,2014.
Intelligent distance-measuring alarm system based on iBeacon*
RAN Li-li, SHI Fan-rong, CHE Hong-bin
(School of Information Engineering,Southwest University of Science and Technology,Mianyang 621010,China)
Aiming at requirement of preventing from losing important belongings and get back after losing in daily life,a low-cost,short distance-measuring alarm system is designed,which is based on the latest low energy consumption Bluetooth technology and take iBeacon equipment as core,combined with Android terminal.By embedding iBeacon device into important belongings,and periodically sends Beacon frame to the Android terminal,terminal services program calculate approximate distance to the terminal device based on the frame information and RSSI values.Services program provide users with three types of information which is the range of items, not within the scope and on the target device,according to alarm thresholds set by the users.It’s proved that the average effective alarm distance of system is about 2 m,alarm is triggered within an average time of 20 s.
Bluetooth low energy consumption; iBeacon; Android; distance-measuring alarm
10.13873/J.1000—9787(2017)05—0116—04
2016—07—04
國家重大科研儀器設(shè)備研制專項(xiàng)項(xiàng)目(41227802);國家自然科學(xué)基金資助項(xiàng)目(61072138);綿陽市科技計(jì)劃資助項(xiàng)目(10J006);西南科技大學(xué)實(shí)驗(yàn)開放基金項(xiàng)目(13ZXTK07)
TP 274
A
1000—9787(2017)05—0116—04
冉莉莉(1987-),女,碩士,助教,從事Android定位應(yīng)用、燃料電池技術(shù)工作。