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
Respuestas:
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.
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.
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.
Fuente: http://www.tp-link.com/en/support/calculator/
fuente
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:
La fórmula utilizada es:
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í .
fuente
Aquí:
K
- constante (32,44,f
en MHz yd
en km, cambio a -27,55f
en MHz yd
en m)FSPL
- Pérdida de ruta de espacio librePtx
- 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, dBiPrx
- 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, MHzd
- 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
Prx
con 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.
fuente
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_strength
ymac_address
del 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/ ).fuente
Distancia (km) = 10 ^ ((Pérdida de trayectoria de espacio libre - 92,45 - 20log10 (f)) / 20)
fuente
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í.
fuente
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.
fuente