如何使用蓝牙测量两个iPhone设备之间的距离?

43

我想使用蓝牙实现以下功能:

  1. 测量并显示我的iPhone与另一个iPhone之间的距离。
  2. 显示我的iPhone所处的方向。

例如,

我希望在我的iPhone应用程序中显示以下内容:

我的iPhone已连接到另一个iPhone:Harry的iPhone。

在这种情况下,

  • 距离:3米45.3厘米(准确度:毫米)
  • 方向:东北方(8个可用方向之一)

有人知道怎么做吗?


为了计算两个设备之间的距离,是否可以执行一种ping操作并计算获取响应所需的时间? - user627832
7个回答

37
使用蓝牙进行定位是一个非常知名的研究领域(参考文献)。简单来说,你不能够通过信号强度来准确测量两个连接的蓝牙设备之间的距离,因为它太容易受到环境条件的影响(是否有人在设备之间?所有者如何握着他/她的设备?是否有墙壁?是否有任何射频反射表面?)。使用蓝牙,你最多只能获得几米的距离分辨率,但你无法计算方向,甚至不粗略地计算。你可以通过使用多个蓝牙设备并三角定位各种信号强度来获得更好的结果,但即使在这种情况下,你的估计也很难比几米更准确。

9
你可以利用声音和对声速的了解来计算iPhone之间的距离。

8

iOS7引入了iBeacons技术,可以测量两部手机之间的距离。这种技术非常容易设置,你可以查看WWDC示例AirLocate来了解更多。


4
与任何基于射频功率的距离测量一样,它也不会非常精确。 - Chris Stratton
我发现它非常准确。它可以返回我所在位置的0.1/0.2米范围内的位置。 - CW0007007

4
您无法使用蓝牙完成此操作。您可以通过分析蓝牙接收质量来测量两个蓝牙设备之间的距离,但这在每个新环境中都会有很大的差异(例如,在一个新房间或户外)。就方向而言,室内尤其存在同样的问题。大量的蓝牙信号回波几乎使得接收到有用的定向数据变成了不可能。虽然没有标准客户设备可以实现,但是通过无线连接(无论是蓝牙、WLAN、ZigBee还是其他什么)有一些方法可以确定距离和方向,但需要使用真正的高科技实验室设备。

如果我们假设设备之间没有墙壁或障碍物,那么是否可以计算距离? - Floppy Max
不,由于BT天线没有定向到特定方向,因此两个设备之间直接视野中有墙壁并不重要。如果天线是有定向性的(类似于超声波距离测量工具),那么它可能会起作用,但iPhone中的天线具有太宽的波束角度。 - heb

0

关于方向,您需要将手机远离身体并旋转一圈,让手机测量信号强度的增加/减少。不确定iPhone的信号接收效果如何。

您可以通过观察信号接收强度来估算距离。为了获得一些相对合理的指标以在应用程序中使用,您需要在不同的环境中进行多次测试。


你好,Simon,感谢您的回复。正如您所知,iPhone SDK 不支持任何实用程序来计算 iPhone 设备之间的距离。 它仅支持连接性和数据传输。关于信号强度,我不知道如何获取信号强度。您可以告诉我更多详情吗?谢谢。 - Floppy Max
很抱歉,我不能告诉你更多的细节。如果iPhone只支持连接和数据传输,那么你无法计算距离或方位。我必须在这里同意heb和Guiseppe的观点。也许使用正确的设备是可能的,但不适用于简单的消费设备。 - Simon Hughes

0

你不能仅针对一个蓝牙设备进行操作,但如果使用2个设备则可能。假设这2个远程设备是静止的(扬声器),而你移动了你的手机(想法很好),你应该能够根据从这2个设备的距离变化速度来推导出你的角度。唯一的问题是解决方案有2个值,但如果你知道你在平面的哪一侧,那么这可能是可行的。


但角度的准确性仍然会受到测量到固定外部信标距离的准确性的限制,除非在具有精确已知参数的非常特定的环境中进行测量,否则这本身就是一项非常具有挑战性的任务。考虑到现代日常环境,这将导致高度不准确的读数,往往无法作为测量工具使用。 - Bence Szalai

-1
正如Giuseppe Cardone所提到的,使用信号强度是行不通的。然而,我建议请求其他设备的位置信息(假设您在其他设备上安装了一个应用程序来回复位置请求)。一旦您从其他设备获取了位置信息,您可以将其与您的设备位置进行比较,并计算距离和方向。

这可能在应用中使用GPS在室外工作。仅使用蓝牙可能会很困难,因为iPhone在预实现的配置文件以外的蓝牙支持较弱。 - jhonkola

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接