如何测量像 iBeacon 一样的 iPhone 和 Android 设备之间的距离
Posted
技术标签:
【中文标题】如何测量像 iBeacon 一样的 iPhone 和 Android 设备之间的距离【英文标题】:How to measure the distance between an iPhone acting like an iBeacon and an Android device 【发布时间】:2015-12-17 15:02:07 【问题描述】:我将我的 iPhone 用作 iBeacon 设备,而另一方面,我有一个 android 4.4.2 设备正在扫描来自 iPhone 的蓝牙 LE iBeacon 信号。我搜索了一种简单的方法来计算 iBeacons 和我的 Android 手机之间的距离,但我找不到任何可以帮助我解决此问题的方法。
你能帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:恐怕无法准确测量信标距离,这就是为什么 Apple 自己的代码只显示“立即”、“近”、“远”和“未知”的原因。您可以做的最好的事情是重建您期望的条件,然后进行试错测试以将信号强度映射到可能的距离。相信我:我花了 很多 时间尝试使用一系列硬件进行信标距离测量。
请记住,蓝牙 LE 中的 LE 意思是“低能耗”——这个东西的设计目的是尽可能少地使用电力。这意味着来自 iBeacons 的信号会被人、墙壁和其他物体中断。所以,如果我手里拿着一个信标,把手机放在它旁边,我会得到一个强信号。如果我将信标移到背后,信号强度就会崩溃。如果我只是转身,那也有同样的效果(出于同样的原因)。
如果您想采用“尽力而为”的方法,那么您实际上必须至少部分地重新创建将使用您的应用的环境。因此,如果您的应用程序将在办公室中使用,请找到一个办公室并在那里放置一些信标。在商店里也一样。
然后取出您的应用并测量距信标不同距离的信标强度,可能会遇到障碍物。通过一些平均,您最终会得到类似“在 1 米处我的信号强度为 X,在 5 米处为 Y,在 10 米处为 Z”之类的东西,然后您将其输入到您的距离计算中。实际上,这是一个有根据的猜测。
如果您发现任何声称为您提供信标距离的图书馆,这仅意味着他们已经根据自己的信号强度测试进行了有根据的猜测。
提示:如果可以,请将信标贴在天花板上。这最大限度地减少了在您的信标和您的应用程序之间出现障碍物(阅读:人)的机会。
【讨论】:
【参考方案2】:我们在Android Beacon Library 中构建了一个距离估计公式:d=A*(r/t)^B+C
,其中 d 是以米为单位的距离,r 是设备测量的 RSSI,t 是 1 米处的参考 RSSI。 A、B 和 C 是常数。你可以阅读更多关于它的信息here. 要将它与图书馆一起使用,你可以选择一个信标,然后简单地调用:
beacon.getDistance();
这会返回以米为单位的距离估计值。库代码是开源的,所以如果不想使用库可以复制公式直接使用。
正如@TwoStraws 所说,距离估计是对信标距离的粗略猜测,您得到的结果因许多因素而异:
-
接收设备上的天线增益。 (每个 Android 设备型号都略有不同)
手机内用于测量蓝牙信号强度的 A/D 转换器的噪声。
房间里的无线电噪音。
发射器和接收器之间的任何障碍物。
反射无线电信号的任何表面(尤其是金属)。
请确保您正确设定了您的期望。距离估计有助于确定信标是近还是远,或者一个信标是否比另一个更近。但它们对于测量绝对距离的用处不大。
【讨论】:
以上是关于如何测量像 iBeacon 一样的 iPhone 和 Android 设备之间的距离的主要内容,如果未能解决你的问题,请参考以下文章
iBeacon 广告 - 测量。功率/发射功率以确定与 iBeacon 的大致接近程度?
如何在后台应用程序和iphone重启时使用ibeacon[关闭]