信号強度を使用してWifiルーターからの距離を計算するにはどうすればよいですか?


84

建物内のモバイルデバイスの正確な位置を計算したいので(GPSアクセスなし)

少なくとも3つの固定wifi信号(位置がわかっている3つの固定ルーター)の信号強度(dBm)を使用してこれを実行したい

グーグルはすでにそれを行っています、そして私は彼らがこのデータに基づいて正確な場所をどのように把握するか知りたいです

詳細については、この記事を確認してください:http//www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets


stackoverflow.com/questions/4071539/… ここにあなたの参照のためのリンクがあります。
yokoyoko 2012年

4
この質問は電気工学に関するものであるため、トピックから外れているようです。electronics.stackexchange.comに
Danny Varod 2013

@lhab Hajj、私の要件はあなたと同じです。これを解決する必要がありますか?他の人もそこから学ぶことができるようにあなたのアイデアを共有してください。ありがとうございました。
anddev 2015年

回答:


47

FSPLは、2つのパラメータに依存します。1つは無線信号の周波数、2つ目は無線伝送距離です。次の式は、それらの間の関係を反映できます。

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

フェードマージンの式から、自由空間経路損失は次の式で計算できます。

自由空間経路損失= Tx電力-Txケーブル損失+ Txアンテナゲイン+ Rxアンテナゲイン-Rxケーブル損失-Rx感度-フェージングマージン

上記の2つの自由空間経路損失の式を使用して、距離を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/


3
良い答えです。フォローアップの質問があります。測定はどのくらい正確ですか?言い換えれば、インチ/センチメートルの範囲の精度を得ることができますか?
チウダ2016年

32

距離を計算するには、信号強度と信号の周波数が必要です。これが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 * log10(frequency))+ signalLevel)/ 20)

例:周波数= 2412MHz、signalLevel = -57dbm、結果= 7.000397427391188m

この式は、自由空間経路損失(FSPL)式の変換された形式です。ここでは、距離はメートルで測定され、周波​​数はメガヘルツで測定されます。他の測定では、異なる定数(27.55)を使用する必要があります。ここで定数を読んでください

詳細については、こちらをお読みください


信号レベルの絶対値を指定してくれてありがとう、何が悪いのか探していました!
Yiannis Tsimalis 2015年

@YiannisTsimalis初心者の質問:絶対値にするべきですか、それとも負の値を掛けるだけですか?信号レベルが正のdBmの場合はどうなりますか?
Ellis Valentiner

@ user12202013うーんそれはあなたのアクセスポイントがどのように機能するかに依存すると思います。つまり、一般的に、dBmシステムは信号のノイズを示します。値が高い場合、信号のノイズが大きくなります。つまり、実際には信号が弱くなります。あるいは、少なくとも、これは..私はそれを理解する方法です
Yiannis Tsimalis

@YiannisTsimalis私はもっと一般的に考えていましたが、式を見た後、距離は正でなければならないので絶対値は正しいと思います
Ellis Valentiner

1
私はかなり前からこの公式を調査してきましたが、それは完全に間違っていると結論付けました!FSPLはdbで測定され、signalLevelはdbmで測定されます。良い見積もりが得られるかもしれませんが、距離がかなり大きくなると、結果が簡単に台無しになる可能性があります。
AhmedHammad19年

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

ここに:

  • K-定数(32.44、fMHzおよびdkmの場合f、-27.55に変更(MHzおよびdmの場合))
  • FSPL -自由空間経路損失
  • Ptx -送信機電力、dBm(最大20 dBm(100mW))
  • CLtxCLrx-送信機と受信機でのケーブル損失、dB(0、ケーブルがない場合)
  • AGtxAGrx-送信機と受信機でのアンテナゲイン、dBi
  • Prx -レシーバ感度、dBm(-100 dBm(0.1pW)まで)
  • FM -フェードマージン、dB(14 dB以上(通常)または22 dB以上(良好))
  • f -信号周波数、MHz
  • d -距離、mまたはkm(Kの値によって異なります)

注:TP-Linkサポートサイトの数式にエラーがあります(mising ^)。

置き換えPrxのWiFi APからの距離を取得するために、受信信号強度と。

