用于接近检测iOS的蓝牙LE RSSI

我将从这个问题开始。

BTLE RSSI是一种很好的方式来指示两个设备彼此靠近吗? 它只适用于像FOB等小设备?

问题:

我目前正在考虑做一个应用程序,将使用BTLE,并允许基于接近的连接。 在这方面,它非常类似于苹果在高级核心蓝牙主题演示中展示的演示应用程序(当两个设备几乎接触,然后连接)。

据我所知,接近度是根据中央发现外围设备时的RSSI值来确定的。 然而,当我用两个iPad试试这个信号时,信号似乎太强了,因为它没有显示与设备接近程度的相关性,所以它也不太准确。

我已经尝试了苹果示例代码,这是类似的,设备不必closures所有的信息从一个传递到另一个。

如果只是有一种方法来降低外围设备广告的信号强度….

在此先感谢您的帮助。

马修·格里芬的经验与我的相匹配。 但是,当我们可以衡量一个相当长的时间时,有两件事情帮助我们更好地进行校准。

我们不得不在天线方向和IMU上包裹一个简单的(卡尔曼)滤波器,以得到一个粗略的运行评论 – 但这不是CPU或电池灯。

  • 通过使用IMU,您可以对行程的距离/方向有一个公平的认识 – 如果这个过程很短 – 我们假定另一个“侧”是静止的。 这对于“当前”定位和“校准当前环境噪声”有很大的帮助。
  • 同样,对于旋转/位置变化也是这样。

我们已经发现,一般来说,设备的重新定位是获取方向的更好的方式; 并且在“移动”校准之后,仅在设备没有太多旋转的情况下,该距离才是可靠的,高达大约30至600秒。 实际上,一旦需要4-5个“其他”设备, 理想情况下不要太移动,以保持自己的dynamic校准。

然而,相反是相当可靠的 – 即我们知道什么时候不测量。 最终的结果是,人们可以很好地把握“在键盘上”和“重新定位”/通过特定的门/开门或方向移动。 同样通过随机在房间里跳舞来测量一个场地; 改变方向很多 – 一旦接收机天线波瓣在静止的时间之后稍微调整一下就可以很好地工作。

你完全正确的关于RSSI疯狂随机跳跃。 你应该每两秒钟检索一次RSSI值(更快,而且你得到一堆错误)。 抛出大于〜40分贝尖峰的RSSI值,并在向用户声明您的大致范围之前,使用过去值的汇总。

至于你的以下陈述,你很幸运。

如果只是有一种方法来降低外围设备广告的信号强度….

您正在寻找的服务被称为TX电源服务 。 在您的外设上实施此项服务将允许您降低设备的发射功率。 这样可以节省广告数据可见的范围。 不幸的是,我们不能在iOS设备上访问这项服务。 但是,如果您正在为BLE外设编写自己的固件,则这是您想要的服务。

我已经花了上周严格处理RSSI,尝试使用Wifi和蓝牙LE传感器进行位置三angular测量和距离转换。

不幸的是,我发现RSSI太过挑剔,不可靠,无法一直用来确定距离。 从理论上讲,RSSI和距离按照平方反比规律(两倍距离,RSSI将下降一个固定的分贝数),但实际上RSSI受不可控因素的影响,如天气(干燥天气允许RF而且障碍物(从一个传感器到另一个传感器的path上的任何金属物体或人体都将导致衰减,并且由其中一个传感器紧密定位的任何金属物体都将导致信号强度的增加)。

有办法来弥补这一点。 本文是我读过的关于如何获得准确结果的最好的论文之一,但是最重要的是,除非您只想了解设备的位置,否则这是一种不可靠的方法。

如果我理解的很好,那么您正试图实现与WWDC演示中看到的类似的function,以及像Bump这样的应用程序。 对于RSSI就足够了。 testing适当的阈值(例如> -30),你会没事的。