android - 蓝牙RSSI值波动
问题描述
我正在尝试使用 RSSI 值在我的家中创建定位系统。
我使用 neXenio 库作为基础,我对此所做的唯一更改是实现对数据库的日志记录: https ://github.com/neXenio/BLE-Indoor-Positioning
我正在为信标使用 4 个 Minew I7,它们目前设置为仅以 300 毫秒广播 iBeacon 类型的广告。它们位于方形房间和十字型布局中,每个信标相距约2.2m。除了普通的客厅家具外,没有明显的障碍物。对于每次测试,我都会将手机放在房间中央,一次收集大约 10-15 分钟的数据。数据被发送到数据库供我查看。
我遇到的问题是信号强度一直波动很大,以至于数据基本上无法使用。 典型测试运行的图表。
当手机完全静止时,应该会有那么大的差异吗?我希望与信号传播的性质有一些细微的差别,但不会有这么大。
这是可以预料的还是可以以某种方式改进这些?如果这是预期的,那么我将不得不考虑结合其他一些传感器数据来帮助提高准确性。
谢谢
编辑:
在运行了更多测试之后,我比较了一段时间内的值(我之前只比较了 rssi、distance 和 mac 地址)。这导致找到一个持续的振荡模式最新的测试运行。
这也让我想到了这个overstack问题: 蓝牙RSSI中出现的规律振荡是否有解释?
如果我只宣传 iBeacon 类型的广告,那么这不适用吗?但它与我的问题相匹配似乎很奇怪。
解决方案
您不能对当前使用的设备做太多事情。即使你静态地稳定信号,移动过程中也会有很多噪音。您可以尝试:
将信号加厚到 100 毫秒。不幸的是,这会影响电池消耗,
BLE 在 3 个通道(37、38、39)上传输数据包。天线可能没有调谐到所有 3 相同。如果您可以选择更改广告渠道,请尝试测试不同的设置。
如果您可以选择焊接或连接外部天线,定向天线可能有助于室内定位系统。
有很多方法可以稳定 rssi 信号。如果您对此主题感兴趣,我建议您查看以下文章:
https://scholar.google.com/scholar?hl=pl&as_sdt=0%2C5&q=stabilization+rssi+method&btnG=
在我看来,这个方法对你最有用:
https://www.wouterbulten.nl/blog/tech/kalman-filters-explained-removing-noise-from-rssi-signals/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5461075/
AoA 和 AoD 方法也可能让您感兴趣:
https://www.bluetooth.com/blog/new-aoa-aod-bluetooth-capabilities/
我希望这会有用
推荐阅读
- javascript - 使用正则表达式验证家庭地址
- python - Paramiko中ssh over ssh的保持活动机制
- css - 对齐项目 Flexbox ,在 React 中反应材料
- onedrive - Onedrive.Appfolder 是程序使用的更好选择吗?
- javascript - Javascript从字符串键解析对象键值
- css - 如何使用 ::v-deep(
) 在 vue 中? - android - 其他方的视频未在 Twilio Video 中以 react-native 显示。Web和android之间的调用
- android - 无法创建 ViewModel 类的实例
- java - 声音生成应用程序问题 - 无法为 > 6000 Hz 的声音频率生成声音
- php - 如何在 php 中使用 foreach 循环检索 api 数据