例: Ptx = 16 dBm、AGtx = 2 dBi、AGrx = 0、Prx = -51 dBm(受信信号強度)、CLtx = 0、CLrx = 0、f = 2442 MHz(7番目の802.11bgnチャネル)、FM = 22.結果:FSPL = 47 dB、d = 2.1865 m

注:FM(フェードマージン)はここでは関係ないようですが、元の式のために残しておきます。

壁を数える必要があります。表http://www.liveport.com/wifi-signal-attenuationが役立つ場合があります。

例:前のデータ)+ 1つの木製の壁(5 dB、表から)。結果:FSPL = FSPL-5 dB = 44 dB、d = 1.548 m

また、アンテナゲインは電力を追加しないことに注意してください。これは、放射パターンの形状を表します(全方向性アンテナの場合はドーナツ、指向性アンテナの場合はツェッペリンなど)。

これはいずれも信号の反射を考慮していません(これを行う方法がわかりません)。おそらくノイズも欠けています。したがって、この計算は、大まかな距離の推定にのみ適している可能性があります。


7

あなたの質問に対する簡単な答えは三角測量でしょう。これは基本的にすべてのGPSデバイスの概念です。この記事を読んで、Googleがこれを行う方法について詳しく学んでください。http//www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId = 15&pageNumber = 2

私の理解では、彼らはスカイフックに似たサービスを使用しています。スカイフックは、wifi /携帯電話の信号に基づいて位置を特定する位置情報ソフトウェアです。これらのサービスは、正確さを実現するために、これらのセルタワーとwifiアクセスポイントの位置情報を格納するデータベースの大規模サーバーを備えています。実際には、大都市圏を調査して最新の状態に保ちます。同様のことを実現するには、Skyhookのようなサービスを使用する必要があると思います。SDK(http://www.skyhookwireless.com/location-technology/)を使用できます。

ただし、(独自のルーターの場所を使用するなど)内部で何かを実行する場合は、三角測量を模倣するアルゴリズムを作成する必要があります。あなたは得るための方法を見つける必要があるでしょうsignal_strengthし、mac_addressデバイスのと場所を思い付くためにあなたのルーターの場所と一緒にその情報を使用します。これと同様のことを行うことで、ルーターに接続されているデバイスに関する情報を取得できる可能性があります(http://www.makeuseof.com/tag/check-stealing-wifi/)。


これはトリッキーでやりがいのある作業です。位置情報サービスのこの側面についてもっと知りたいと思っています。この問題について新しい情報や洞察を投稿してください。どのように解決するか知りたいです
Suviヴィニャラジャ

5

距離(km)= 10 ^((自由空間経路損失– 92.45 – 20log10(f))/ 20)


1

一般的に、これはマルチパス干渉のために物事を行うための本当に悪い方法です。これは間違いなく、コーディングの問題というよりもRFエンジニアリングの問題です。

Tl; dr、wifi RFエネルギーは、壁、人、床などで跳ね返った後、さまざまな方向に散乱します。wifiビーコンが配置された空の部屋にいない限り、三角測量だけで現在地を特定する方法はありません。まさに正しい場所。

Googleは、Androidユーザー(サービスにオプトインしている)が範囲内に入ると、基本的にすべてのWi-FiSSIDがGPSの場所にマッピングできるため、これを回避できます。そうすれば、次にユーザーがそこを歩いたときに、完全なGPS信号がなくても、グーグルマザーシップはあなたがどこにいるかを知ることができます。通常、彼らはそれを安っぽいGPS信号と組み合わせて使用​​します。

私が行ったのは、ZigbeeまたはBTLEデバイスのグリッドです。これらがどこに配置されているかがわかっている場合は、結合されたRSSを使用して、最も近いものを相対的に把握し、そこから移動できます。


より多くのGoogleはそれがない方法についての情報はstackoverflow.com/questions/1668304/...
yhyrcanus

-5

あなたがモデレーターであるかどうかは気にしないでください。テクニカルライターとしてではなく、聴衆に向けてテキストを書きました

GPSより前のツールを使ってナビゲートする方法を学ぶ必要があります。六分儀、八分儀、バックスタッフ、アストロラーベのようなもの。

3つの異なる場所から信号を受信した場合は、信号強度を測定し、それらの場所から比率を作成するだけで済みます。a2 + b2 = c2の単純な三角形の計算。信号強度が強いほど、デバイスは受信機に近くなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.