¿Cómo calcular la distancia desde el enrutador Wifi usando la intensidad de la señal?

84

Me gustaría calcular la ubicación exacta de un dispositivo móvil dentro de un edificio (por lo que no hay acceso a GPS)

Quiero hacer esto usando la fuerza de la señal (en dBm) de al menos 3 señales wifi fijas (3 enrutadores fijos de los cuales conozco la posición)

Google ya lo hace y me gustaría saber cómo descubren la ubicación exacta en función de estos datos.

Consulte este artículo para obtener más detalles: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

Ihab
fuente
stackoverflow.com/questions/4071539/… Aquí hay un enlace para su referencia.
yokoyoko
4
Esta pregunta parece estar fuera de tema porque se trata de ingeniería eléctrica. Sugiero migrar a electronics.stackexchange.com
Danny Varod
@lhab Hajj, mi requisito es el mismo que el tuyo. ¿Tienes que resolver esto? Comparta su idea para que otros también puedan aprender de ella. Gracias.
anddev

Respuestas:

47

FSPL depende de dos parámetros: el primero es la frecuencia de las señales de radio ; el segundo es la distancia de transmisión inalámbrica. La siguiente fórmula puede reflejar la relación entre ellos.

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

A partir de la ecuación de margen de desvanecimiento, la pérdida de trayectoria de espacio libre se puede calcular con la siguiente ecuación.

Pérdida de ruta de espacio libre = Tx Power-Tx Cable Loss + Tx Antenna Gain + Tx Antenna Gain - Rx Cable Loss - Rx Sensitivity - Fade Margin

Con las dos ecuaciones de Pérdida de trayectoria de espacio libre anteriores, podemos encontrar la Distancia en km.

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

La zona de Fresnel es el área alrededor de la línea de visión visual a la que se extienden las ondas de radio después de salir de la antena. Desea una línea de visión clara para mantener la fuerza, especialmente para sistemas inalámbricos de 2.4GHz. Esto se debe a que el agua absorbe las ondas de 2,4 GHz, como el agua que se encuentra en los árboles. La regla general es que el 60% de Fresnel Zone debe estar libre de obstáculos. Normalmente, el bloqueo del 20% de la zona de Fresnel introduce una pequeña pérdida de señal en el enlace. Más allá del 40% de bloqueo, la pérdida de señal será significativa.

FSPLr=17.32*√(d/4f)

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

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

Ihab
fuente
3
Buena respuesta y tengo una pregunta de seguimiento. ¿Qué tan precisas son las medidas? En otras palabras, ¿puedo obtener precisiones en el rango de pulgadas / centímetros?
Chiwda
32

Para calcular la distancia, necesita la intensidad de la señal y la frecuencia de la señal. Aquí está el código de 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 fórmula utilizada es:

distancia = 10 ^ ((27,55 - (20 * log10 (frecuencia)) + nivel de señal) / 20)

Ejemplo: frecuencia = 2412MHz, signalLevel = -57dbm, result = 7.000397427391188m

Esta fórmula es una forma transformada de la fórmula de pérdida de trayectoria de espacio libre (FSPL) . Aquí la distancia se mide en metros y la frecuencia, en megahercios. Para otras medidas, debe utilizar una constante diferente (27,55). Lea las constantes aquí .

Para más información lea aquí .

Mario Kutlev
fuente
Gracias por especificar que debería ser el valor absoluto del nivel de señal, ¡estuve buscando durante algún tiempo lo que me equivoqué!
Yiannis Tsimalis
@YiannisTsimalis pregunta para principiantes: ¿debería ser un valor absoluto o simplemente multiplicar por uno negativo? ¿Y si el nivel de la señal fuera positivo en dBm?
Ellis Valentiner
@ user12202013 hmm Creo que depende de cómo funcione su punto de acceso. Quiero decir, en general, el sistema dBm indica qué tan ruidosa es su señal. Si el valor es más alto, la señal es más ruidosa, lo que significa en realidad que la señal es más débil. O al menos así es como lo entiendo ..
Yiannis Tsimalis
@YiannisTsimalis Estaba pensando de manera más general, pero después de mirar la fórmula, creo que el valor absoluto es correcto porque la distancia debería ser positiva
Ellis Valentiner
1
He estado investigando esta fórmula durante bastante tiempo y llegué a la conclusión de que es completamente incorrecta. FSPL se mide en db, mientras que signalLevel se mide en dbm. Puede producir una buena estimación, pero los resultados pueden estropearse fácilmente cuando la distancia es bastante grande.
Ahmed Hammad
16
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )

Aquí:

  • K- constante (32,44, fen MHz y den km, cambio a -27,55 fen MHz y den m)
  • FSPL - Pérdida de ruta de espacio libre
  • Ptx - potencia del transmisor, dBm (hasta 20 dBm (100mW))
  • CLtx, CLrx- pérdida de cable en transmisor y receptor, dB (0, si no hay cables)
  • AGtx, AGrx- ganancia de antena en transmisor y receptor, dBi
  • Prx - sensibilidad del receptor, dBm (hasta -100 dBm (0,1pW))
  • FM - margen de desvanecimiento, dB (más de 14 dB (normal) o más de 22 dB (bueno))
  • f - frecuencia de la señal, MHz
  • d - distancia, mo km (depende del valor de K)

