我注意到 Android 设备接收到的低功耗蓝牙信号强度是周期性变化的。 下图表示一个 BLE 信标在两分钟内的 RSSI 值。接收机器人和信标都是静止的,距离为 1 米。我确保干扰尽可能少。 Android 是 Nexus 5,但我在其他 Android 设备上遇到了同样的现象,它们都运行在 API 21 上。我还不能在 iOS 上测试它。
您可以看到 RSSI 有 3 个主要级别,每 15 秒重复一次,如低 -> 中 -> 高 -> 低 -> 中 -> 高等。
我的猜测是android端的原因,不知道是硬件原因还是软件原因。
为什么 RSSI 随时间循环?谁能解释一下?
最佳答案
在阅读了很多关于这个主题的内容之后,我可能已经找到了答案。
Bluetooth Low Energy 信标使用三个不同的 channel 进行广告,这是它们采用跳频以避免干扰其他 2.4GHz 信号。这比普通蓝牙 (1600/s) 慢得多 - 根据我大约每 5 秒的测量。
更多在这里: http://www.argenox.com/bluetooth-low-energy-ble-v4-0-development/library/a-ble-advertising-primer/
接收到的信号强度显然取决于频率,所以如果频率改变到另一个 channel ,RSSI 是不同的。现在如何处理是另一个问题。
更新: 在跟进这个问题后,我必须更新我的评论:
很有可能这三个级别每一个大约 5s 不是直接由于信标慢跳频,而是由于 android 设备在 channel 上单独扫描并在这样的时间间隔后切换到下一个。
克服此行为的一种方法是在循环中启动和停止扫描过程,以便扫描持续时间明显少于 5 秒。开始扫描时,设备似乎总是在同一 channel 上开始扫描,并且在切换到不同 channel 之前重新开始扫描。随着重新启动,模式不再被检测到 - 缺点是 channel 是“固定的”并且可能会受到该频率的干扰。 感谢 Airsource Ltd 让我回到这个问题。
关于android - Android 设备上的低功耗蓝牙 RSSI 会定期更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33016780/