Jak obliczyć odległość od routera Wi-Fi za pomocą siły sygnału?

84

Chciałbym obliczyć dokładną lokalizację urządzenia mobilnego wewnątrz budynku (więc nie ma dostępu do GPS)

Chcę to zrobić, używając siły sygnału (w dBm) co najmniej 3 stałych sygnałów Wi-Fi (3 stałe routery, których położenie znam)

Google już to robi i chciałbym wiedzieć, w jaki sposób ustalają dokładną lokalizację na podstawie tych danych

Więcej informacji znajdziesz w tym artykule: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

Ihab
źródło
stackoverflow.com/questions/4071539/… Oto link do Twojego odniesienia.
yokoyoko
4
To pytanie wydaje się nie na temat, ponieważ dotyczy elektrotechniki. Proponuję migrację do electronics.stackexchange.com
Danny Varod,
@lhab Hajj, moje wymagania są takie same jak twoje. Musisz to rozwiązać? Podziel się swoim pomysłem, aby inni również mogli się z tego uczyć. Dziękuję Ci.
anddev

Odpowiedzi:

47

FSPL zależy od dwóch parametrów: Pierwszy to częstotliwość sygnałów radiowych ; Drugi to odległość transmisji bezprzewodowej. Poniższy wzór może odzwierciedlać relacje między nimi.

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

Z równania Fade Margin można obliczyć utratę ścieżki w wolnej przestrzeni za pomocą następującego równania.

Utrata ścieżki wolnej przestrzeni = Utrata kabla Tx Power-Tx + Wzmocnienie anteny Tx + Wzmocnienie anteny Rx - Utrata kabla Rx - Czułość Rx - Margines zanikania

Dzięki powyższym dwóm równaniom utraty ścieżki w wolnej przestrzeni możemy obliczyć Odległość w km.

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

Strefa Fresnela to obszar wokół linii widzenia, do którego rozchodzą się fale radiowe po opuszczeniu anteny. Chcesz mieć wyraźną linię wzroku, aby utrzymać siłę, szczególnie w przypadku systemów bezprzewodowych 2,4 GHz. Dzieje się tak, ponieważ fale 2,4 GHz są pochłaniane przez wodę, podobnie jak woda znajdująca się na drzewach. Praktyczna zasada jest taka, że ​​60% Strefy Fresnela musi być wolne od przeszkód. Zwykle 20% blokada strefy Fresnela powoduje niewielką utratę sygnału w łączu. Powyżej 40% blokady utrata sygnału będzie znacząca.

FSPLr=17.32*√(d/4f)

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

Źródło: http://www.tp-link.com/en/support/calculator/

Ihab
źródło
3
Dobra odpowiedź i mam dodatkowe pytanie. Jak dokładne są pomiary? Innymi słowy, czy mogę uzyskać dokładność w zakresie cali / centymetrów?
Chiwda
32

Aby obliczyć odległość, potrzebujesz siły sygnału i częstotliwości sygnału. Oto kod 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);
}

Zastosowana formuła to:

odległość = 10 ^ ((27,55 - (20 * log10 (częstotliwość)) + signalLevel) / 20)

Przykład: częstotliwość = 2412 MHz, signalLevel = -57dbm, wynik = 7.000397427391188m

Ta formuła jest przekształcona w formułę Free Space Path Loss (FSPL) . Tutaj odległość jest mierzona w metrach, a częstotliwość w megahercach. Dla innych miar musisz użyć innej stałej (27,55). Przeczytaj o stałych tutaj .

Więcej informacji znajdziesz tutaj .

Mario Kutlev
źródło
Dzięki za sprecyzowanie, że ma to być wartość bezwzględna poziomu sygnału, szukałem od jakiegoś czasu co się nie udało!
Yiannis Tsimalis
@YiannisTsimalis Pytanie dla początkujących: czy powinna to być wartość bezwzględna, czy po prostu pomnożyć przez minus? A co, jeśli poziom sygnału był dodatni w dBm?
Ellis Valentiner
@ user12202013 hmm Myślę, że to zależy od tego, jak działa twój punkt dostępu. Ogólnie rzecz biorąc, system dBm wskazuje, jak głośny jest twój sygnał. Im wyższa wartość, tym sygnał jest głośniejszy, co w rzeczywistości oznacza, że ​​sygnał jest słabszy. A przynajmniej tak to rozumiem ..
Yiannis Tsimalis
@YiannisTsimalis Myślałem bardziej ogólnie, ale po spojrzeniu na wzór uważam, że wartość bezwzględna jest poprawna, ponieważ odległość powinna być dodatnia
Ellis Valentiner
1
Badałem tę formułę już od dłuższego czasu i doszedłem do wniosku, że jest całkowicie błędna! FSPL jest mierzony w db, a signalLevel w dbm. Może to dać dobre oszacowanie, ale wyniki mogą się łatwo zepsuć, gdy odległość stanie się dość duża.
Ahmed Hammad
16
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )

Tutaj:

  • K- stała (32,44 fw MHz i dkm, zmiana na -27,55 fw MHz i dm)
  • FSPL - Utrata ścieżki wolnej przestrzeni
  • Ptx - moc nadajnika, dBm (do 20 dBm (100mW))
  • CLtx, CLrx- utrata kabla w nadajniku i odbiorniku, dB (0, jeśli brak kabli)
  • AGtx, AGrx- zysk anteny na nadajniku i odbiorniku, dBi
  • Prx - czułość odbiornika, dBm (do -100 dBm (0,1pW))
  • FM - margines zanikania, dB (ponad 14 dB (normalnie) lub więcej niż 22 dB (dobrze))
  • f - częstotliwość sygnału, MHz
  • d - odległość, m lub km (w zależności od wartości K)

