iBeacon技术详解与应用

1 名称解释

BLE:Bluetooth Low Energy,蓝牙低功耗技术。

iBeacon:一种技术,基于蓝牙4.0的精确定位技术。

Beacon:实现iBeacon技术的模组、设备。

2 iBeacon介绍

iBeacon是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | BLE | Bluetooth Smart)的精准微定位技术,在iPhone 4S后支持。当你的手持设备靠近一个Beacon基站时,设备就能够感应到Beacon信号,范围可以从几毫米到50米。因为是一种定位技术,苹果将iBeacon相关的接口放到了 CoreLocation.framework。Google在Android 4.3及后续版本支持了该功能,只要满足iBeacon技术标准即可。iBeacon底层的技术使用的使用BLE(Bluetooth Low Energy)。

3 BLE介绍

BLE起源于2006年Nokia的Wibree技术,后被整合入蓝牙,在2010年发布的蓝牙4.0技术规范成为其中一部分,协议栈如下图所示。它是一组与传统蓝牙不同的协议,且对应设备也未向后兼容。因此形成三种设备类型:

(1)Bluetooth设备(蓝牙BR/EDR):只支持传统蓝牙的设备。如一些老式设备,比如外设、汽车系统、旧型手机等。

(2)Bluetooth Smart Ready设备(蓝牙4.0双模):同时支持传统蓝牙和LE模式的设备。(iOS、Android系统等)新型手机、笔记本、平板电脑等。

(3)Bluetooth Smart设备(BLE单模):只支持LE模式的设备。Beacon设备只支持low energy protocols(LE低功耗协议),因此能靠一颗纽扣电池就能运行很长时间。

BLE和传统蓝牙使用的都是相同的波段(2.4GHz-2.4835GHz)。BLE协议的传输速率比较低,因此除了用于发现设备和做一些简单通信之外,不太适合用于传输大量的数据流。在协议条款上,BLE和传统蓝牙的信号都能够覆盖到100米的范围,但BLE稍广。

BLE与传统的蓝牙相比最大的优势是功耗降低90%,同时传输距离增大(理想状况下超过100米)、安全和稳定性提高(支持AES加密和CRC验证)。iBeacon同时有一些自己的特点:

(1)无需配对,一般蓝牙设备印象中都需要配对工作。iBeacon无需配对,因为它是采用蓝牙的广播信道传送信号。

(2)程序可以后台唤醒,iBeacon的信息推送需要App支持。但是我们接收iBeacon信号无需打开App,只要保证安装了,同时手机蓝牙打开。

(3)iBeacon不具备传统意义上的数据传输功能,Beacon基站只推送位置信息,是采用的不可连接模式。如果开发的APP要运行起来并与服务器通信以实现定制化功能、获取定制化数据,需要开启其他的数据通信方式,如WIFI、4G等。注:采用iBeacon定位,可以不使用网络,定位算法在本地实现,即在设备本身完成定位而不通过服务器计算,前提是地图数据需提前初始化进本地设备。

4 beacon设备如何使用BLE

首先,我们先纵观一下BLE完整的连接过程。

4.1 BLE的广告扫描连接解析

广告(Advertising)

广告(Advertising),也可以译成广播,符合常用理解性。为了使主机(Central)能连接得上从机(Peripheral),从机必须进行广告。从机会每间隔一定的时间发送一个广告包(Advertisement Packet),间隔的时间在20ms到10.24s之间。广告的间隔时间会影响之后启动一次连接所需要花费的时间。

主机在发送连接请求(Connection Request)启动连接之前必须接收广告包。而从机在发送完一个广播包后的一小段短时间内,只监听主机的连接请求。一个广告包能够包含31个字节的数据。通常包含的内容有一个用户可读的名称、光宇设备发送包的信息、一些用于获知本设备是否能够连接等。广告可以设置成以下类型:

1) Connectable Undirected Event Type(可连接无定向型)

2) Connectable Directed Event Type(可连接定向型)

3) Scannable Undirected Event Type(可扫描无定向型)

4) Non-connectable Undirected Event Type(不可连接无定向型)

当主机接收到一个广告包时,它将发送一个叫做“扫描请求”(Scan Request)的请求来获得更多的广告数据,当然前提是这个活跃的扫描者(Active Scanner)已经进行了配置。然后从机通过发送一个“扫描响应”(Scan Response)来回应这个请求,这个回应可以包含额外的31个字节的数据。

广告,包括扫描请求和响应,它们采用三个不同的2.4G频率段以避开WLAN的干扰。

扫描(Scanning)

