Signal Strength kullanılarak Wifi yönlendiriciden uzaklık nasıl hesaplanır?


84

Bir binanın içindeki bir mobil cihazın tam yerini hesaplamak istiyorum (yani GPS erişimi yok)

Bunu en az 3 sabit wifi sinyalinin (konumunu bildiğim 3 sabit yönlendiricinin) sinyal gücünü (dBm cinsinden) kullanarak yapmak istiyorum

Google bunu zaten yapıyor ve bu verilere dayanarak tam konumu nasıl bulduklarını bilmek istiyorum

Daha fazla ayrıntı için bu makaleye bakın: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets


stackoverflow.com/questions/4071539/… İşte referansınız için bağlantı.
yokoyoko

4
Bu soru, elektrik mühendisliği ile ilgili olduğu için konu dışı gibi görünüyor. Electronics.stackexchange.com
Danny Varod

@lhab Hac, benim ihtiyacım sizinki ile aynı. Bunu çözmen mi gerekiyor? Lütfen fikrinizi paylaşın ki başkaları da bundan öğrenebilsin. Teşekkür ederim.
anddev

Yanıtlar:


47

FSPL iki parametreye bağlıdır: Birincisi, radyo sinyallerinin frekansıdır ; İkincisi, kablosuz iletim mesafesidir. Aşağıdaki formül aralarındaki ilişkiyi yansıtabilir.

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

Fade Margin denkleminden, Free Space Path Loss aşağıdaki denklem ile hesaplanabilir.

Boş Alan Yolu Kaybı = Tx Güç-Tx Kablo Kaybı + Tx Anten Kazancı + Rx Anten Kazancı - Rx Kablo Kaybı - Rx Hassasiyeti - Solma Payı

Yukarıdaki iki Serbest Uzay Yolu Kaybı denklemi ile Mesafeyi km cinsinden bulabiliriz.

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

Fresnel Bölgesi, radyo dalgalarının anteni terk ettikten sonra yayıldığı görsel görüş hattının etrafındaki alandır. Özellikle 2,4 GHz kablosuz sistemler için gücü korumak için net bir görüş hattı istiyorsunuz. Bunun nedeni, ağaçlarda bulunan su gibi 2.4GHz dalgalarının su tarafından emilmesidir. Temel kural, Fresnel Bölgesi'nin% 60'ının engellerden arındırılması gerektiğidir. Tipik olarak,% 20 Fresnel Bölgesi blokajı, bağlantıya çok az sinyal kaybına neden olur. % 40'ın ötesinde tıkanma, sinyal kaybı önemli hale gelecektir.

FSPLr=17.32*√(d/4f)

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

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


3
Güzel cevap ve devam sorum var. Ölçümler ne kadar doğru? Başka bir deyişle, inç / santimetre aralığında doğruluklar alabilir miyim?
Chiwda

33

Mesafeyi hesaplamak için sinyal gücüne ve sinyal frekansına ihtiyacınız vardır. İşte java kodu:

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);
}

Kullanılan formül:

mesafe = 10 ^ ((27.55 - (20 * log10 (frekans)) + signalLevel) / 20)

Örnek: frekans = 2412MHz, signalLevel = -57dbm, sonuç = 7.000397427391188m

Bu formül, Serbest Alan Yol Kaybı (FSPL) formülünün dönüştürülmüş şeklidir . Burada mesafe metre ve frekans cinsinden ölçülür - megahertz cinsinden. Diğer önlemler için farklı bir sabit (27.55) kullanmanız gerekir. Sabitleri buradan okuyun .

Daha fazla bilgi için burayı okuyun .


Sinyal seviyesinin mutlak değeri olması gerektiğini belirttiğiniz için teşekkürler, bir süredir yanlış yaptığım şeyi arıyordum!
Yiannis Tsimalis

@YiannisTsimalis başlangıç ​​sorusu: mutlak değer mi olmalı yoksa negatif olanla mı çarpılmalıdır? Ya sinyal seviyesi pozitif dBm ise?
Ellis Valentiner

@ user12202013 hmm Bunun erişim noktanızın nasıl çalıştığına bağlı olduğunu düşünüyorum. Demek istediğim, genellikle, dBm sistemi sinyalinizin ne kadar gürültülü olduğunu gösterir. Değer daha yüksekse, sinyal daha gürültülüdür, bu da aslında sinyalin daha zayıf olduğu anlamına gelir. Ya da en azından ben öyle anlıyorum ..
Yiannis Tsimalis

@YiannisTsimalis ben daha genel düşünüyordum ama formülü baktıktan sonra ben mesafenin pozitif olmalı, çünkü mutlak değeri doğru olduğunu düşünüyorum
Ellis Valentiner

1
Bir süredir bu formülü araştırıyorum ve tamamen yanlış olduğu sonucuna vardım! FSPL db cinsinden ölçülür, signalLevel ise dbm cinsinden ölçülür. İyi bir tahmin sağlayabilir, ancak mesafe oldukça arttığında sonuçlar kolayca karışabilir.
Ahmed Hammad

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

