1 前提

1.1介绍

2014年,许多组织开始着力开发蓝牙beacon试点项目,到2015年,已经有许多公司开始尝试利用部署好的蓝牙beacon探索新的服务模式。据市场研究机构(ABI Research)预测,预计到2019年,beacon将有6千万的市场占有量。
  在大多数应用场景中,蓝牙beacon主要用于室内定位。不论在商场,机场,办公室,还是博物馆,都可以利用这些位置信息来提供服务。在这些案例中,通过将蓝牙beacon安装在特定位置,然后利用智能手机上的APP与之交互,就可以达到定位的效果。有趣的是,目前市场上还出现了一种新的beacon应用,它们并不需要安装在固定位置。未来我们还会看到更多涉及移动可穿戴beeacon的解决方案,例如Lighthouse,这是一种可穿戴beacon设备,可以用来定位有特殊需要的学生,并确保他们的安全。
  蓝牙beacon使用了蓝牙BLE技术,是蓝牙BLE的诸多应用之一。

1.2 开发过的beacon产品

2 广播格式

只需要在广播内容的Data段填写”Company ID、Data type、Data length、UUID、Major、Minor、Measured power at 1 meter”内容,则可是现实ibeacon。


beacon广播数据包:

2.1 苹果公司beacon格式

uint8_t ibeacon_infor[23] =            /**< Information advertised by the Beacon. */
{0x02,    0x15, 0xE2,0xC5,0x6D,0xB5,0xDF,0xFB,0x48,0xD2,0xB0,0x60,0xD0,0xF5,0xA7,0x10,0x96,0xE0, // uuid0X00,0x00,       // major0x00,0x00,       // mainor0xC3            // rssi
};

在ble广播中广播体现

**第一行数据同上,不再分析,重点分析第二行(也就是广播数据部分)
--------------------------------------
02 表示接下来的数据有两个字节
01 表示数据类型,此处的类型是Flags
06 表示Flags的具体模式
1a 表示接下来的数据有26个字节
ff 表示数据类型,此处是厂家特定字(Manufacturer specific)
4c 00 表示公司的ID,此处的004c代表苹果公司
02 代表beacon标识位
15 表示接下来有22个字节的数据
0xE2,0xC5,0x6D,0xB5,0xDF,0xFB,0x48,0xD2,0xB0,0x60,0xD0,0xF5,0xA7,0x10,0x96,0xE0 表示beacon UUID
27 11 是major的值,2711转化为10进制是10001
4c b9 是minor的值,4cb9转化为10进制是19641
c5 是txPower的补码,计算可知原码是-59**

在app中显示如下:

在上图中,0x004C为苹果公司的ID。0x02指明该设备为“proximity beacon”,该值在iBeacon设备中均为0x02。UUID指明拥有该beacon设备的机构。主次字段用来编码位置信息,通常主字段指明某个建筑,而次字段指明在这栋建筑中的特定位置。例如“伦敦中心商场,运动产品区”。发送功率字段帮助应用进行距离估算。有关iBeacon的详细内容可以参考地址

2.2 AltBeacon帧格式


 AltBeacon帧格式与iBeacon类似,如下图所示,更多详细内容可以访问地址:

3 应用

iBeacon和AltBeacon不直接向外发送位置信息。应用需要以某种方式将UUID/Major/Minor (iBeacon) 或UUID/Beacon Code (AltBeacon)映射到本地数据。为此我们可以使用多种方式,最简单的几种方式是:

3.1 信息标识

《1》查找手机本地数据库;
《2》查找远程服务器数据库;
《3》参考本地数据库同时在网络条件适宜时与远程数据库进行同步。

3.2 距离估算

估算用户与某个beacon设备距离的标准方法是计算该beacon设备的信号强度,然后进行路径损耗计算。信号强度称为RSSI,即接收信号强度标识。利用RSSI以及广播包中的Tx功率值进行路径损耗计算,并给出距离beacon设备一米的信号强度值。维基百科对此计算过程给出了更详细解释
地址。
  上述方法只能对距离进行粗略的估计,因为环境条件对距离计算有显著影响。如果需要更精确的距离计算可以使用射频指纹技术。这种方法将位置与射频信号特征相结合,从而获取更好的测量结果。国际计算机研究中心对此给出了相关介绍[Radio Fingerprinting]

3.3扫描

Beacon应用会进行周期性地扫描并进行过滤,从而获取感兴趣的设备信息。扫描过程功耗较高,因此开发者需要避免进行长时间的扫描。扫描过程主要涉及两个不同的参数配置。“扫描窗口”指明每次扫描持续时间,“扫描间隔”即为两次扫描间的时间。不同的平台对此提供的API不同,但都可以概括为这两种。
  为了确定以上两个参数的大小,我们需要考虑beacon设备的广播间隔。如果beacon设备2000毫秒广播一次,那么每100毫秒进行一次持续500毫秒的扫描是没有意义的。因为有时beacon设备并没有发送广播,此时进行扫描当然就白白浪费了。需要注意的一点是,从蓝牙4.2开始,蓝牙广播就不再是确定的了,将会加入随机延时以避免持续冲撞,因此开发者需要采用合适的方法同步扫描与广播时序
  每次应用扫描的时候都会检测到0至多个beacon设备,应用可能会连续多次扫描到同一个设备,因为用户要走出某一特定beacon设备的范围,所花的时间要比广播间隔长得多,广播间隔往往只有几百毫秒。
  当到达某一位置时,某个beacon设备会消失在搜索结果中,此时你的应用需要对此作出响应。应用可以认为用户已经走出该beacon设备的覆盖范围,但是这样可能会出错。因为扫描不到某个beacon设备可能有多个原因,几次扫描不到也并不意味着下次也扫描不到。也可能用户走到某个障碍物后面导致信号衰减较大,从而扫描不到设备。当用户走出障碍物附近时就可以再次接收到beacon设备信号。简言之,用户会一直在beacon设备附近,即使短时间内收不到广播数据包。
  应用需要维护一个活动beacon列表,保存接近用户的beacon设备。应用可以选择在最近一次扫描不到设备时就将其移除活动列表或者在连续多次扫描不到设备时才将其移除,又或者在扫描不到设备一段时间后将其移除。上述方法可以获得更好的用户体验
