iBeacon/sender/receiver 如何处理碰撞?

How does an iBeacon/sender/receiver handle collisions?

在其广播范围内可以拥有的 ibeacon 数量的theoretical/practical 限制是多少?必须有一个。如果他们的信号经常与另一个信号发生碰撞,他们会做什么来补偿,不确定他们是否知道?

假设您在同一个场地内有 30 个信标,比如说在一个大空地 space,它们都每秒传输一次,因此它们的信号发生冲突的几率为二分之一。这实际上是如何工作的?

根据我自己的经验,实际上是移动设备的硬件和计算能力限制了可发现的信标数量。我们过去测试过这个,例如iPhone 5C 似乎能够同时处理 80-100 个蓝牙设备,而 iPhone 6 Plus 可以处理大约 200 个。这实际上意味着,一旦达到限制,一些信标可能不会被发现。

没有硬性限制,但是当您有数百个信标在同一无线电范围内传输时,您会开始看到性能下降。

信标密度有两个限制运行:

  1. 无线电冲突。 蓝牙芯片组通过在广播数据包时稍微随机化并在同一信道上检测到另一个信号时等待传输来避免广告中的冲突.在高密度(范围内有数百个发射器)下,这将开始减少发送的数据包数量,从而使信标接收器获得更少的数据包。起初,这意味着用于距离估计的样本较少 产生较差的距离估计。 最终,它会导致 检测延迟 。参见:https://electronics.stackexchange.com/questions/21991/how-many-active-bluetooth-devices-can-i-reliably-detect-in-a-single-space

  2. 接收器处理限制。不同的接收器在由于处理限制无法跟上时将开始丢弃蓝牙数据包。正如@heypiotr 指出的那样,更快的处理器(在蓝牙芯片组和移动设备主 CPU 中)可以成功获取更多数据包并跟踪更多信标。 iPhone 4S 设备可以跟踪大约 100 个信标,然后一些信标就会丢失。较新的设备可以跟踪更多。