原文地址

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. 基于redis的cas集群配置(转)

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  2. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  3. 程序实现LayoutAnimationController

    在res/anim下新建anim_set.xml: <?xml version="1.0" encoding="utf-8"?> <set x ...

  4. Mac上利用Eclipse编译Cocos2d-x

    目前使用较多的Cocos2d-x开发平台是XCode,应该是由于大部分Cocos2d-x开发者都是iOS开发出生.但是当我们将XCode开发的Cocos2d-x工程发布Android版本时,每次都需要 ...

  5. Get Cordova Ready for Grunt and CoffeeScript

    Cordova, Grunt and Coffee You may reference to below if you deside to work with coffee instead of Ja ...

  6. 一个关于native sql的程序

    *&---------------------------------------------------------------------* *& Report ZHR_BPM11 ...

  7. 慎得慌二u赫然共和任务i个屁

    http://www.huihui.cn/share/8424421 http://www.huihui.cn/share/8424375 http://www.huihui.cn/share/842 ...

  8. 11661 - Burger Time?

      Burger Time?  Everybody knows that along the more important highways there are countless fast food ...

  9. 判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)

    BOOL IsWow64ProcessEx(HANDLE hProcess) { // 如果系统是x86的,那么进程就不可能有x64 bool isX86 = false; #ifndef _WIN6 ...

  10. ecshop 微信支付插件

    眼下已完毕支付測试,可以支付成功,支付逻辑自己实现.后台通知.发货通知.订单查询未測. 当中用到了redis 下载