Como calcular a distância do roteador Wifi usando a força do sinal?

84

Eu gostaria de calcular a localização exata de um dispositivo móvel dentro de um edifício (sem acesso GPS)

Quero fazer isso usando a força do sinal (em dBm) de pelo menos 3 sinais de wifi fixos (3 roteadores fixos dos quais conheço a posição)

O Google já faz isso e eu gostaria de saber como eles descobriram a localização exata com base nesses dados

Verifique este artigo para obter mais detalhes: http://www.codeproject.com/Articles/63747/Exploring-GoogleGears-Wi-Fi-Geo-Locator-Secrets

Ihab
fonte
stackoverflow.com/questions/4071539/… Aqui está o link para sua referência.
yokoyoko
4
Esta pergunta parece estar fora do assunto porque é sobre engenharia elétrica. Eu sugiro migrar para electronics.stackexchange.com
Danny Varod
@lhab Hajj, minha exigência é igual à sua. Tem que resolver isso? Por favor, compartilhe sua ideia para que outros também possam aprender com ela. Obrigado.
anddev

Respostas:

47

FSPL depende de dois parâmetros: o primeiro é a frequência dos sinais de rádio ; o segundo é a distância de transmissão sem fio. A fórmula a seguir pode refletir a relação entre eles.

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 da equação da margem de esmaecimento, a perda do caminho do espaço livre pode ser calculada com a seguinte equação.

Perda do caminho do espaço livre = Tx Power-Tx Cable Loss + Tx Antenna Gain + Rx Antenna Gain - Rx Cable Loss - Rx Sensitivity - Fade Margin

Com as duas equações de perda do caminho do espaço livre acima, podemos descobrir a distância em km.

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

A zona de Fresnel é a área ao redor da linha de visão visual em que as ondas de rádio se espalham depois de deixar a antena. Você deseja uma linha de visão clara para manter a força, especialmente para sistemas sem fio de 2,4 GHz. Isso ocorre porque as ondas de 2,4 GHz são absorvidas pela água, como a água encontrada nas árvores. A regra geral é que 60% da zona de Fresnel deve estar livre de obstáculos. Normalmente, o bloqueio da zona de Fresnel de 20% apresenta pouca perda de sinal para o link. Acima de 40% de bloqueio, a perda de sinal se tornará significativa.

FSPLr=17.32*√(d/4f)

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

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

Ihab
fonte
3
Boa resposta e tenho uma pergunta complementar. Quão precisas são as medições? Em outras palavras, posso obter precisões na faixa de polegadas / centímetros?
Chiwda
32

Para calcular a distância, você precisa da intensidade e frequência do sinal. Aqui está o código 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);
}

A fórmula usada é:

distância = 10 ^ ((27,55 - (20 * log10 (frequência)) + nível do sinal) / 20)

Exemplo: frequência = 2412 MHz, signalLevel = -57dbm, resultado = 7.000397427391188m

Esta fórmula é a forma transformada da fórmula de perda de caminho de espaço livre (FSPL) . Aqui, a distância é medida em metros e a frequência - em megahertz. Para outras medidas, você deve usar uma constante diferente (27,55). Leia as constantes aqui .

Para mais informações, leia aqui .

Mario Kutlev
fonte
Obrigado por especificar que deve ser o valor absoluto do nível do sinal, há algum tempo eu estava procurando o que havia errado!
Yiannis Tsimalis
@YiannisTsimalis pergunta para iniciantes: deve ser valor absoluto ou apenas multiplicar por um negativo? E se o nível do sinal fosse dBm positivo?
Ellis Valentiner
@ user12202013 hmm Acho que depende de como funciona o seu ponto de acesso. Quer dizer, geralmente, o sistema dBm indica o quão ruidoso é o seu sinal. Se o valor for maior, o sinal é mais ruidoso, o que significa, na verdade, que o sinal está mais fraco. Ou pelo menos é assim que eu entendo ..
Yiannis Tsimalis
@YiannisTsimalis Eu estava pensando de forma mais geral, mas depois de olhar para a fórmula, acho que o valor absoluto está correto porque a distância deve ser positiva
Ellis Valentiner
1
Venho investigando essa fórmula há bastante tempo e concluí que ela está completamente errada! FSPL é medido em db, enquanto signalLevel é medido em dbm. Pode render uma boa estimativa, mas os resultados podem ser facilmente confundidos quando a distância fica muito grande.
Ahmed Hammad
16
K = 32.44
FSPL = Ptx - CLtx + AGtx + AGrx - CLrx - Prx - FM
d = 10 ^ (( FSPL - K - 20 log10( f )) / 20 )

Aqui:

  • K- constante (32,44, quando fem MHz e dem km, mudar para -27,55 quando fem MHz e dem m)
  • FSPL - Perda do caminho do espaço livre
  • Ptx - potência do transmissor, dBm (até 20 dBm (100mW))
  • CLtx, CLrx- perda de cabo no transmissor e receptor, dB (0, se não houver cabos)
  • AGtx, AGrx- ganho da antena no transmissor e receptor, dBi
  • Prx - sensibilidade do receptor, dBm (até -100 dBm (0,1pW))
  • FM - margem de desvanecimento, dB (mais de 14 dB (normal) ou mais de 22 dB (bom))
  • f - frequência do sinal, MHz
  • d - distância, m ou km (depende do valor de K)

