原文地址

iBeacons

iBeacons近期是一个趋势的话题,它们同意室内定位,让你的电话知道你在基站的范围。这个能有很多应用:在停车场帮你找到你的车,零售商通过优惠券和基于位置的特别优惠,以至很多如今不敢想象的应用。

iBeacons关于iBeacons和怎样使用它有很多博文,但从技术角度,他们怎样工作,深层的技术是低功耗蓝牙,等等。。。

什么是低功耗蓝牙

低功耗蓝牙是公布在2010年的蓝牙4.0规范的一部分,它在Nokia发起于2006年,但合并到蓝牙技术,它是同经典蓝牙不同的一组协议,而且设备不向后兼容。因此有会遇到三种设备 蓝牙:仅支持经典模式 智能蓝牙过渡(Bluetooth
Smart Ready):支持经典模式和LE(Low Energy)模式 *智能蓝牙:仅支持LE模式

Bluetooth
Smart Ready



新的智能手机(iPhone 4S+,SG3+),笔记本,平板电脑,装备了蓝牙4.0,由于已经是智能蓝牙过渡,Beacons,从还有一方面讲,仅支持低功耗协议(同意他们在一块电池的情景下,工作足够长的时间),因此他们实现了智能蓝牙,旧的设备,如外设、车载系统、旧手机通常仅支持经典蓝牙协议。

低功耗蓝牙主要关注点,理所当然在低功耗上。比如一些Beacons在一块纽扣电池下(电池通常不更换,除非当beacon停止工作时,才须要更换)能够持续两年传输信号。低功耗蓝牙同经典蓝牙都使用同样的频谱范围(2.4GHZ—2.4835GHZ)。低功耗蓝牙有更低的传输速率,虽然它的本意不是流传输大量数据,而是发现和简单通讯。在理论范围,低功耗蓝牙和经典蓝牙信号都能够最远达到100米。

低功耗蓝牙怎样通讯

低功耗蓝牙有两种主状态:广播和连接。 

广播是单向的被发现机制,想要被发现的设备能够数据传输包每20ms到10秒。越短的时间间隔,越短的电池寿命,但设备发现速度越快。数据包能够加长至47个长度的字节,由下面构成: 

* 1字节报头

* 4字节訪问地址

* 2-39字节广播频道PDU

* 3字节CRC 

data

广播通讯频道,訪问地址总是0x8E89BED6.对于数据频道,每一次连接都不同样。

PDU有它自己的头部(两字节:负载的大小和它的类型—设备是否支持连接,等)和实际的数据负载(最长至37字节)。

最后,负载的头六个字节是设备的MAC地址,实际的数据最长有31字节。

低功耗蓝牙能够操作一个非连接广播模式(全部的信息都被包括在广播中),但他们也能够同意连接(通常同意)。

设备被发现之后,能够建立一个连接。它是有可能去读低功耗蓝牙提供的服务,对于每个服务特性(这个是被熟知的GATT配置文件的实现)。每个特性提供一些能够被读取或被写的值。比如一个智能调温器能够暴露服务为获得当前温度、湿度读取(作为特性服务),还有一个服务特性去设置期望的温度。虽然,beacons没有使用连接,这里跳过了细节。假设你想要读很多其它的低功耗蓝牙连接,苹果核心蓝牙指导书,即使你不是一名iOS开发者,也能提供了一个好的概述。更专业的技术文章,请看EE.

beacons怎样使用蓝牙?

Beacons通常使用广播频道,由beacon望文生义,他们每隔一段时间数据传输包,这些数据被设备像智能机接受,因此iBeacons是简单的低功耗蓝牙广播的特殊应用,iOS端增加了特别的支持。

一国你尝试拦截一个蓝牙广播包,比如来自于Estimote beacon,你将看到下列数据:

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 


(捕获这些数据,假设使用OSX,一个附加的下载包括一个蓝牙扫描和包日志)

以上数据已经有报文了,固定訪问地址、广播PDU头和MAC地址被移除;它仅仅有广播数据—30字节,因此它适应了31字节的限制。