Buraya:

  • K- sabit (32.44, fMHz ve dkm olarak, fMHz ve dm olarak -27.55 olarak değişir )
  • FSPL - Boş Alan Yolu Kaybı
  • Ptx - verici gücü, dBm (20 dBm'ye (100mW) kadar)
  • CLtx, CLrx- verici ve alıcıda kablo kaybı, dB (kablo yoksa 0)
  • AGtx, AGrx- verici ve alıcıda anten kazancı, dBi
  • Prx - alıcı hassasiyeti, dBm (-100 dBm'ye (0,1 pW) kadar)
  • FM - solma marjı, dB (14 dB'den (normal) veya 22 dB'den (iyi) fazla)
  • f - sinyal frekansı, MHz
  • d - mesafe, m veya km (K değerine bağlıdır)

Not: TP-Link destek sitesindeki formüllerde bir hata var (yanlış kullanım ^).

Yedek PrxAlınan sinyal gücü ile Kablosuz AP mesafe alır.

Örnek: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (alınan sinyal gücü), CLtx = 0, CLrx = 0, f = 2442 MHz (7'inci 802.11bgn kanalı), FM = 22. Sonuç: FSPL = 47 dB, d = 2.1865 m

Not: FM (fade margin) burada alakasız görünüyor, ancak orijinal formül yüzünden bırakıyorum.

Bir hesap duvarına girmelisiniz, tablo http://www.liveport.com/wifi-signal-attenuation yardımcı olabilir.

Örnek: (önceki veriler) + bir ahşap duvar (tablodan 5 dB). Sonuç: FSPL = FSPL - 5 dB = 44 dB, d = 1.548 m

Ayrıca, anten kazancının güç eklemediğini unutmayın - radyasyon modelinin şeklini açıklar (çok yönlü anten durumunda halka, yönlü anten durumunda zeplin vb.).

Bunların hiçbiri sinyal yansımalarını hesaba katmaz (bunun nasıl yapılacağı hakkında bir fikriniz yok). Muhtemelen gürültü de eksiktir. Yani bu matematik sadece kaba mesafe tahmini için iyi olabilir.


7

Sorunuzun basit cevabı Üçgenleştirme olacaktır. Temelde tüm GPS cihazlarındaki kavram olan, Google'ın bunu nasıl yaptığı hakkında daha fazla bilgi edinmek için bu makaleyi okuyacağım: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

Anladığım kadarıyla, wifi / cep telefonu sinyallerinize göre konumunuzu belirleyen bir konum yazılımı olan Skyhook'a benzer bir hizmet kullanıyorlar . Doğruluğunu elde etmek için, bu hizmetler, konum bilgilerini bu baz istasyonlarında ve wifi erişim noktalarında depolayan büyük veritabanı sunucularına sahiptir - bunlar aslında güncel tutmak için metropol alanları araştırır. Benzer bir şeyi başarabilmeniz için, Skyhook gibi bir hizmet kullanmanız gerektiğini varsayıyorum - SDK'larını kullanabilirsiniz ( http://www.skyhookwireless.com/location-technology/ ).

Bununla birlikte, dahili bir şey yapmak istiyorsanız (kendi yönlendiricilerinizin konumlarını kullanmak gibi) - o zaman muhtemelen Üçgenleştirmeyi taklit eden bir algoritma oluşturmanız gerekir. Sen almak için bir yol bulmak gerekecek signal_strengthve mac_addresscihazın ve konumu ile gelip Yönlendiricilerinizin yerleri ile birlikte bu bilgileri kullanırlar. Muhtemelen buna benzer bir şey yaparak yönlendiricilerinize bağlı cihazlar hakkında bilgi alabilirsiniz ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).


bu zor ve zorlu bir görev, konum hizmetlerinin bu yönü hakkında daha fazla bilgi
edinmemi sağladınız ...

5

Mesafe (km) = 10 ^ ((Boş Alan Yol Kaybı - 92.45 - 20log10 (f)) / 20)


1

Genel olarak, bu, çok yollu girişim nedeniyle bir şeyler yapmanın gerçekten kötü bir yoludur . Bu kesinlikle bir kodlama sorusundan çok bir RF mühendisliği sorusudur.

Tl; dr, wifi RF enerjisi duvarlardan, insanlardan, zeminden vb. Sıçradıktan sonra farklı yönlere dağılır. Wifi işaretçileri yerleştirilmiş boş bir odada olmadığınız sürece, nerede olduğunuzu tek başına nirengi ile söylemenin hiçbir yolu yoktur. tam olarak doğru yer.

Google bundan sıyrılabilir çünkü esasen herhangi bir android kullanıcısı (hizmetlerini seçen) menzile girdiğinde her wifi SSID'sinin bir GPS konumuna nerede olduğunu eşleyebilirler. Bu şekilde, bir kullanıcı bir dahaki sefere mükemmel bir GPS sinyali olmasa bile oradan geçtiğinde, google ana gemisi nerede olduğunuzu söyleyebilir. Tipik olarak, bunu berbat bir GPS sinyaliyle birlikte kullanırlar.

Gördüğüm şey, Zigbee veya BTLE cihazlarından oluşan bir ızgara. Bunların nerede düzenlendiğini biliyorsanız, hangisine en yakın olduğunuzu görece belirlemek ve oradan gitmek için birleşik RSS'yi kullanabilirsiniz.



-5

Moderatör olman umrumda değil. Metnimi teknik bir yazar olarak değil izleyicilerime yazdım

GPS'den önce gelen araçlarla gezinmeyi öğrenmeniz gereken tek şey. Sekstant, oktant, backstaff veya usturlap gibi bir şey.

Sinyali 3 farklı yerden aldıysanız, yalnızca sinyal gücünü ölçmeniz ve bu konumlardan bir oran oluşturmanız gerekir. A2 + b2 = c2 olan basit üçgen hesaplaması. Sinyal gücü ne kadar güçlüyse, cihaz alıcıya o kadar yakın olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.