• 蓝牙beacon


    *Beacon*

    Beacon也指ibeacon,beacon是信标,是建立在低功耗蓝牙协议基础上的一种广播协议,它也是拥有这个协议的一款低功耗蓝牙从机设备。

    Beacon工作机制:

    Beacon会每隔一定的时间(SKYLAB的beacon为100毫秒)广播一个数据包到周围,作为独立的蓝牙主机(比如手机等)在执行扫描动作时,会间隔地接收到Beacon广播出来的数据包。该数据包内容最多可以包含31个字节的内容。

    同时,在主机接收到广播包时,其中会指示该广播包来自于哪一个蓝牙从机MAC地址(每个Beacon拥有唯一的MAC地址)的从机设备和当前的接收发送信号强度指示值RSSI为多少。这时候,如果手机上安装有beacon对应的app,接收到该ID的app会根据该ID的设置条件采取相应的动作!

    ibeacon的应用领域:

    (1)推送消息

    (2)室内导航和定位,资产定位追踪和管理

    (3)和微信摇一摇结合做OfflineToOnline营销,摇班车信息,摇一摇签到,摇一摇投票

    (4)身份识别、门禁、考勤、打卡签到等

    (5)传感器应用

    (6)大型公共场合beacon综合应用,比如机场、火车站等,功能应用包括推送行车信息;室内导航,引导客户去往目的地;推送附近商场信息等等。

    ibeacon设备整合BLE

    Beacon设备只使用了通告通信信道。正如beacon(信标、灯塔)的字面意思,这种设备以一定的时间间隔发送数据包,并且发送的数据被可以被像手机这样的设备获取。也就是说,iBeacon只是BLE广告模式的一种简单的使用,并在此基础上提供了对IOS的一些附加支持。
    如果你试着拦截一段iBeacon通告数据包,你会发现它是这样的:

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

    以上的数据已经将广告数据包的报头、修正地址、广告PDU数据包的报头和其中的MAC地址部分都移除掉了,也就是说这部分数据只包含了实际信息数据——一共30个字节,符合实际信息数据最多31个字节的限制。
    那么一个iBeacon设备的BLE广告数据是如何组成的?以苹果设备为例:

    02 01 06 1A FF 4C 00 02 15: iBeacon prefix (fixed)

    B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: proximity UUID (here: Estimote’s fixed UUID)

    00 49: major

    00 0A: minor

    C5: 2’s complement of measured TX power

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xRvjtd8-1660621327032)(new 2 (1)].assets/wps1.jpg)

    iBeacon数据解析

    除了修正的iBeacon前缀数据(02 01 … 15),其它各部分数据各代表什么?

    Proximity UUID

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

    major

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

    minor

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

    TX power

    上面例子中为0xC5=197,根据2的补码测得256-197=-59dBm是距离设备1米测得的信号强度值(RSSI- Received Signal Strength Indication,接收到的信号强弱指标)。假如接收到的信号强度减弱了,那么我们可能在远离。只要知道1米距离的RSSI,以及当前的RSSI(我们可以从接收到的信号中一块获取到这些信息),那么计算出当前的距离是可能的。IOS已经实现了个这个功能,对于其它平台需要自己手动编码计算。

  • 相关阅读:
    20240313-设计模式
    2023学生近视了用什么台灯好呢?好用预防近视的护眼台灯推荐
    Java -【字符串,数组,哈希表】常用操作
    一些常用的sql命令记录
    Windows与网络基础-26-IP地址概述
    【数据结构】---详解二叉树--- ⌈知识点总结⌋ 和 ⌈常见力扣题目⌋ 确定不来看吗?
    数据结构历年考研真题对应知识点(栈)
    Docker-compose容器群集编排管理工具
    提升VR全景摄影画质的8个因素
    【微信小程序】列表渲染wx:for
  • 原文地址:https://blog.csdn.net/weixin_44570083/article/details/126363068