扫描是主机用来监听广告包和发送扫描请求的。有两个时序参数我们需要意识到他们的内容:“扫描窗口”(Scan Window一次扫描进行的时间宽度)和“扫描间隙”(Scan Interval一次扫描的总时间,包括扫描休息的时间和扫描进行的时间)。 对于每一次的扫描间距,主机扫描的时间等于“扫描窗口”,意思是说,如果“扫描窗口”等于“扫描间距”,那就意味着主机在进行连续的扫描。所以说,主机扫描的占空比就是“扫描窗口”的时间对于“扫描间隙”的时间乘以百分之百。

启动连接(Initiating)

当主机想要进入连接时,它将使用跟当扫描广告包时一样的程序。当启动连接时,在接收到一个广告包时,主机将发送一个连接请求(Connection Request)给从机。

连接(Connection)

根据连接中第一次数据交换来定义主机(Central)和从机(Peripheral)。当进行连接时,主机将从从机的特别定义的“间隙时间”(Interval)请求数据。这个间隙时间称作“连接间隙”(Connection interval)。它取决于并用于主机连接,不过从机可以发送更新连接参数请求(Connection Parameter Updata Requests)给主机。根据Bluetooth Core Specification,这个时间间隙必须在7.5ms到4s之间。如果从机在时间帧内(time-frame)不响应这个来自于主机的包,这称作连接监管超时(Connection supervision timeout)此次连接被认为已丢失。在每次连接间隙中通过传输多个包来获得更多的数据吞吐量是可以的。每次包的发送最多可以是20个字节。但是,如果当前消耗是重要的,从机没有数据发送,就可以选择忽略一定数量的间隙。被忽略的间隙被称作“从机延迟”(slave latency)。在一次连接中,设备们将通过所有的通道在频率带中进行跳频(hop),除了广告通道,对应应用程序来说,某种程度上是完全透明的。当然,最后还有终止连接。

4.2 使用方式

Beacon设备只使用了广告通信信道,因此无BLE后续连接相关步骤,也正是这样,面向其低功耗室内精确定位的应用细分领域。正如beacon(信标、灯塔)的字面意思,这种设备以一定的时间间隔发送数据包,并且发送的数据被可以被像手机这样的设备获取。

比如:一个小型温控器可以开放一个service用于获取当前的温度或者湿度读数,它是面向连接的,温控器和操作设备之间可以相互通信;Beacon不使用连接模式,操作设备只接收到Beacon的广播信号。

4.3  iBeacon API 介绍

下面主要介绍iBeacon具体怎么使用:

(1)Beacon的表示

iBeacon本质上来说是一个位置(区域)信息,所以 Apple把iBeacon功能集成在了Core Location里面。

iBeacon信标在Core Location中表现为一个CLBeacon,它圈定的范围则表现为CLBeaconRegion,这是一个CLRegion的子类。

CLBeaconRegion主要用三个属性来标识一个iBeacon,proximityUUID、major和minor。

proximityUUID是一个NSUUID,用来标识公司,每个公司、组织使用的iBeacon应该拥有同样的proximityUUID。

major用来识别一组相关联的beacon,例如在连锁超市的场景中,每个分店的beacon应该拥有同样的major。

minor则用来区分某个特定的beacon。

这些属性如果不指定(即nil),匹配的时候就会忽略这个属性。例如只指定proximityUUID的CLBeaconRegion可以匹配某公司的所有beacons。

(2)Monitoring

以苹果手机为例。Apple在iOS4中增加了地理围栏API,可以用来在设备进入/退出某个地理区域时获得通知,这些API包括:

-startMonitoringForRegion:

-locationManager:didEnterRegion:

-locationManager:didExitRegion:等。

CLBeaconRegion作为CLRegion的子类也可以复用这些API,这种检测iBeacon的方式叫做monitoring。

使用这种方法可以在程序在后台运行时检测iBeacon,但是只能同时检测20个region,也不能推测设备与beacon的距离。

(3)Ranging

除了使用地理围栏API的方式,Apple还在iOS7中新增加了iBeacon专用的检测方式,也就是ranging。

通过CLLocationManager的-startRangingBeaconsInRegion:方法可以开始检测特定的iBeacon。

当检测到beacon的时候,CLLocationManager的delegate方法-locationManager:didRangeBeacons:inRegion:会被调用,通知调用者现在被检测到的beacons。

这个方法会返回一个CLBeacon的数组,根据 CLBeacon的proximity属性就可以判断设备和beacon之间的距离。

proximity属性有四个可能的值,unknown、immediate、near和far。

另外CLBeacon还有accuracy和rssi两个属性能提供更详细的距离数据。

使用iOS设备作为iBeacon:

我们可以使用Core Bluetooth框架来广播特定的payload来让iOS设备成为一个iBeacon。

这个payload可以由CLBeaconRegion的-peripheralDataWithMeasuredPower:方法来获取。

之后交给CBPeripheralManager广播出去就可以了。

需要注意的是,广播iBeacon信息的时候app必须在前台运行。

