蓝牙低功耗 RSSI 在 Android 设备上定期更改

Chr*_*ris 6 android rssi bluetooth-lowenergy

我注意到在 Android 上接收到的低功耗蓝牙的信号强度是周期性变化的。下图表示一个 BLE 信标在两分钟内的 RSSI 值。接收 Android 和信标都是静止的,距离为 1 米。我确保有尽可能低的干扰。Android 是 Nexus 5,但我在其他 Android 设备上也有同样的现象,都在 API 21 上运行。我还无法在 iOS 上对其进行测试。

RSSI图

您可以看到每 15 秒重复一次的 RSSI 有 3 个主要级别,例如低 -> 中 -> 高 -> 低 -> 中 -> 高等。

我的猜测是android方面的原因,不确定是硬件原因还是软件原因。

为什么 RSSI 会随时间循环?有人可以解释一下吗?

Chr*_*ris 5

在阅读了很多关于这个话题的内容之后,我可能已经找到了答案。

低功耗蓝牙信标使用三个不同的频道进行广告,这是它们对跳频的适应,以避免干扰其他 2.4GHz 信号。这比普通蓝牙 (1600/s) 慢得多 - 根据我每 5 秒左右的测量结果。

更多信息:http : //www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/

接收信号强度明显取决于频率,所以如果频率改变到另一个信道,RSSI 是不同的。如何处理现在是一个不同的问题。

更新: 跟进此问题后,我必须更新我的评论:

很可能每一个大约 5s 的三个级别不是直接由于信标跳频慢,而是由于 android 设备在通道上单独扫描并在这样的时间间隔后切换到下一个。

克服这种行为的一种方法是循环启动和停止扫描过程,以便扫描持续时间明显少于 5 秒。开始扫描时,设备似乎总是在同一频道上开始扫描,并且在切换到不同频道之前会​​重新启动扫描。随着重新启动,模式不再被检测到 - 不利的是信道是“固定的”并且可能会在这个频率上受到干扰。感谢 Airsource Ltd 让我回到这个问题。


Air*_*Ltd 4

根据Android AOSP - Android 源代码中扫描间隔和扫描窗口的定义,任何扫描模式下的扫描间隔都是 5000ms。

我假设您的图表是通过使用连续扫描的应用程序生成的 - 即 5000 毫秒的扫描窗口,这基本上是连续的。

每次扫描间隔后,扫描仪将在通道 37、38、39 之间轮换,这解释了您观察到的差异。通道 37、38、39 在 BLE 频谱中不连续 - 37 位于 2402Mz,而 39 位于 2480Mz。波长的差异意味着每个通道的多路径(反射干扰)衰落将有所不同http://www.cl.cam.ac.uk/~rmf25/papers/BLE.pdf - 你说设备是静态的,因此只要没有其他东西在移动,干扰也将是静态的。

据报道,在 iOS 上,扫描间隔(前景) 40 毫秒,这意味着您不应该体验到这种精确的效果。