冉莉莉, 石繁荣, 车洪彬
(西南科技大学 信息工程学院,四川 绵阳 621010)
智能iBeacon测距报警系统*
冉莉莉, 石繁荣, 车洪彬
(西南科技大学 信息工程学院,四川 绵阳 621010)
针对随身重要物品防丢失和找回的需求,基于最新的蓝牙低能耗技术,以iBeacon设备为核心、结合Android终端设计了一种低成本短距离测距报警系统。通过将iBeacon设备嵌入到重要物品中,并周期向Android终端发送Beacon帧,终端服务程序根据帧信息和RSSI值计算设备与终端的大致距离。服务程序可根据用户设置的报警阈值,向用户提供物品在范围内、不在范围内和在目标设备上三类信息。经验证,系统平均有效报警距离在2 m左右,触发报警平均时间20 s以内。
蓝牙低能耗; iBeacon; Android; 测距警报
iBeacon技术是一种短距离定位的测距报警防物品遗失的技术,由美国苹果公司在2013年发布,本质是两个蓝牙低能耗(Bluetooth low energy,BLE)设备之间传输标识码(universally unique identifier,UUID)并作出报警。iBeacon体积小巧,便于置入,具有成本低、功耗低的特点,通过短距离定位能够感应对象在近距离、范围内、范围外3种状态。目前智能设备行业中对BLE技术的支持较广泛,iBeacon技术被广泛研究并在室内定位、物品索引管理等领域得到应用[1~4]。
本文阐述了基于iBeacon技术的短距离测距警报系统设计,结合iBeacon设备低功耗、低成本、短距离测距定位,以及移动监控端便捷性,通过用户终端程序实现短距离测距报警,用户可添加报警对象,为用户提供方便、快捷、有效的物品防遗失报警服务。
针对上述需求设计系统需要能够对以下状态进行判断:1)物品不在目标范围内;2)物品在目标范围内;3)物品在目标设备上。
采用基于低功耗蓝牙技术的iBeacon设备结合其小范围室内定位功能,设计了一种具有物品遗落报警并辅助找回的智能硬件系统。
1.1 系统功能结构
系统主要包含下位机iBeacon模块和Android手机端定位App两大部分。系统通过交换Beacon广播帧,获取Beacon传播的接收信号强度指示(RSSI)并估计设备间的空间距离[5~7],从而实现实时感知物品与用户的距离位置,并在用户物品遗落时在遗落物品的大致区域,通过手机作为iBeacon信号接收器搜寻遗失物品。非测距定位原理与文献[6~8]相关研究类似,如图1。
图1 系统功能结构图
iBeacon设备被安装在防丢失的物品上处于低功耗服务状态,主要功能:1)运行并维护蓝牙低能耗协议栈;2)监听周围的呼叫信号;3)周期广播设备信息。广播帧包含设备基本信息和RSSI值等。
Android端定位App处于后台运行转态,具备以下主要功能:1)初始化,对下位机设备进行配置,APP参数初始化,如报警阈值等;2)服务UUID绑定;3)信号强度校准;4)超出阈值报警。
信号强度校准功能为针对不同iBeacon设备、不同的应用环境等因素中,信号强度值表现出来的差异性,而进行统一刻度的措施。超出阈值报警则是根据RSSI值的大小,大致判断设备与主机的距离并与设置阈值进行比对,从而判断发出报警类型。
1.2 系统应用场景分析
iBeacon模块安装在受控物品上,以一定的周期发射广播信号,必要时与手机进行信号值校准。广播帧包含极少的数据量,即基础UUID等数据,从而保证极小的传输消耗。
当手机端程序接收并解析绑定的UUID后,提取本地配置信息进行匹配,进一步提醒告知用户物品当前的状态。系统应用场景如图2所示。iBeacon的广播帧包含:UUID,Service,有效数据大小,Major value(主要值),Minor value(次要值),输出功率。
图2 应用场景图
系统硬件主要为iBeacon节点和移动终端(手机)。iBeacon节点以SOC无线芯片nRF51822为核心,采用蓝牙4.0BLE技术工作于2.4 G免费频段,整合了Nordic ARM Cortex M0,256 kBflash,16 kBRAM和无线电收发器,支持BLE和专用的2.4 GHz协议栈。系统硬件结构如图3所示,集成纽扣电池、微型扩展接口等,可供节点扩展传感器感知等功能。
图3 硬件结构框图
可编程外设互联(PPI)系统提供了一个16通道的总线,支持系统在没有MCU参与的情况下进行自主通信,从而降低能耗和外设间通信延迟。设备由纽扣电池供电(CR1632)可持续工作一周以上,带有扩展串口用于固件升级,程序优化。
3.1 系统程序流程分析
系统程序包含下位机程序和Android端程序。
下位机程序运行在BLE协议栈上,程序主要流程如图4所示,完成iBeacon设备初始化、定位服务初始化、广播定位帧、参数校准和定位响应等。程序在启动设备和服务程序后默认进入广播模式。用户可在系统启动时设置模式配合Android端程序设置参数。
图4 下位机程序流程图
Android端程序流程如图5所示,服务程序启动后可选择进入设置模式或服务模式。设置模式与下位机iBeacon设备进行初始化设置和参数配置,如绑定iBeacon设备、设备定义、校准RSSI值和报警阈值设置等。系统进入服务模式后,则周期检测iBeacon设备,测量其与手机的距离,并与设置的参数进行比较进而判断设备与手机的状态,作出相应的报警行为。
图5 Android端程序流程图
3.2 下位机程序设计
下位机软件基于Nordic公司提供的iBeacon SDK库开发,程序工程含主要的启动主函数(相关初始化及功能定义)、蓝牙服务框架函数。
蓝牙iBeacon设备作为该系统的基础硬件设备,用于发送蓝牙Beacon帧与手机端进行通信。手机端蓝牙设备接收到Beacon并采集RSSI信号值后,再计算当前iBeacon设备与手机的大致相对距离,再根据本地服务程序的设定执行相应的动作。
1)iBeacon初始化
iBeacon设备启动后按照顺序对链路层硬件抽象层、主机控制器接口、操作系统抽象层、逻辑链路控制和适配协议通用访问配置、通用属性配置、安全管理器等进行初始化,结束后调用蓝牙低能耗外围设备初始化函数进行参数设置和回调函数注册,包括广播设置扫描、应答数据、广播数据包、最大最小连接间隔等。
蓝牙低能耗初始化外围设备后,系统进入事件等待循环,并主要处理3种事件:1)系统消息事件,调用操作系统抽象层消息处理函数处理该消息,处理结束后清除该事件标志;2)启动设备事件,注册两个事件回调函数,分别在RSSI被读取时和通用访问配置事件(比如建立连接或者断开连接)发生时调用;3)重启设备事件,则重启设备并清除事件标志。
主要相关初始化代码如下:
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);
∥设置扫描应答数据
GAP Role_SetParameter(GAP ROLE_ADVE RT_DATA
sizeof(advertData),advertData)’
∥设置广播数据
GAP Role_SetParameter(GAP ROLE_MIN_CONN_INTE
RVAL sizeof(uint16),&desired_min_interval);
∥设置最小连接间隔
GAP Role_SetParameter(GAP ROLE_MAX_CONN_INTE
RVAL,sizeof(uint16),&desired_max_interval);
∥设置最大连接间隔
在iBeacon 中广播数据需要按照蓝牙低能耗的数据格式进行封装,定义如下:
static uint8 advertData []=
{ 0x02 ∥数据段的长度为2字节
GAP_ADTYPE_FLAGS,∥广播数据类型
DEFAULT_DISCOVE RABLE_MODE/GAP_ADTYPE_
FLAGS_B RED R_NOT_SUPPO RTED,
0x1A,∥第二个数据段的长度为26个字节
GAP_ADTYPE_MANUPFACTU RER_SPECIFIC,
0x4C,0x00,0x02,0x15,∥苹果公司标志字符
∥iBeacon的通用唯一识别码
0x00,0x3D,0x5A,0x72,0x1B,0xA3,0x11,0xE4,
0x9F,0x4F,0x00,0x25,0x4B,0xD0,0xC2,0x30,0x00,0x01,∥major编号,根据具体应用场合来编号
0x00,0x02,∥minor编号,每个景点和展品编号不同
0xCD∥设备发射功率
};
设备启动后开始广播数据包,如果附近有其他支持蓝牙4.0的设备监听并发送扫描请求,设备将发送扫描应答数据,定义如下:
static uint8 scan RspData[]={0x00,};
2)功能模块程序设计
下位机程序模块包含:广播Beacon帧、管理设备连接、用户配置接口。程序执行流程如图6。
图6 下位机运行流程图
下位机可通过按键中断触发进入配置模式、设备管理模式和广播模式。支持用户实时管理iBeacon设备与Android应用程序的参数配置和连接状态。完成外设、BLE Stack、设备管理等初始化操作后进入广播周期,广播事件通过定时器中断产生,广播的周期根据当前iBeacon设备与主机设备的相对位置进行调整。
3.3 Android服务程序设计
Android端服务程序主要功能有:1)检测设备是否提供蓝牙4.0;2)启动蓝牙4.0;3)扫描并绑定周围iBeacon设备;4)校准RSSI值;5)设置设备相关参数。
上述5个功能通常按顺序执行。服务程序从本地数据库获取用户设定保存的数据信息,再根据检测到绑定UUID的iBeacon设备RSSI值的强度来解析iBeacon设备的范围,从而判断距离位置进行报警。
Android服务程序中蓝牙设备按照如下步骤启用:
1)使用BluetoothAdapter.startLeScan()方法扫描蓝牙低能耗设备(iBeacon设备);
2)在扫描到iBeacon设备后,在回调函数中会得到BluetoothDevice的实例化对象,并通过调用BluetoothAdapter.stopLeScan()方法停止扫描;
3)通过BluetoothDevice.connectGatt()方法来获取到BluetoothGatt对象;
4)执行BluetoothGatt.discoverServices()方法,方法为异步操作,在回调函数onServicesDisco vere d()中得到status的值,通过判断status是否和BluetoothGatt.GATT_SUCCESS的相等来判断查找Service是否成功;
5)如果成功,则调用BluetoothGatt.getService()来获取BluetoothGattService;
6)通过调用BluetoothGattService.getCha- rcteristic()方法去获取BluetoothGattCharacteristic;
7)通过调用BluetoothGattCharacteris- tic.get Descriptor()方法获取BluetoothGattDescriptor。
结合下位机程序的程序流程,服务程序根据Beacon帧信息判断,当iBeacon设备与手机蓝牙的RSSI值发生变化时,服务程序将根据RSSI值计算iBeacon设备与主机设备的大致距离从而根据用户设置的报警阈值做出相应的报警操作。Android服务程序端iBeacon设备连接与参数配置操作界面如图7所示。
图7 设备连接与参数设置
系统结合iBeacon定位技术与Android系统,设计一种防物品丢失测距警报系统,通过手机端服务程序可以检测iBeacon设备大致范围:在范围内、在范围外、在设备上。并根据用户设定的报警范围和报警方式,达到触发条件时触发报警提醒用户。为用户提供物品与用户之间大致距离,该系统平均有效警报范围约2 m,触发警报响应平均时间约20 s。
[1] 石志京,徐铁峰,刘太君,等.基于iBeacon基站的室内定位技术研究[J].移动通信,2015,39(7):88-91.
[2] 卞合善.基于蓝牙4.0低功耗室内定位研究[D].北京:北京邮电大学,2015.
[3] 张 浩,赵千川.蓝牙手机室内定位系统[J].计算机应用,2011,31(11):3152-3156.
[4] 吴栋淦.基于iBeacon的智能导览系统的设计与实现[J].贵阳学院学报:自然科学版, 2014,9(4):9-13.
[5] 王满意,丁恩杰.基于WSNs的RSS无源被动定位算法评述[J].传感器与微系统,2015,34(3):1-7.
[6] 林方旭,朱明华.基于RSSI的自适应分段曲线拟合室内定位算法[J].传感器与微系统,2015,34(10):151-153.
[7] 姜 华,何风行,陈文权,等.一种基于超声和射频融合的无线传感器网络网格定位方法[J] .传感器与微系统,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
国家重大科研仪器设备研制专项项目(41227802);国家自然科学基金资助项目(61072138);绵阳市科技计划资助项目(10J006);西南科技大学实验开放基金项目(13ZXTK07)
TP 274
A
1000—9787(2017)05—0116—04
冉莉莉(1987-),女,硕士,助教,从事Android定位应用、燃料电池技术工作。