Nota: há um erro nas fórmulas do site de suporte TP-Link (mising ^).

Substitua Prxpela intensidade do sinal recebido para obter uma distância do AP WiFi.

Exemplo: Ptx = 16 dBm, AGtx = 2 dBi, AGrx = 0, Prx = -51 dBm (intensidade do sinal recebido), CLtx = 0, CLrx = 0, f = 2442 MHz (7º canal 802.11bgn), FM = 22. Resultado: FSPL = 47 dB, d = 2,1865 m

Observação: FM (margem de esmaecimento) parece irrelevante aqui, mas estou deixando-o por causa da fórmula original.

Você deve levar em conta as paredes, a tabela http://www.liveport.com/wifi-signal-attenuation pode ajudar.

Exemplo: (dados anteriores) + uma parede de madeira (5 dB, da mesa). Resultado: FSPL = FSPL - 5 dB = 44 dB, d = 1,548 m

Observe também que o ganho da antena não adiciona potência - descreve a forma do padrão de radiação (donut no caso de antena omnidirecional, zepelim no caso de antena direcional, etc).

Nada disso leva em consideração as reflexões do sinal (não tenho uma ideia de como fazer isso). Provavelmente o ruído também está faltando. Portanto, essa matemática pode ser boa apenas para uma estimativa aproximada de distância.

Kestasx
fonte
7

a resposta simples para sua pergunta seria triangulação. Que é essencialmente o conceito em todos os dispositivos GPS, gostaria de ler este artigo para saber mais sobre como o Google faz isso: http://www.computerworld.com/s/article/9127462/FAQ_How_Google_Latitude_locates_you_?taxonomyId=15&pageNumber= 2 .

Pelo que entendi, eles usam um serviço semelhante ao Skyhook , que é um software de localização que determina sua localização com base em seus sinais de wi-fi / celular. Para atingir sua precisão, esses serviços têm grandes servidores de bancos de dados que armazenam informações de localização nessas torres de celular e pontos de acesso wi-fi - eles realmente pesquisam áreas metropolitanas para mantê-las atualizadas. Para que você consiga algo semelhante, presumo que você precise usar um serviço como o Skyhook - você pode usar seu SDK ( http://www.skyhookwireless.com/location-technology/ ).

No entanto, se você quiser fazer algo interno (como usar as localizações dos seus próprios roteadores), provavelmente terá que criar um algoritmo que imite a triangulação. Você terá que encontrar uma maneira de obter o signal_strengthe mac_addressdo dispositivo e usar essas informações junto com as localizações de seus roteadores para descobrir a localização. Você provavelmente pode obter informações sobre os dispositivos conectados aos seus roteadores fazendo algo semelhante a isto ( http://www.makeuseof.com/tag/check-stealing-wifi/ ).

Suvi Vignarajah
fonte
esta é uma tarefa complicada e desafiadora, você me deixou interessado em aprender mais sobre este aspecto dos serviços de localização .. por favor, poste qualquer nova informação / visão que você obtiver sobre este problema, estou interessado em saber como você o soluciona
Suvi Vignarajah
5

Distância (km) = 10 ^ ((Perda do Caminho no Espaço Livre - 92,45 - 20log10 (f)) / 20)

MAX
fonte
1

Em geral, esta é uma maneira muito ruim de fazer as coisas devido à interferência de vários caminhos . Esta é definitivamente mais uma questão de engenharia de RF do que de codificação.

Tl; dr, a energia de RF do wi-fi fica espalhada em diferentes direções após ricochetear nas paredes, nas pessoas, no chão, etc. Não há como saber onde você está apenas pela triangulação, a menos que você esteja em uma sala vazia com os beacons wi-fi colocados em exatamente o lugar certo.

O Google consegue se safar com isso porque eles essencialmente podem mapear onde cada SSID wi-fi está para um local GPS quando qualquer usuário Android (que opta por seu serviço) entra no alcance. Dessa forma, da próxima vez que um usuário passar por lá, mesmo sem um sinal de GPS perfeito, a nave-mãe do Google poderá dizer onde você está. Normalmente, eles usam isso em conjunto com um sinal de GPS de baixa qualidade.

O que vi feito é uma grade de dispositivos Zigbee ou BTLE. Se você sabe onde eles estão dispostos, você pode usar o RSS combinado para descobrir relativamente de quais você está mais próximo e partir daí.

yhyrcanus
fonte
Para obter mais informações sobre como o Google faz isso stackoverflow.com/questions/1668304/…
yhyrcanus
-5

Não se preocupe se você é um moderador. Eu escrevi meu texto para meu público, não como um escritor técnico

Tudo que vocês precisam aprender a navegar com ferramentas anteriores ao GPS. Algo como um sextante, octante, backstaff ou um astrolábio.

Se você recebeu o sinal de 3 locais diferentes, então você só precisa medir a intensidade do sinal e fazer uma relação desses locais. Cálculo de triângulo simples onde a2 + b2 = c2. Quanto mais forte for a intensidade do sinal, mais próximo o dispositivo estará do receptor.

Wayne Hamberg
fonte