Come calcolare la distanza dal router Wifi utilizzando la potenza del segnale?


84

Vorrei calcolare la posizione esatta di un dispositivo mobile all'interno di un edificio (quindi nessun accesso GPS)

Voglio farlo utilizzando la potenza del segnale (in dBm) di almeno 3 segnali wifi fissi (3 router fissi di cui conosco la posizione)

Google lo fa già e vorrei sapere come fanno a capire la posizione esatta in base a questi dati

Controlla questo articolo per maggiori dettagli: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets


stackoverflow.com/questions/4071539/… Ecco il link per riferimento.
yokoyoko

4
Questa domanda sembra essere fuori tema perché riguarda l'ingegneria elettrica. Suggerisco di migrare a electronics.stackexchange.com
Danny Varod

@lhab Hajj, la mia richiesta è uguale alla tua. Devi risolverlo? Per favore condividi la tua idea in modo che anche gli altri possano imparare da questo. Grazie.
anddev

Risposte:


47

FSPL dipende da due parametri: il primo è la frequenza dei segnali radio, il secondo è la distanza di trasmissione wireless. La seguente formula può riflettere la relazione tra di loro.

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

Dall'equazione del margine di dissolvenza, la perdita del percorso dello spazio libero può essere calcolata con la seguente equazione.

Perdita percorso spazio libero = Perdita cavo alimentazione Tx-Tx + Guadagno antenna Tx + Guadagno antenna Rx - Perdita cavo Rx - Sensibilità Rx - Margine dissolvenza

Con le due precedenti equazioni di perdita del percorso nello spazio libero, possiamo trovare la distanza in km.

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

La zona di Fresnel è l'area intorno alla linea visiva in cui le onde radio si diffondono dopo aver lasciato l'antenna. Vuoi una linea di vista chiara per mantenere la forza, soprattutto per i sistemi wireless a 2,4 GHz. Questo perché le onde a 2,4 GHz vengono assorbite dall'acqua, come l'acqua che si trova negli alberi. La regola pratica è che il 60% della zona di Fresnel deve essere libera da ostacoli. In genere, il blocco della zona di Fresnel del 20% introduce una piccola perdita di segnale al collegamento. Oltre il 40% di blocco, la perdita di segnale diventerà significativa.

FSPLr=17.32*√(d/4f)

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

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


3
Buona risposta e ho una domanda di follow-up. Quanto sono accurate le misurazioni? In altre parole, posso ottenere precisioni nell'intervallo pollici / centimetri?
Chiwda

33

Per calcolare la distanza è necessaria la potenza del segnale e la frequenza del segnale. Ecco il codice 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);
}

La formula utilizzata è:

distanza = 10 ^ ((27,55 - (20 * log10 (frequenza)) + signalLevel) / 20)

Esempio: frequency = 2412MHz, signalLevel = -57dbm, risultato = 7.000397427391188m

Questa formula viene trasformata in forma di formula FSPL (Free Space Path Loss) . Qui la distanza è misurata in metri e la frequenza - in megahertz. Per altre misure devi usare una costante diversa (27.55). Leggi qui le costanti .

Per maggiori informazioni leggi qui .


Grazie per aver specificato che dovrebbe essere il valore assoluto del livello del segnale, cercavo da tempo cosa avevo sbagliato!
Yiannis Tsimalis

@YiannisTsimalis domanda per principianti: dovrebbe essere un valore assoluto o semplicemente moltiplicare per negativo? E se il livello del segnale fosse positivo in dBm?
Ellis Valentiner

@ user12202013 hmm Penso che dipenda da come funziona il tuo punto di accesso. Voglio dire, in generale, il sistema dBm indica quanto è rumoroso il tuo segnale. Se il valore è più alto, il segnale è più rumoroso, il che significa in realtà che il segnale è più debole. O almeno è così che la capisco ..
Yiannis Tsimalis

@YiannisTsimalis stavo pensando più in generale ma dopo aver esaminato la formula penso che il valore assoluto sia corretto perché la distanza dovrebbe essere positiva
Ellis Valentiner

1
Sto indagando su questa formula da un po 'di tempo e ho concluso che è completamente sbagliata! FSPL è misurato in db, mentre signalLevel è misurato in dbm. Può fornire una buona stima, ma i risultati possono facilmente essere confusi quando la distanza diventa abbastanza grande.
Ahmed Hammad

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

Qui:

  • K- costante (32,44, quando fin MHz e din km, passare a -27,55 quando fin MHz e din m)
  • FSPL - Perdita di percorso di spazio libero
  • Ptx - potenza del trasmettitore, dBm (fino a 20 dBm (100 mW))
  • CLtx, CLrx- perdita del cavo su trasmettitore e ricevitore, dB (0, in assenza di cavi)
  • AGtx, AGrx- guadagno dell'antenna su trasmettitore e ricevitore, dBi
  • Prx - sensibilità del ricevitore, dBm (fino a -100 dBm (0,1pW))
  • FM - margine di dissolvenza, dB (più di 14 dB (normale) o più di 22 dB (buono))
  • f - frequenza del segnale, MHz
  • d - distanza, mo km (dipende dal valore di K)

