android - Android 设备上的低功耗蓝牙 RSSI 会定期更改

标签 android bluetooth-lowenergy rssi

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

RSSI Graph

您可以看到 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/

相关文章:

android - 循环启动和停止时蓝牙 LE 广告失败

swift - 在循环上编写 BLE 命令无法获得所有响应 - Swift

swift - 数据是否写入BLE 写入后返回特性

android - 奇怪的应用程序图标行为

android - 将照片上传到服务器android时出错

android - Android 中的 WiFi 读数不稳定

wifi - scapy 中的 RadioTap header

rssi - 将 RSSI 转换为距离

android - 在我的应用程序中即时上传和 Google+ 图片

android - 如何在行中创建具有不同图像大小的 AsymmetricGridView