什么使得蓝牙广播成为iBeacon?格式由苹果规定,分解例如以下:

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 


data

假设你想用beacons试验,不须要不论什么特别的设备,遵循一下步骤:假设你有一台新手机(比如iPhone4s + SG3+)或者蓝牙4.0的笔记本(Retina Macbook),你能够转化以上设备成为iBeacon的发送和接受端,对于iPhone,參考“Locate iB”app在苹果应用商店,对于MacOS,參考这里,当然,也能够用电路板当beacon。

分解iBeacon数据格式

从固定的iBeacon前缀(02 01 ….15),其它的部分的意义是什么呢?

近距离UUID(B9 … 6D 在我们的样例中),是被用来区分你的beacons和其它的标识符,假设,比如beacons被用来去提供特别优惠给顾客在连锁店。全部的beacons属于一个链,应该有同样的近距离UUID,专用的为连锁店的iPhone应用,会在后台扫描给定UUID的beacons。

主编号(2字节,这里是:0x0049 (10进制73)),被用来为相关的很多beacons组团,比如在店里的全部的beacons将有同样的主标号,这样应用将知道顾客在哪个特定的商店。

次标号(2字节,这里是:0X000A,(10进制10))被用来定义独立的beacons,每个beacon在店里将有不同的此标号,因此你知道顾客实际在哪里。

測量距离

数据最后,TX power,被用来推断离beacon的距离。这些能够被表达做为粗糙的信息(近/远/超出范围)或者作为一个以米更精确的度量(能够转换为英尺);这是怎样完毕的?

TX power(这里是:OxC5=197,2‘s complement = 256-197 =-59dBm)是被測量的信号强度,在距设备一米(RSSI-接受信号强度指示),作为信号衰减预期,更进一步的讲,知道一米的RSSI,而且知道当前的RSSI(我们同接受信号一起得到信息),它有可能有计算区别,iOS已经建立了模型,对于其它平台,须要手写代码,參看这里

障碍物比如家具,人或者通讯拥堵都能够减少信号,因此距离是一个估算值。

iOS 整合

iOS同iBeacons带来了一些附加的整合,你的app能够接受通知,当一个beacon出如今一个区域—不仅是app在前台执行,后台执行也能够。一个app能够订阅区域的进入/离开时间,然后它能够部分的唤醒,甚至它还未在工作,为了响应这些事件,app能够发送本地通知,提示用户打开app,看店内提示(能够从网络取数据),或者相关内容。 

更准确的,当手机不活跃时,iOS进入低功耗监控模式:仅有iBacons区域进入和退出是被检測的。当手机和app是活跃的,你能够进入搜寻模式,能够打开你去家冊信号强度和更精确估算距离。

注意你的手机须要花费时间去检測beacon,首先beacons传输广播是间断的,其次你的手机不是活跃的,它也是隔一段时间检測蓝牙信号,对于被检測的beacon,这两种间隔必须重合,实际上,它可能花费15分钟去检測一个beacon。 对于一步一步写一个iOS iBeacons的应用,參考这里,Beacons制造商也提供专用的SDK,去帮助编写基于beacon的引用,看一下样例Esitmote’s
iOS SDK
andAndroid

下一步

如今唯一的剩下去做的事是开发一些基于beacon的引用。

原文链接: http://xunyanan.com/blog/2014/03/27/how-do-ibeacons-work/

 written by 寻亚楠  posted at http://xunyanan.com