Uwaga: w formułach ze strony wsparcia TP-Link jest błąd (mising ^).

Zastąp Prxmocą odbieranego sygnału, aby uzyskać odległość od punktu dostępu WiFi.

Przykład: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (siła odbieranego sygnału), CLtx = 0, CLrx = 0, f = 2442 MHz (siódmy kanał 802.11bgn), FM = 22. Wynik: FSPL = 47 dB, d = 2,1865 m

Uwaga: FM (fade margin) wydaje się tutaj nieistotne, ale zostawiam to z powodu oryginalnej formuły.

Powinieneś wziąć pod uwagę ściany konta, może pomóc tabela http://www.liveport.com/wifi-signal-attenuation .

Przykład: (poprzednie dane) + jedna drewniana ściana (5 dB, z tabeli). Wynik: FSPL = FSPL - 5 dB = 44 dB, d = 1,548 m

Należy również pamiętać, że wzmocnienie anteny nie dodaje mocy - opisuje kształt charakterystyki promieniowania (pierścień w przypadku anteny dookólnej, zeppelin w przypadku anteny kierunkowej itp.).

Żadne z nich nie uwzględnia odbić sygnału (nie mam pojęcia, jak to zrobić). Prawdopodobnie brakuje również hałasu. Więc ta matematyka może być dobra tylko do przybliżonego oszacowania odległości.

kestasx
źródło
7

prostą odpowiedzią na twoje pytanie byłaby triangulacja. Na czym zasadniczo polega koncepcja wszystkich urządzeń GPS, przeczytałbym ten artykuł, aby dowiedzieć się więcej o tym, jak Google to robi: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

Z mojego zrozumienia korzystają z usługi podobnej do Skyhook , czyli oprogramowania do lokalizacji, które określa Twoją lokalizację na podstawie sygnałów Wi-Fi / telefonu komórkowego. Aby osiągnąć swoją dokładność, usługi te mają duże serwery baz danych, które przechowują informacje o lokalizacji w tych wieżach komórkowych i punktach dostępu Wi-Fi - w rzeczywistości badają obszary metropolitalne, aby zapewnić ich aktualność. Zakładam, że abyś mógł osiągnąć coś podobnego, musisz skorzystać z usługi takiej jak Skyhook - możesz skorzystać z ich SDK ( http://www.skyhookwireless.com/location-technology/ ).

Jeśli jednak chcesz zrobić coś wewnętrznego (na przykład użyć lokalizacji własnych routerów) - prawdopodobnie będziesz musiał stworzyć algorytm, który naśladuje triangulację. Będziesz musiał znaleźć sposób na uzyskanie signal_strengthi mac_addressz urządzenia i użyć tych informacji wraz z lokalizacjami routerów, aby określić lokalizację. Prawdopodobnie możesz uzyskać informacje o urządzeniach podłączonych do routerów, wykonując coś podobnego ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).

Suvi Vignarajah
źródło
jest to trudne i wymagające zadanie, z chęcią dowiedziałem się więcej o tym aspekcie usług lokalizacyjnych… proszę o publikowanie wszelkich nowych informacji / spostrzeżeń dotyczących tego problemu, jestem zainteresowany wiedzą, jak go rozwiązać
Suvi Vignarajah
5

Odległość (km) = 10 ^ ((Utrata ścieżki w wolnej przestrzeni - 92,45 - 20log10 (f)) / 20)

MAX
źródło
1

Ogólnie rzecz biorąc, jest to naprawdę zły sposób robienia rzeczy z powodu zakłóceń wielościeżkowych . Jest to zdecydowanie bardziej kwestia inżynierii RF niż kodowania.

Tl; dr, energia RF Wi-Fi jest rozpraszana w różnych kierunkach po odbiciu się od ścian, ludzi, podłogi itp. Nie ma sposobu, aby stwierdzić, gdzie jesteś, tylko przez trianglację, chyba że jesteś w pustym pokoju z umieszczonymi w nim sygnalizatorami Wi-Fi dokładnie we właściwym miejscu.

Google jest w stanie sobie z tym poradzić, ponieważ zasadniczo może mapować, gdzie każdy identyfikator SSID Wi-Fi znajduje się w lokalizacji GPS, gdy dowolny użytkownik Androida (który zdecyduje się na ich usługę) znajdzie się w zasięgu. W ten sposób następnym razem, gdy użytkownik przejdzie obok niego, nawet bez idealnego sygnału GPS, statek-matka Google może powiedzieć, gdzie jesteś. Zwykle używają tego w połączeniu z kiepskim sygnałem GPS.

To, co widziałem, to siatka urządzeń Zigbee lub BTLE. Jeśli wiesz, gdzie są one rozmieszczone, możesz użyć połączonego RSS, aby dowiedzieć się, które z nich są najbliżej, i przejść dalej.

yhyrcanus
źródło
Aby uzyskać więcej informacji o tym, jak to robi Google, stackoverflow.com/questions/1668304/…
yhyrcanus
-5

Nie obchodzi mnie, czy jesteś moderatorem. Napisałem swój tekst do odbiorców, a nie jako autor techniczny

Wszystko, czego potrzebujesz, aby nauczyć się nawigować za pomocą narzędzi, które są starsze niż GPS. Coś jak sekstant, oktant, backstaff lub astrolabium.

Jeśli otrzymałeś sygnał z 3 różnych lokalizacji, wystarczy zmierzyć siłę sygnału i wykonać stosunek z tych lokalizacji. Proste obliczenia trójkąta, gdzie a2 + b2 = c2. Im silniejszy sygnał, tym bliżej odbiornika znajduje się urządzenie.

Wayne Hamberg
źródło