5 应用场景

5.1 BLE应用

BLE使用连接方式,则可应用于低速率、低功耗的信息交换。

心率监测腕带

 

 


医疗设备数据传输

 

 



寻物与防丢失


电动玩具


键盘控制



游戏娱乐




遥控器



智能家居



体育运动


设备外设(触摸笔)


电子支付

5.2 iBeacon应用

iBeacon是用于室内精确定位的技术,可以衍生出以下应用。

定位与导航



兴趣商品精确推送


商场互动游戏



反向寻车


设备巡检


人流统计


电子围栏




更多图文资料,敬请关注微信公众号“智物客”,“智物客”和您免费分享物联网、智慧城市相关技术和项目解决方案。


扫码关注


基础技术篇 8 —— iBeacon技术详解与应用相关推荐

  1. 【Audio音频开发】音频基础知识及PCM技术详解

    个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1.前言 2.概念 3. PCM介绍 4. PCM原理 5.PCM相关概念 5.1 ...

  2. 《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  3. 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  4. 【音视频第6天】基础知识-移动端实时音视频直播技术详解和开源工程WebRTC的技术原理和使用浅析

    本文是系列文章中的第1篇,本系列文章的大纲如下: <移动端实时音视频直播技术详解(一):开篇> <移动端实时音视频直播技术详解(二):采集> <移动端实时音视频直播技术详 ...

  5. IPv6技术详解:基本概念、应用现状、技术实践(上篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

  6. IPv6技术详解:基本概念、应用现状、技术实践(上篇)(转)

    最近在搞IPV6的项目,百度搜了下,这个还是写的很清楚,转载下, 原文是这里,https://www.cnblogs.com/imstudy/p/9056334.html 严禁转载,请告知 本文来自微 ...

  7. 科普:5G网络关键技术详解

    不久前,中国华为公司主推的Polar Code(极化码)方案,成为5G控制信道eMBB场景编码方案.消息一出,在网络上就炸开了锅,甚至有媒体用"华为碾压高通,拿下5G时代"来形容这 ...

  8. zookeeper 分布式过程协同技术详解.pdf_阿里大牛耗时18个月整理这份ZooKeeper分布式详解文档...

    前言 摩尔定律揭示了集成电路每18个月计算性能就会增加一倍.随着信息的飞速膨胀,很多应用都无法依赖单个服务器的性能升级来处理如此庞大的数据量,分布式系统和应用越来越受到人们的青睐.分布式系统和应用不仅 ...

  9. Python数据科学-技术详解与商业实践视频教程

    Python数据科学-技术详解与商业实践(八大案例) 网盘地址:https://pan.baidu.com/s/13QrR_5Er6LgWCWzSb7qOrQ 提取码:s7vw 备用地址(腾讯微云): ...

最新文章

  1. iOS App 连接外设的几种方式
  2. 安装 Fedora 21 工作站后要做的10件事情
  3. [翻译] DTCoreText 从HTML文档中创建富文本
  4. 用gcc编译实现对Linux系统cpu占用
  5. 多线程及相关面试题与拓展
  6. 解决windows图片查看器背景色变成米黄色
  7. 深度学习- Dropout 稀疏化原理解析
  8. NYOJ5056_黑色帽子(水题)
  9. php链接远程socket,php使用socket获取远程图片
  10. 由过去的微软、苹果、IBM 看今天的阿里巴巴
  11. Jmeter(GUI模式)教程
  12. 如何做职业规划并进行求职准备(持续更新)
  13. 干货分享!软考中高项案例分析10大管理领域理论背诵要点
  14. 【Python量化】使用机器学习预测股票交易信号
  15. 菊风2019年度报告已送达,请查收!
  16. [Ubuntu 16.04] [Memos] install ssh
  17. 梦幻西游手游经验任务链计算机,梦幻西游手游跑环任务详解 刷经验利器
  18. 死磕 java同步系列之redis分布式锁进化史
  19. 解析肖特基二极管的使用事项
  20. 安装 pulseaudio

热门文章

  1. i9 9900k mysql_英特尔 i9-9900K 处理器现身跑分库:频率 5.0GHz,共有 16 线程
  2. web前端开发都用什么软件?
  3. 斗地主游戏java底层实现
  4. 计算机电脑操作员培训计划,计算机操作员培训计划..doc
  5. 总结的关于英语中的外来词
  6. 跑步装备推荐:2022年跑步装备选购清单
  7. 更换电脑,文件数据如何快速迁移?
  8. 关于springboot转发重定向以及受保护目录的一些规律
  9. godday:Just Days Left to SAVE - 31% OFF ENDIN
  10. mysql数据库日志存储位置_MySQL数据库之mysql日志文件在哪 如何修改MySQL日志文件位置...