Nota: c'è un errore nelle formule dal sito di supporto TP-Link (mising ^).

Sostituisci Prxcon la potenza del segnale ricevuto per ottenere una distanza dall'AP WiFi.

Esempio: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (potenza del segnale ricevuto), CLtx = 0, CLrx = 0, f = 2442 MHz (7 ° canale 802.11bgn), FM = 22. Risultato: FSPL = 47 dB, d = 2,1865 m

Nota: FM (margine di dissolvenza) sembra essere irrilevante qui, ma lo lascio a causa della formula originale.

Dovresti prendere in considerazione i muri, la tabella http://www.liveport.com/wifi-signal-attenuation può aiutare.

Esempio: (dati precedenti) + una parete in legno (5 dB, dalla tabella). Risultato: FSPL = FSPL - 5 dB = 44 dB, d = 1.548 m

Inoltre, tieni presente che il guadagno dell'antena non aggiunge potenza: descrive la forma del diagramma di radiazione (ciambella in caso di antenna omnidirezionale, zeppelin in caso di antenna direzionale, ecc.).

Niente di tutto questo tiene conto dei riflessi del segnale (non hai idea di come farlo). Probabilmente manca anche il rumore. Quindi questa matematica può essere utile solo per la stima approssimativa della distanza.


7

la semplice risposta alla tua domanda sarebbe Triangolazione. Che è essenzialmente il concetto in tutti i dispositivi GPS, vorrei leggere questo articolo per saperne di più su come Google fa questo: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

Da quanto mi risulta , usano un servizio simile a Skyhook , che è un software di localizzazione che determina la tua posizione in base ai segnali wifi / cellulare. Per ottenere la loro precisione, questi servizi dispongono di grandi server di database che memorizzano le informazioni sulla posizione su queste torri cellulari e punti di accesso Wi-Fi: in realtà controllano le aree metropolitane per mantenerle aggiornate. Per ottenere qualcosa di simile, presumo che dovresti utilizzare un servizio come Skyhook: puoi utilizzare il loro SDK ( http://www.skyhookwireless.com/location-technology/ ).

Tuttavia, se vuoi fare qualcosa di interno (come usare le posizioni dei tuoi router), probabilmente dovrai creare un algoritmo che imiti la triangolazione. Dovrai trovare un modo per ottenere il signal_strengthe mac_addressdel dispositivo e utilizzare tali informazioni insieme alle posizioni dei tuoi router per trovare la posizione. Probabilmente puoi ottenere le informazioni sui dispositivi collegati ai tuoi router facendo qualcosa di simile a questo ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).


questo è un compito difficile e stimolante, mi hai fatto desiderare di saperne di più su questo aspetto dei servizi di localizzazione .. per favore pubblica qualsiasi nuova informazione / intuizione che ottieni su questo problema, mi interessa sapere come risolverlo
Suvi Vignarajah

5

Distanza (km) = 10 ^ ((Perdita percorso spazio libero - 92,45 - 20log10 (f)) / 20)


1

In generale, questo è un modo davvero pessimo di fare le cose a causa dell'interferenza multipath . Questa è sicuramente più una questione di ingegneria RF che di codifica.

Tl; dr, l'energia RF wifi viene dispersa in direzioni diverse dopo essere rimbalzata su muri, persone, pavimento, ecc. esattamente il posto giusto.

Google è in grado di farla franca perché essenzialmente può mappare dove si trova ogni SSID wifi su una posizione GPS quando qualsiasi utente Android (che opta per il loro servizio) entra nel raggio d'azione. In questo modo, la prossima volta che un utente cammina da lì, anche senza un segnale GPS perfetto, la nave madre di Google può dire dove ti trovi. In genere, lo useranno insieme a un segnale GPS scadente.

Quello che ho visto fare è una griglia di dispositivi Zigbee o BTLE. Se sai dove sono disposti, puoi usare l'RSS combinato per capire relativamente a quali sei più vicino e andare da lì.


Per ulteriori informazioni su come Google fa stackoverflow.com/questions/1668304/...~~V~~singular~~3rd
yhyrcanus

-5

Non importa se sei un moderatore. Ho scritto il mio testo per il mio pubblico non come scrittore tecnico

Tutto ciò di cui avete bisogno per imparare a navigare con strumenti precedenti al GPS. Qualcosa come un sestante, ottante, backstaff o un astrolabio.

Se hai ricevuto il segnale da 3 posizioni diverse, devi solo misurare la potenza del segnale e stabilire un rapporto da quelle posizioni. Calcolo triangolo semplice dove a2 + b2 = c2. Più forte è la potenza del segnale, più il dispositivo è vicino al ricevitore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.