beacon设备如何使用BLE - ibeacon是什么_ibeacon工作原理

来源:网络整理 作者:2017年11月20日 16:30
关键词:iBeacon

  beacon设备如何使用BLE

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

  如果你试着拦截一段iBeacon广告数据包,例如下面从Estimote beacon截获的数据包:

  [plain] view plaincopy在CODE上查看代码片派生到我的代码片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

  (截获以上数据,如果你使用的Mac设备,你可以参考additional XCode download为XCode添加蓝牙扫描和数据包打印工具。如果是Window设备,请参考这里)

  以上的数据已经将广告数据包的报头、修正地址、广告PDU数据包的报头和其中的MAC地址部分都移除掉了,也就是说这部分数据只包含了实际信息数据——一共30个字节,符合实际信息数据最多31个字节的限制。

  那么一个iBeacon设备的BLE广告数据是如何组成的?以下是Apple修正的数据格式,整理如下(也可以参考这里):

  [plain] view plaincopy在CODE上查看代码片派生到我的代码片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

  ibeacon是什么_ibeacon工作原理

  根据这些原理,如果你想要实验beacon的功能,你不必需要一个真正的beacon设备。如果你有最新的手机(例如iPhone4S+,SG3+)或者配备蓝牙4的笔记本(例如Retina MacBook),你可以将这些设备转换成iBeacon发送设备和接收设备。以iPhone为例,你可以在AppStore上下载“Locate iB”应用。对于MacOS,可以参考这里。当然你可以可以使用树莓派。

  Breaking down the iBeacon format(解析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编号,这样你才能够知道顾客位于商店中的哪个位置。

  Measuring distance(测量距离)

  最后一个值,TX power,用于确定你和beacon之间距离有多近。根据这个值不但可以获得粗略的信息(比如靠近/远离/不在范围内等),也可以获取精确到米的距离(当然你也可以转换为以步为单位的距离)。那么如何实现?

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

  译注:Java代码粗略计算距离代码:

  [java] view plaincopy在CODE上查看代码片派生到我的代码片protected static double calculateAccuracy(int txPower, double rssi) {

  if (rssi == 0) {

  return -1.0; // if we cannot determine accuracy, return -1.

  }

  double ratio = rssi*1.0/txPower;

  if (ratio 《 1.0) {

  return Math.pow(ratio,10);

  }

  else {

  double accuracy = (0.89976)*Math.pow(ratio,7.7095) + 0.111;

  return accuracy;

  }

  }

  然而,在实际应用中,由于人体或者其它通信阻碍物都有可能削弱信号,因此这个距离只是一个估算值。

  IOS integration(IOS整合)

  IOS已经整合了iBeacon。当你进入beacon的范围内,你的应用程序就可以接收到通知,即使你的应用程序处于在后台也能接收到。一个应用程序可以注册一个区域的进入或者退出事件,因此即使应用程序没有运行也可以被唤醒。为了响应这些事件,应用程序可以发送例如本地推送通知,提示用户打开应用程序查看商店的促销广告(这些促销广告可以从网络上面获取),或者是其它相关的内容。

  更准确的说,当手机处于不活动状态时,也就是IOS进入了低电量监控模式的时候,只有iBeacon区域进入/退出事件能够被接收到。当手机和应用程序处于活动状态,你可以进入ranging模式,这个能够让你检测的信号强度和估算距离更加准确。

  注意你的手机检测beacon需要花费一定的时间。首先,beacon设备是间隔一定的时间才发送一次广告。其次,如果你的手机处于非活动模式,它只在有些时候才会检测蓝牙信号。一个beacon设备要被检测到,上面两段工作时间就需要有交集。实践证明,它可能需要15分钟才能检测到一个beacon设备。

  按步骤开发一个iOS iBeacon应用程序可以参考这里。Beacon的制造商通常也会提供SDK帮助开发Beacon应用程序。参考Estimote的iOS SDK 和Android SDK。

  How can I get some beacons?(如何获取Beacon设备)

  Beacon设备资源现在比较稀少,你通常需要等上几个星期才能拿到货,但可以肯定的是将来这种情况会改善。

  因此,最快的选择就是创建一个Beacon模拟器:将iPhone/Android/MacBook/其它笔记本/树莓派转换成了Beacon模拟器。

  第二种选择就是试着去订购一些Beacon设备了:

  pre-order Estimote beacons; 3 for $99

  Kontakt beacons come in a couple of packages; 4 for $99, 10 for $279

  RaspberryPi kits from RadiusNetworks: 1 for $99

  RedBearLab offers BLE shields for Arduino for $30

  Bleu sells USB-iBeacon dongles. 1 for $40, 5 for $150

  Alternatives(替代品)

  iBeacon不是唯一一种基于BLE近距离技术开发的设备。高通同样正在开发自己的Beacon——Gimbal,并集合了iOS和Android SDK。它们提供的功能比较类似,但是BLE广告的数据格式可能不一样。我的开发工具还在运送途中,因此我还没有测试过,但是这种Beacon肯定很有趣,尤其是它的价格最低只有5美元。

  下一步是什么?

  现在还没有做的事情就是开发一些基于Beacon的应用程序。为了实现这个目的,记住SoftwareMill:我们经常寻找一些有趣的项目来开发。



                     扩展阅读>>>>>>>>>ibeacon室内定位原理

                         >>>>>>>>>ibeacon室内定位算法及代码

上一页12全文

本文导航

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:
发表评论

elecfans网友

分享到:

用户评论(0