iBeacon怎样工作的更多相关文章

  1. 【iBeacon】iBeacon前沿初探技术备忘

    iBeacon是工作在蓝牙4.0(BLE)硬件下的一种协议,属于蓝牙4.0广播协议的一种,通过该协议和一个蓝牙模块可以实现非接触的身份识别.位置检测等. How does BLE communicat ...

  2. Android 开发中 iBeacon的使用

    iBeacon的工作原理是基于Bluetooth Low Energy(BLE)低功耗蓝牙传输技术,iBeacon基站不断向四周发送蓝牙信号,当智能设备进入设定区域时,就能够收到信号.只要满足iBea ...

  3. iBeacon的第一篇(基于Swift实现)

    低功耗蓝牙技术现在几乎是只能手机的标配.随着这一技术的发展,苹果在2013年WWDC大会上,苹果推出iBeacon技术.该技术允许开发人员开发能够使用iBeacon硬件传感器的iOS应用程序,来为相应 ...

  4. 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析

    苹果推出Ibeacon室内定位技术是为了弥补GPS无法覆盖室内定位这种场景.苹果意味着创新,在其推动下,蓝牙Ibeacon得到了极大的应用.而腾讯则是利用蓝牙Ibeacon在场景体验方面进行了创新,实 ...

  5. iBeacon

    iBeacon[1] 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接收到该I ...

  6. ibeacon和蓝牙有什么区别_它们的区别在哪里

    iBeacon概述 iBeacon是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID, ...

  7. iBeacon室内定位原理解析【转】

    目前,技术发展持续火热,因着iBeacon的定位精度和造价都比较符合国内室内定位的市场需求,下面我们来聊一聊iBeacon室内定位原理. iBeacon定位原理 iBeacon是一项低耗能蓝牙技术,工 ...

  8. ASP.NET是如何在IIS下工作的

    ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化. IIS6(IIS7的经典模式)与IIS7的集成模式的不同 IIS6 ...

  9. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

随机推荐

  1. Silverlight技术调查(2)——跨域访问

    原文 Silverlight技术调查(2)——跨域访问 此调查web容器采用的是Tomcat,若允许所有域访问,只需在webapps下的根应用ROOT中,加入配置文件:clientaccesspoli ...

  2. 快速安装多系统(xp与win7)

    具体方法: 1.利用pe安装xp系统 2.xp下,空出一个分区,用于安装win7 3.进入pe下,安装win7系统到空出的分区 4.win7正常启动后,会覆盖原来xp的启动方式 5.再次进入pe,利用 ...

  3. Javascript做模糊查询

    <html> <head> <title>Javascript模糊查找</title> </head> <body> <l ...

  4. JSP自定义标签——传统标签

    同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,J ...

  5. 研究一下FBrush,它是从TWinControl才有的属性(可能是因为需要句柄)——发现{$R *.dfm}在运行期执行,而且很有深意,读到属性后赋值还会触发事件,这些无法在VCL代码里直接看到

    定义和创建: TWinControl = class(TControl) private FBrush: TBrush; end; constructor TWinControl.Create(AOw ...

  6. MFC如何生成一个可串行化的类

    一.MFC允许对象在程序运行的整个过程中持久化的串行化机制 (1)串行化是指向持久化存储媒介(如一个磁盘文件)读或写对象的过程. (2)串行化用于在程序运行过程时或之后修复结构化数据(如C++类或结构 ...

  7. 关于vs2005 __RPC__out __RPC__in 没有定义编译错误

    1. 下载WDK http://www.microsoft.com/en-us/download/details.aspx?id=11800 2. 安装WDK 3. vs2005 设置:工具--> ...

  8. 4.锁--Synchronizer Framework Base Class—AbstractQueuedSynchronizer介绍

    1. AQS简单介绍 AQS是Java并发类库的基础.其提供了一个基于FIFO队列,可以用于构建锁或者其它相关同步装置的基础框架.该同步器(下面简称同步器)利用了一个int来表示状态,期望它可以成为实 ...

  9. 新建表维护程序SM30

    1.先新建一个客制表 2.创建一个函数组 3.SE11中该表->实用程序->表维护生成器->权限组填写&NC& ->  函数组填写刚才创建的函数组->维护 ...

  10. C#检查foreach为null判断

    1.foreach遍历列表或数组时,如果list或数组为null,就会报错,如下图: 2.不知道微软封装foreach的为什么不先检查要遍历的对象是否为null,这样就导致,我们在写代码时,遍历列表时 ...