Nota: hay un error en las fórmulas del sitio de soporte de TP-Link (falta ^).

Sustituya Prxcon la intensidad de la señal recibida para obtener una distancia del punto de acceso WiFi.

Ejemplo: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (intensidad de la señal recibida), CLtx = 0, CLrx = 0, f = 2442 MHz (séptimo canal 802.11bgn), FM = 22. Resultado: FSPL = 47 dB, d = 2,1865 m

Nota: FM (margen de desvanecimiento) parece ser irrelevante aquí, pero lo dejo debido a la fórmula original.

Debe tener en cuenta las paredes, la tabla http://www.liveport.com/wifi-signal-attenuation puede ayudar.

Ejemplo: (dato anterior) + una pared de madera (5 dB, de la tabla). Resultado: FSPL = FSPL - 5 dB = 44 dB, d = 1.548 m

También tenga en cuenta que la ganancia de la antena no agrega potencia, sino que describe la forma del patrón de radiación (rosquilla en el caso de una antena omnidireccional, zepelín en el caso de una antena direccional, etc.).

Nada de esto tiene en cuenta los reflejos de la señal (no tengo idea de cómo hacerlo). Probablemente también falta el ruido. Así que esta matemática puede ser buena solo para estimar distancias aproximadas.

kestasx
fuente
7

la respuesta simple a su pregunta sería triangulación. Que es esencialmente el concepto en todos los dispositivos GPS, le daría una lectura a este artículo para aprender más sobre cómo Google hace esto: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

Según tengo entendido, utilizan un servicio similar a Skyhook , que es un software de ubicación que determina su ubicación en función de las señales de su wifi / teléfono celular. Para lograr su precisión, estos servicios tienen grandes servidores de bases de datos que almacenan información de ubicación en estas torres de telefonía móvil y puntos de acceso wifi; en realidad, inspeccionan áreas metropolitanas para mantenerla actualizada. Para que pueda lograr algo similar, supongo que tendría que usar un servicio como Skyhook; puede usar su SDK ( http://www.skyhookwireless.com/location-technology/ ).

Sin embargo, si desea hacer algo interno (como usar las ubicaciones de sus propios enrutadores), entonces probablemente tenga que crear un algoritmo que imite la triangulación. Tendrá que encontrar una manera de obtener el signal_strengthy mac_addressdel dispositivo y usar esa información junto con las ubicaciones de sus enrutadores para llegar a la ubicación. Probablemente pueda obtener la información sobre los dispositivos conectados a sus enrutadores haciendo algo similar a esto ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).

Suvi Vignarajah
fuente
esta es una tarea complicada y desafiante, me tienes interesado en aprender más sobre este aspecto de los servicios de ubicación ... publica cualquier información / conocimiento nuevo que obtengas sobre este problema, estoy interesado en saber cómo lo resuelves
Suvi Vignarajah
5

Distancia (km) = 10 ^ ((Pérdida de trayectoria de espacio libre - 92,45 - 20log10 (f)) / 20)

MAX
fuente
1

En general, esta es una forma realmente mala de hacer las cosas debido a la interferencia de múltiples rutas . Esta es definitivamente más una cuestión de ingeniería de RF que de codificación.

Tl; dr, la energía de RF wifi se dispersa en diferentes direcciones después de rebotar en las paredes, las personas, el piso, etc. No hay forma de saber dónde estás solo mediante triangulación, a menos que estés en una habitación vacía con las balizas wifi colocadas en exactamente el lugar correcto.

Google puede salirse con la suya porque esencialmente pueden mapear dónde está cada SSID wifi en una ubicación GPS cuando cualquier usuario de Android (que opta por su servicio) entra en el rango. De esa manera, la próxima vez que un usuario pase por allí, incluso sin una señal de GPS perfecta, la nave nodriza de Google podrá saber dónde se encuentra. Por lo general, lo usarán junto con una señal GPS de mala calidad.

Lo que he visto es una cuadrícula de dispositivos Zigbee o BTLE. Si sabe dónde están distribuidos, puede utilizar el RSS combinado para averiguar relativamente cuáles son los más cercanos y partir de ahí.

yhyrcanus
fuente
Para obtener más información sobre cómo funciona Google, stackoverflow.com/questions/1668304/…
yhyrcanus
-5

No importa si eres moderador. Escribí mi texto para mi audiencia no como un escritor técnico.

Todo lo que necesitan para aprender a navegar con herramientas anteriores al GPS. Algo así como un sextante, octante, backstaff o un astrolabio.

Si ha recibido la señal de 3 ubicaciones diferentes, solo necesita medir la intensidad de la señal y hacer una relación desde esas ubicaciones. Cálculo de triángulo simple donde a2 + b2 = c2. Cuanto más fuerte sea la señal, más cerca estará el dispositivo del receptor.

Wayne Hamberg
fuente