Obtenha indicadores RSSI do WiFi Direct com alta frequência

1

Então eu tenho lutado com esse problema por um tempo agora:

Eu tenho um pi de framboesa com sensores wifi e eu preciso deles para obter o RSSI (sinal basicamente) do sinal wifi-direto transmitido por um AP diferente.

Como eles serão usados para obter medições de distância (entre o pi e o AP), preciso obtê-los com alta frequência dentro de um segundo (ou, idealmente, quero uma média do RSSI dentro de 100ms ou dentro de um segundo).

Eu sei que posso obter o RSSI usando as funções p2p do wpa_supplicant, mas a frequência é de cerca de 6 a 12 medições por segundo, com uma variância bastante alta. Alguém sabe de alguma outra ferramenta / forma que possa ajudar? Se wpa_supplicant fornecer "medidas médias", isso também seria ótimo.

NOTA: Eu não entendo completamente a matemática / ciência por trás de como a distância / ângulo será computada, já que eu sou apenas responsável por obter uma vantagem inicial na implementação. Pode ser que esses valores sejam bons o suficiente. Eu poderia estar faltando alguma coisa conceitualmente. Se sim, por favor me avise :).

    
por Emad Y 06.03.2017 / 19:18

2 respostas

1

Não use wpa_supplicant , diminua um nível abaixo. Eu apenas tentei

while true ; do date -Ins ; /sbin/iw wlan0 station dump | grep signal ; done

na minha área de trabalho, o que me dá mais de 100 medições por segundo, sem uma alta variação específica.

Então eu acho que se você grep para signal avg em vez de signal uma vez a cada segundo, você deve estar bem. Embora possa parecer diferente no RaspPi devido ao menor poder de processamento.

Observe que esses valores são computados por magia negra dentro do driver, diferem de hardware para hardware e de driver para driver e devem ser usados apenas como uma indicação aproximada, e não presuma que os valores sejam lineares com a distância.

Então, você precisará de muitas medições para identificar a fonte com precisão.

Quanto à matemática, você deve assumir uma função monótona para mapear a intensidade do sinal para a distância ou vice-versa, talvez fazer algumas suposições como esta função poderia parecer (por exemplo, quadrática / cúbica, talvez fazer algumas medições primeiro), derivar algum erro valor para determinadas coordenadas de origem e procure por coordenadas que minimizem o erro.

Se acontecer de você fazer um projeto de código aberto para isso, eu estaria interessado em ver um link. : -)

    
por 07.03.2017 / 08:42
0

Você pode obter a força do sinal a cada segundo através de:

watch -n 1 cat /proc/net/wireless

ou:

watch -n '0.1' "iw wlan0 scan | grep 'SSID\|signal'"

O comando wavemon após a instalação do pacote wavemon

wavemon is a wireless device monitoring application that allows you to watch signal and noise levels, packet statistics, device configuration and network parameters of your wireless network hardware. It should work (though with varying features) with all devices supported by the Linux kernel.

Vocêtambémpodeusarocomandobmondepoisdeinstalaro[bmon] 3

Pode ser instalado através de: apt-get install bmon

bmon is a monitoring and debugging tool to capture networking related statistics and prepare them visually in a human friendly way. It features various output methods including an interactive curses user interface and a programmable text output for scripting.

o comando wpa_cli :

watch -n 1 "wpa_cli signal"
    
por 07.03.2017 / 14:04