2012-06-27 474 views
55

我想计算建筑物(所以没有GPS访问)如何使用信号强度来计算Wifi路由器的距离?

我想这样做使用信号强度(以dBm为单位)至少3个固定WiFi信号的内部的移动设备的确切位置(3固定其中,路由器,我知道位置)

谷歌已经做到这一点,我想知道基础上,这个数据

检查这篇文章的详细信息,他们是如何计算出准确位置:http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

+0

http://stackoverflow.com/questions/4071539/finding-out-distance-between-router-and-receiver 这里是链接,供大家参考。 – yokoyoko

+2

这个问题似乎是无关紧要的,因为它涉及电气工程。我建议迁移到http://electronics.stackexchange.com/ –

+0

@lhab朝觐,我的要求与你的相同。必须解决这个问题吗?请分享你的想法,以便其他人也可以从中学习。谢谢。 – anddev

回答

2

对你的问题的简单回答就是Tr iangulation。这基本上是所有GPS设备中的概念,我将阅读这篇文章以更多地了解Google如何执行此操作:http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber=2

从我的理解中,他们使用的服务类似于Skyhook,这是一个定位软件,可以根据您的wifi /手机信号来确定您的位置。为了实现这些服务的准确性,这些服务拥有大量的数据库服务器,这些服务器在这些手机信号塔和无线接入点上存储位置信息 - 他们实际上在调查大都会地区以保持最新状态。为了达到类似的效果,我认为你必须使用Skyhook这样的服务 - 你可以使用他们的SDK(http://www.skyhookwireless.com/location-technology/)。然而,如果你想做一些内部的事情(比如使用你自己的路由器的位置) - 那么你可能需要创建一个模仿Triangulation的算法。您必须找到一种方法来获取设备的signal_strengthmac_address,并使用该信息以及路由器的位置来提供该位置。您可以通过执行与此类似的操作(http://www.makeuseof.com/tag/check-stealing-wifi/)来获得有关连接到路由器的设备的信息。

+0

这是一项棘手而且具有挑战性的任务,你让我热衷于更多地了解位置服务的这方面内容。请发布任何有关此问题的新信息/见解,我有兴趣了解如何解决它 –

29

FSPL取决于两个参数:一是无线电信号的频率;二是无线传输距离。下面的公式可以反映它们之间的关系。

FSPL (dB) = 20log10(d) + 20log10(f) + K 

d = distance 
f = frequency 
K= constant that depends on the units used for d and f 
If d is measured in kilometers, f in MHz, the formula is: 

FSPL (dB) = 20log10(d)+ 20log10(f) + 32.44 

从Fade Margin方程可以用下面的公式计算自由空间路径损耗。

自由空间路径损耗= Tx功率-TX电缆损耗+发射天线增益+接收天线增益 - RX电缆损耗 - 接收灵敏度 - 衰落余量

随着上述两个自由空间路径损耗公式,我们可以发现以km为单位的距离。

Distance (km) = 10(Free Space Path Loss – 32.44 – 20log10(f))/20 

菲涅耳区是无线电波在离开天线后向外扩散到视线周围的区域。你需要清晰的视线来保持强度,尤其是对于2.4GHz无线系统。这是因为2.4GHz的波浪被水吸收,就像树木中的水一样。经验法则是60%的菲涅耳区必须避开障碍物。通常情况下,20%的菲涅耳区阻塞对链路造成很小的信号损失。在40%以上的阻塞情况下,信号损失将变得显着。

FSPLr=17.32*√(d/4f) 

d = distance [km] 
f = frequency [GHz] 
r = radius [m] 

来源:http://www.tp-link.com/en/support/calculator/

+0

很好的答案,我有一个后续问题。测量精度如何?换句话说,我能以英寸/厘米的范围获得精度吗? – Chiwda

2

距离(公里)= 10 ^((自由空间路径损耗 - 92。45 - 20log10(f))/ 20)

+0

只要保持正确的一个。 –

20

要计算距离,您需要信号强度和信号频率。下面是Java代码:

public double calculateDistance(double signalLevelInDb, double freqInMHz) { 
    double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb))/20.0; 
    return Math.pow(10.0, exp); 
} 

使用的公式为:

距离= 10 ^((27.55 - (20 *日志10(频率))+信号电)/ 20)

实施例:频率= 2412MHz,信号电= -57dBm,结果=7.000397427391188米

该公式转化Free Space Path Loss(FSPL)式的形式。这里的距离用米和频率来衡量 - 以兆赫为单位。对于其他措施,你必须使用不同的常数(27.55)。请阅读常量here

欲了解更多信息,请阅读here

+0

我会尽快尝试,并与我们分享我的代码/发现 谢谢:) –

+0

感谢您指定它应该是信号电平的绝对值,我正在寻找一些时间我错了! –

+0

@IhabHajj现在已经有2年多了...有任何更新? – CodyBugstein

8
K = 32.44 
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM 
d = 10^((FSPL - K - 20 log10(f))/20) 

这里:

  • K - 常数(32.44,当f在MHz和d在千米,更改为-27.55时f在MHz和d以m)
  • FSPL - 自由空间路径损耗
  • Ptx - 发射机功率,dBm(最高20 dBm(100mW))
  • CLtxCLrx - 在发射机和接收机,分贝电缆损耗(0,如果没有电缆)
  • AGtxAGrx - 在发射机和接收机天线增益,dBi的
  • Prx - 接收器灵敏度,dBm的(低至-100 dBm的(0.1pW))
  • FM - 衰落余量,分贝(超过14分贝(正常)或超过22分贝(好))
  • f - 信号的频率,兆赫
  • d - 距离,米或公里(取决于K的值)

注意:TP-Link支持站点(mising ^)的公式中存在错误。

用接收信号强度代替Prx以获得与WiFi AP的距离。

示例:的Ptx = 16 dBm时,AGtx = 2 dBi的,AGrx = 0,的Prx = -51 dBm的(接收信号强度),CLtx = 0,CLrx = 0,F = 2442兆赫(7'th 802.11 bgn频道),FM = 22。结果:FSPL = 47 dB,d = 2.1865 m

注意:FM(淡入边际)似乎在这里是不相关的,但我因为原始公式而离开它。

你应该考虑墙壁,表http://www.liveport.com/wifi-signal-attenuation可能会有所帮助。

例如:(以前的数据)+一个木墙(5 dB,从表中)。结果:FSPL = FSPL - 5分贝= 44 dB时,d =1.548米

还请注意,增益的Antena添加不到风度功率 - 它描述在全向的Antena的情况下,形状辐射图案的(面包圈,定向天线情况下的齐柏林飞艇等)。

这些都不考虑信号反射(不知道如何做到这一点)。可能还有噪音。所以这个数学可能只适用于粗略的距离估计。

+0

好的,我看到很多不同的公式在这里被描述,其中大多数在某些方面是相似的。你确定你在正确的地方(距离等于)除以20吗?因为这只会消除20个学期。在下面的答案似乎是信号水平(绝对值)是包含在该部门 – Mazze

+0

此外,不知道我是否做错了,但你的例子似乎并没有返回正确的值。我得到一个非常奇怪的距离。请亲自看看: [Wolfram Alpha](http://www.wolframalpha.com/input/?source=nav&i=10%5E(47-32.44-20 * log10(2442)%2F20)) – Mazze

+0

@Mazze , 你是对的。我已经修复了公式(大括号缺失)。 [钨](http://www.wolframalpha.com/input/?source=nav&i=10^%28%2847-32.44-20*log10%282442%29%29%2F20%29)。 – kestasx