iBeacon /蓝牙低功耗(BLE设备) - 最大信标数

时间:2013-10-11 10:35:53

标签: bluetooth bluetooth-lowenergy ibeacon

我想通过iPhone(5s)上的应用程序在50-100米范围内同时跟踪大量信标(~500)。我已经查看了规格和在线,我无法看到使用BLE可以一次跟踪的信标数量是否有任何限制。有没有人知道你可以跟踪的信标数量是否存在限制,或者iPhone 5s是否可以胜任跟踪许多信标的任务?

5 个答案:

答案 0 :(得分:21)

您使用了单词track,但iOS有两种不同的方法:监控和测距。

您最多可以设置20个要监控的区域。 (在startMonitoringForRegion:方法的文档中找到。)如果您的应用程序在后台,区域限制通常会发挥作用。当您进入或离开您正在监控的区域(提供或花费几分钟)时,操作系统会提醒您的应用程序。操作系统甚至会启动你的应用程序,只是为了让它知道发生了什么(虽然只是很短的时间)。

另一种方法是测距,即找到设备蓝牙范围内的所有信标(通常大约100英尺给予或接受)。如果您的信标分布在100英里以上,那么您可能不会遇到任何实际限制。我没有找到任何相关的文档,我只有四个我正在测试的信标,一次有四个。

这是处理您情况的一种方法。使所有500个信标使用相同的UUID,并使用initWithProximityUUID:identifier:方法创建信标区域。 (标识符只适合您 - 它不会影响任何事情)。开始监控该信标区域。这样,只要找到您的500个信标中的一个(给予或花费几分钟),您的应用就会得到通知。通知后,您可以使用startRangingBeaconsInRegion:查找该区域周围的所有信标,然后使用主要值和次要值来确定用户所在的信标。

答案 1 :(得分:4)

如果我正确地阅读你的问题,你想把所有500个iBeacons放在100米之内,这意味着他们的传输将重叠。在遇到iOS7或手机的任何限制之前,您可能会遇到无线电拥塞问题。

我已经成功测试了20个iBeacons,但没有任何问题,但500个iBeacons是一个极端密度。 this discussion关于硬件问题表明您可能会遇到麻烦。

500 iBEacons的传输冲突至少会使您的iOS设备需要更长的时间才能看到每个iBeacon。通常,iOS7为每个iOS设备提供每秒一次的测距更新,但您可能会发现更新频率更低。这一切都取决于您的应用程序是否可以接受频繁更新。

即使延迟是可以接受的,我也绝对会在依靠它工作之前对此进行测试。不幸的是,这意味着要获得许多iBeacons。

答案 2 :(得分:4)

我将添加Tim Tisdall的答案,其中列出了正确的框架。我无法谈论iPhone 5s或iOS的具体功能,但我不知道为什么它不会返回它收到的每个ADV_IND数据包(即信标传输)

问题是,500个信标是否能够在没有冲突的情况下传输其ADV_IND数据包?

传输ADV_IND数据包大约需要0.128ms。广告传输之间的时间可配置在20ms到10240ms之间(间隔为0.625ms),因此冲突的概率取决于信标的配置。

基于泊松分布,任何给定ADV_IND数据包的冲突概率为1-exp(-2 * N *(0.128 / AI)),其中N是范围内的信标数,AI是时间广告间隔的毫秒数(假设所有信标配置相同),0.128是发送ADV_IND数据包所用的时间(以毫秒为单位)。 (如果需要解释,请参阅http://www3.cs.stonybrook.edu/~jgao/CSE590-fall09/aloha-analysis.pdf。)

对于最大广告间隔约为10秒的500个信标,每81个数据包(或约500个中的6个)将发生一次冲突。如果您愿意等待几个间隔(即30秒),那么您很有可能会收到所有500个ADV_IND数据包。

另一方面,如果广告时间间隔较小,比如说500毫秒,那么大约23%的时间(或500个中的113个)会发生碰撞。您需要等待几个时间间隔才能提高您查看所有信标广播的可能性。

另一种看待它的方式是,你拥有的信标越多,你必须等待的时间越长,以确保你收到所有的数据包。 (计算从信标数量和广告间隔一定概率接收数据包的延迟的数学对我来说太过分了。)

一个警告:如果你想连接到这些信标,而不是仅仅接收ADV_IND数据包,则需要在广告渠道上交换两个以上的数据包,并且广告渠道中发生冲突的可能性会增加位。

答案 3 :(得分:3)

我不同意。确实,ble信标仅传输广告数据,但这种数据的传输持续约3ms(考虑三个广告信道)。 有500个信标,没有考虑任何碰撞,扫描仪将需要1.5秒才能看到它们。 但是,如果所有信标都以相同的方式配置(相同的广告间隔),则不可避免地会发生导致未发现信标的冲突。即使信标之间的广告间隔不同,也会发生冲突。为了避免碰撞概率,应该使用更长的广告间隔,但这会导致更长的发现延迟。 这种推理是非常原始的,它没有考虑很多效果,而只是一个数量级的计算。

顺便说一句,这个问题并不容易,有很多参数可以发挥作用,有些已知有些未知。但是我从一年开始工作,对我而言,500是一个巨大的数字,并且你可能因为碰撞而没有看到大多数节点。

答案 4 :(得分:1)

我正在对iBeacon进行一些研究,因为这个问题(我不知道它是什么)。

似乎在“信标”方面,所有发生的事情都是发送一般广告包。它类似于设备广告可以连接到它的方式。但是,您实际上并没有连接到iBeacon,它只是读取那些广告包。设备可以接收的广告包数量没有内置限制。

所以,如果500 iBeacon的运行没有问题,我不会感到惊讶。广告包很小并且间隔开(时间方面,它们每Xms重复一次)。从手机到iBeacon没有通信,手机正在接收它听到的数据包。如果一个数据包受到干扰,它可能会设法获得下一个数据包。