参考文献:
参考地址

可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

实战项目(1)beacon信标相关推荐

  1. 什么是互联网大厂_仅限今天!大厂最热数据分析经典实战项目大公开!

    原标题:仅限今天!大厂最热数据分析经典实战项目大公开! 如今,全球早已步入数据时代,随着行业的高速发展,相关岗位缺口已超150万,且薪资超同行业50%.未来十年,数据细分岗位将扩张5倍,各行业数据人才 ...

  2. mybatis学习7 实战项目

    自己写一个实战项目,最好和hibernate做对比. 转载于:https://www.cnblogs.com/liufei1983/p/7492214.html

  3. 干货满满的 Python 实战项目,点赞收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来给大家介绍3个干货满满的计算机视觉方向的Python实战项目,主要用到的库有 opencv-python numpy pillow 要是大家所 ...

  4. 实战:人脸识别实战项目(源码共享)

    首先我想问个问题:现在什么工程师最值钱? 毫无疑问,我想超 90% 的都会说:人工智能工程师.也难怪,随着近几年人工智能的发展,已经逐渐渗透到了各个领域,比如:医疗.教育.机械自动化.个性化推荐.信息 ...

  5. 数百个CV实战项目与必备7本书5000页中英文CV书籍免费送啦~

    数百个CV实战项目与必备7本5000页书籍,公众号[深度学习冲鸭]的后台回复关键字[CV入坑必备](建议复制~)获得: CV学习书籍汇总 1:<学习OpenCV中文版> 2:<图像处 ...

  6. 数百个CV实战项目与必备7本书5000页中英文CV书籍以及算法工程师必备资料免费送啦~...

    数百个CV实战项目与必备7本5000页书籍,公众号[深度学习冲鸭]的后台回复关键字[CV入坑必备](建议复制~)获得: CV学习书籍汇总 1:<学习OpenCV中文版> 2:<图像处 ...

  7. 再次升级,985博士整理的71个OpenCV实战项目教程开放下载!

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  8. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  9. 31个Python实战项目带你学会图像处理

    近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的文章,深受小伙伴们的喜爱.最近有小伙伴推荐,希望可以讲经典的项目整理一下,集成手册,便于小伙伴在日常的学习中使用.于是小白挑选了#Op ...

  10. 【Python入门】你值得拥有的这八个实用工具安装包与实战项目

    1.推荐3个画图工具:几个常用的画图工具,这类工具可以帮助理清楚思路,像学习框架也可以用这些做出来. 2.推荐5个实用的编辑工具:工欲善其事必先利其器. 3.推荐4个优秀的实战项目:内功修炼得好,写代 ...

最新文章

  1. C++加线程锁详解篇
  2. 最新全球自由职业技能单日排行
  3. C. Little Girl and Maximum Sum【差分 / 贪心】
  4. linux deepin ubuntu apt安装openjdk-8-jdk
  5. hash地址_到底什么是Hash?
  6. 2019年房贷利率会下调吗?
  7. 矩阵微分(matrix derivatives)
  8. 设置多行的Table高度为100%,并在最后一行中加入iframe
  9. Linux三剑客正则表达式常用字符汇总
  10. mySQL常用操作及基础知识
  11. SiteMesh3使用介绍及配置方法
  12. Git commit --amend
  13. 集成学习—多算法融合
  14. 计算机网络工程职业学院,湖南网络工程职业学院理工学院
  15. Android 调用第三方 APP
  16. 适合团队工作的软件,大家来看看有没有喜欢的吧
  17. 微信小程序之日期时间筛选器实现(支持年月日时分)
  18. 阿里云“快进”背后:云计算形势重构,深耕产业数字化
  19. 红茶馆:承诺满天下,守信行万里
  20. Qt Xlsx使用教程、Qt操作Excel、Qt生成Excel图表、跨平台不依赖Office

热门文章

  1. C语言学习 计算个人所得税
  2. 2021年北京市专精特新中小企业补助申报的条件及办理方法有哪些,补贴20万
  3. 字符串转浮点数、字符串转整数、数转字符串
  4. 文明3地图之一--两个大岛
  5. 第八次网页前端培训笔记
  6. thinkphp实现简易签到
  7. 4. 判断一个整数是否为水仙花数
  8. 西瓜书+南瓜书第1-2章
  9. OSChina 周二乱弹 ——台风的注意事项
  10. Linux下在shell中使用curl模拟get,post请求访问接口并设置代理