web-dev-qa-db-fra.com

Comment calculer la distance d'un routeur Wifi en utilisant la puissance du signal?

Je souhaite calculer l'emplacement exact d'un appareil mobile à l'intérieur d'un bâtiment (donc pas d'accès GPS)

Je veux faire cela en utilisant la force du signal (en dBm) d'au moins 3 signaux wifi fixes (3 routeurs fixes dont je connais la position)

Google le fait déjà et j'aimerais savoir comment ils déterminent l'emplacement exact en fonction de ces données.

Consultez cet article pour plus de détails: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

74
Ihab Hajj

La FSPL dépend de deux paramètres: premièrement, la fréquence des signaux radio, deuxièmement, la distance de transmission sans fil. La formule suivante peut refléter la relation entre eux.

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 l'équation de la marge de fondu, la perte de trajet d'espace libre peut être calculée à l'aide de l'équation suivante.

Perte de chemin d'espace libre = perte de câble Tx Power-Tx + gain d'antenne Tx + gain d'antenne Rx - perte de câble Rx - sensibilité Rx - marge de décoloration

Avec les deux équations de perte de trajet d'espaces libres ci-dessus, nous pouvons déterminer la distance en km.

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

La zone de Fresnel est la zone autour de la ligne de visée visuelle dans laquelle les ondes radio se propagent après avoir quitté l'antenne. Vous voulez une ligne de mire claire pour conserver votre puissance, en particulier pour les systèmes sans fil à 2,4 GHz. Ceci est dû au fait que les ondes de 2,4 GHz sont absorbées par l’eau, comme l’eau des arbres. En règle générale, 60% de la zone de Fresnel doit être libre de tout obstacle. En règle générale, un blocage de 20% de la zone de Fresnel introduit peu de perte de signal dans la liaison. Au-delà de 40% de blocage, la perte de signal deviendra importante.

FSPLr=17.32*√(d/4f)

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

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

44
Ihab Hajj

Pour calculer la distance, vous avez besoin de la force et de la fréquence du signal. Voici le code 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 formule utilisée est:

distance = 10 ^ ((27.55 20 * log10 (fréquence)) + signalLevel)/20)

Exemple: fréquence = 2412 MHz, signalLevel = -57dbm, résultat = 7.000397427391188m

Cette formule est transformée sous la forme de la formule --- (FSPL . Ici, la distance est mesurée en mètres et la fréquence - en mégahertz. Pour les autres mesures, vous devez utiliser une constante différente (27,55). Lire pour les constantes ici .

Pour plus d'informations, lisez ici .

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

Ici:

  • K - constant (32.44, lorsque f en MHz et d en km, passe à -27,55 lorsque f en MHz et d dans M)
  • FSPL - Perte de chemin d'espace libre
  • Ptx - puissance de l'émetteur, dBm (jusqu'à 20 dBm (100 mW))
  • CLtx, CLrx - perte de câble à l'émetteur et au récepteur, dB (0, si aucun câble)
  • AGtx, AGrx - gain d'antenne à l'émetteur et au récepteur, dBi
  • Prx - sensibilité du récepteur, dBm (jusqu'à -100 dBm (0.1pW))
  • FM - marge de protection contre les évanouissements, dB (plus de 14 dB (normal) ou plus de 22 dB (bon))
  • f - fréquence du signal, MHz
  • d - distance, m ou km (dépend de la valeur de K)

Remarque: il y a une erreur dans les formules du site de support TP-Link (mising ^).

Remplacez Prx par la force du signal reçu pour vous éloigner du point d'accès WiFi.

Exemple: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (intensité du signal reçu), CLtx = 0, CLrx = 0, f = 2442 MHz (7ème canal 802.11bgn), FM = 22. Résultat: FSPL = 47 dB, d = 2,1865 m

Remarque: FM (fade margin) semble ne pas être pertinent ici, mais je le laisse à cause de la formule originale.

Vous devriez prendre en compte les murs, tableau http://www.liveport.com/wifi-signal-attenuation peut vous aider.

Exemple: (données précédentes) + un mur en bois (5 dB, tiré du tableau). Résultat: FSPL = FSPL - 5 dB = 44 dB, d = 1,548 m

Veuillez également noter que le gain d’antenne n’ajoute pas de puissance - il décrit la forme du diagramme de rayonnement (anneau en cas d’antenne omnidirectionnelle, zeppelin en cas de antenne directionnelle, etc.).

Rien de tout cela ne prend en compte les réflexions du signal (vous ne savez pas comment faire cela). Probablement le bruit est également absent. Donc, ce calcul ne peut être bon que pour une estimation approximative de distance.

16
kestasx

la réponse simple à votre question serait la triangulation. Le concept de tous les appareils GPS étant essentiel, je voudrais lire cet article pour en savoir plus sur la façon dont Google s'y prend: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_? taxonomyId = 15 & pageNumber = 2 .

D'après ce que j'ai compris, ils utilisent un service similaire à Skyhook , un logiciel de localisation qui détermine votre position en fonction de vos signaux Wi-Fi/cellulaire. Afin de garantir leur précision, ces services disposent de grands serveurs de bases de données qui stockent des informations de localisation sur ces pylônes cellulaires et points d'accès wifi. Ils surveillent en fait les zones métropolitaines pour les actualiser. Afin de réaliser quelque chose de similaire, je suppose que vous devez utiliser un service tel que Skyhook - vous pouvez utiliser leur SDK ( http://www.skyhookwireless.com/location-technology/ ).

Cependant, si vous voulez faire quelque chose en interne (comme utiliser les emplacements de vos propres routeurs), vous devrez probablement créer un algorithme imitant la triangulation. Vous devrez trouver un moyen d'obtenir le signal_strength et mac_address du périphérique et utilisez ces informations ainsi que les emplacements de vos routeurs pour le localiser. Vous pouvez probablement obtenir des informations sur les périphériques connectés à vos routeurs en procédant de la même manière ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).

7
Suvi Vignarajah

Distance (km) = 10 ^ ((perte de trajet d'espace libre - 92,45 - 20log10 (f))/20)

5
MAX

En général, c'est une très mauvaise façon de faire les choses en raison de interférence par trajets multiples . C’est bien plus une question d’ingénierie RF) qu’une question de codage.

Tl; dr, le wifi RF l’énergie est dispersée dans différentes directions après avoir rebondi sur les murs, les gens, le sol, etc. une pièce vide avec les balises wifi placées exactement au bon endroit.

Google est en mesure de s'en sortir, car ils peuvent essentiellement identifier l'emplacement de chaque SSID wifi vers un emplacement GPS lorsqu'un utilisateur de Android (qui choisit de s'abonner à son service) entre dans la zone de couverture. la prochaine fois qu'un utilisateur se rendra là-bas, même sans un signal GPS parfait, le ravitailleur google pourra vous indiquer où vous vous trouvez. Il l'utilisera généralement en conjonction avec un signal GPS de mauvaise qualité.

Ce que j'ai vu faire est une grille de périphériques Zigbee ou BTLE. Si vous savez où celles-ci sont disposées, vous pouvez utiliser le RSS combiné pour déterminer ceux qui vous sont les plus proches et par la suite.

1
yhyrcanus