您的位置:首页 > 其它

Beacon of BLE

2017-03-07 10:22 274 查看
Beacon技术一直是一个有趣的BLE应用技术。比较出名的应用,如IOS的ibeacon,高通的Gimbal。

它能实现室内定位,让你的SP能够知道是否处于一个Beacon的范围内。当然,使用这种技术能够产生很多应用程序:比如帮助你在停车场中找到你的汽车,或者在零售店中根据所处位置提供优惠券或者其它一些位置相关的服务等。

那么,从技术角度,它是怎样工作的呢?

1、工作原理

在前面章节蓝牙解析(part5):BLE的广播通信有提到,BLE的广播通信有两种应用场景:

1)单一方向的、无连接的数据通信,数据发送者在广播信道上广播数据,数据接收者扫描、接收数据。

2)连接的建立。

那么Beacon技术就是场景1)的代表应用。

正如beacon(信标、灯塔)的字面意思,它将有用的信息,放在广播包中,并以一定的时间间隔发送数据包,这些数据可以被像手机获取并解析使用。

2、数据格式



每一段Adv数据长度最大为31bytes。

例如,下图数据,Adv length is 0x1e,绿色部分为adv data

1e 02
01 06 03 03 aa fe 17 16 aa fe 00 -10 00 01 02 03 04 05 06 07 08 09 0a 0b 0e 0f 00 00 00 00

3、ibeacon数据解析

如果我们试着拦截一段iBeacon广告数据包,例如下面从Estimote beacon截获的数据包,它由5部分组成,分别用

5种颜色表示:

02 01 06 1A FF 4C 00 02 15B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D00 49
00 0AC5

1)ibeacon的前缀,fixed;

2)Proximity UUID (此例中,代表Estimote的UUID):这是将你所有的beacon与其他人的beacon设备区别开的id!例如,目前在商店里某个区域分布着多个beacon形成一条“链带”,用于为顾客提供特定的服务,那么归属于同一条“链带”的beacon将分配到相同的proximity UUID。为这条“链带”设计的专用应用程序将会在后台使用这个UUID扫描到这条“链带”中的beacon设备。

3)major 编号(2个字节,上面例子中为0x0049,也就是73):用于将相关的beacon标识为一组。例如,一个商店中的所有beacon将会分配到相同的major编号。通过这种方式,应用程序就能够知道顾客位于哪一家商店。

4)minor 标号(也是2个字节,上面例子中为0x000A,也就是10):用于标识特定的beacon设备。例如一个商店中的每一个beacon设备都拥有唯一的minor编号,这样你才能够知道顾客位于商店中的哪个位置。

5)The 2’s complement of measured TX power。用于测量距离。(1个字节,上例中的0xC5,即197,根据它的补码可以测得256-197=-59dBm),代表距离设备1米测得的信号强度值(RSSI- Received Signal Strength Indication,接收到的信号强弱指标)。假如接收到的信号强度减弱了,那么我们可能在远离。只要知道1米距离的RSSI,以及当前的RSSI(我们可以从接收到的信号中一块获取到这些信息),那么计算出当前的距离是可能的。

4、Beacon的定位原理

beacon工作原理类似之前的蓝牙技术,由Beacon发射信号,蓝牙设备定位接受,反馈信号。当用户进入、退出或者在区域内徘徊时,Beacon的广播有能力进行传播,可计算用户和Beacon的距离(可通过RSSI计算),由此可知,只要有三个Beacon设备即可定位。

1)Trilateration三边测量定位算法

Trilateration(三边测量)是一种常用的定位算法:



已知三点位置 (x1, y1), (x2, y2), (x3, y3)

已知未知点 (x0, y0) 到三点距离 d1, d2, d3
以 d1, d2, d3 为半径作三个圆,根据毕达哥拉斯定理,得出交点即未知点的位置计算公式:

( x1 - x0 )2 + ( y1 - y0 )2 = d12

    ( x2 - x0 )2 + ( y2 - y0 )2 = d22

    ( x3 - x0 )2 + ( y3 - y0 )2 = d32

2)解法推导:



设未知点位置为 (x, y), 令其中的第一个球形 P1 的球心坐标为 (0, 0),P2 处于相同纵坐标,球心坐标为 (d, 0),P3 球心坐标为 (i, j),三个球形半径分别为 r1, r2, r3,z为三球形相交点与水平面高度。则有:

    r12 = x2 + y2 + z2

    r22 = (x - d)2 + y2 + z2

    r32 = (x - i)2 + (y - j)2 + z2

当 z = 0 时, 即为三个圆在水平面上相交为一点,首先解出 x:
x = (r12 - r22 + d2) / 2d

将公式二变形,将公式一的 z2 代入公式二,再代入公式三得到 y 的计算公式:
y = (r12 - r32 - x2 + (x - i)2 + j2) / 2j
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Beacon 蓝牙