如何测量像iBeacon这样的iPhone和Android设备之间的距离

时间:2015-12-17 15:02:08

标签: android ios distance ibeacon bluetooth-lowenergy

我使用我的iPhone作为iBeacon设备,另一方面我有一台Android 4.4.2设备扫描来自iPhone的蓝牙LE iBeacon信号。我搜索了一个简单的方法来计算iBeacons和我的Android手机之间的距离,但我找不到任何可以帮助我的东西。

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

准确测量信标距离是不可能的,我担心,这就是为什么Apple自己的代码只是说“立即”,“近”,“远”和“未知”。您可以做的最好的事情是设置重建您期望的条件,然后进行试验和错误测试,以将信号强度映射到可能的距离。相信我:我花了很多时间尝试使用一系列硬件进行信标距离测量。

请记住,蓝牙LE中的LE意味着“低能耗” - 这些东西的设计目的是尽可能少地使用。这意味着来自iBeacons的信号被人,墙和其他物体打断。所以,如果我手里拿着一个灯塔并把手机放在旁边,我会收到一个强烈的信号。如果我将信标移到背后,信号强度就会崩溃。如果我只是转身,那就会产生同样的效果(出于同样的原因)。

如果您希望了解“尽力而为”的方法,则必须至少部分地重新创建应用程序的环境。因此,如果您的应用程序将在办公室中使用,请找一个办公室并在那里放置一些信标。在商店里也一样。

然后让你的应用程序出来并测量到信标的不同距离的信标强度,可能会遇到障碍。通过一些平均,你得到的结果是“1米处我的信号强度为X,5米处是Y,10米处是Z”等等,然后将其输入到距离计算中。实际上,它是一种有根据的猜测。

如果你找到任何声称为你做信标间隔的图书馆,那就意味着他们已根据自己的信号强度测试采取了他们自己受过教育的猜测。

一个提示:如果你能够,将你的信标贴在天花板上。这样可以最大限度地减少障碍物(阅读:人物)在您的灯塔和应用程序之间的可能性。

答案 1 :(得分:1)

我们将距离估算公式建立为Android Beacon Library格式:d=A*(r/t)^B+C,其中d是以米为单位的距离,r是设备测量的RSSI,t是1的参考RSSI仪表。 A,B和C是常数。您可以阅读有关它的更多信息here.要将其与库一起使用,您可以选择信标,然后只需致电:

beacon.getDistance();

返回以米为单位的距离估计值。库代码是开源的,因此如果您不想使用该库,您可以复制该公式并直接使用它。

正如@TwoStraws所指出的那样,距离估计是对信标离开多远的粗略猜测,并且您获得的结果会因许多因素而变化:

  1. 接收设备上的天线增益。 (每个Android设备型号略有不同)
  2. 手机内部A / D转换器上的噪音测量蓝牙信号强度。
  3. 房间里的无线电噪音。
  4. 发射器和接收器之间有任何障碍物。
  5. 反射无线电信号的任何表面(尤其是金属)。
  6. 请确保正确设定您的期望。距离估计有助于确定信标是近还是远,或者一个信标是否比另一个更近。但它们对测量绝对距离的作用不大。