O mundo através dos olhos de um roteador WiFi
A história das tentativas de ver o mundo sob uma luz completamente diferente e como isso levou à criação de um dispositivo que permite "ver" o WiFi. O processo usará o popular módulo ESP8266. Infelizmente, o Arduino também não ficará sem o Arduino.Há N anos, um grupo de jovens pesquisadores da Alemanha descreveu o conceito de termovisor baseado apenas em um sensor. A essência da operação do dispositivo foi a seguinte: usando um design de dois servos, o sensor de infravermelho foi sequencialmente direcionado vertical e horizontalmente para a área desejada, digitalizando gradualmente a imagem. Uma solução tão interessante tornou possível reduzir drasticamente o preço do dispositivo e obter imagens interessantes da distribuição de temperatura, como estas:
O sistema de varredura mecânica da imagem - e é isso que é o design dos servos, acabou sendo uma coisa extremamente interessante. Imediatamente após a construção desse dispositivo, surge a pergunta - por que não substituir o sensor de infravermelho por qualquer outra coisa que permita usar o mesmo princípio para visualizar, por exemplo, ondas de rádio?O olho humano, embora seja uma ferramenta bastante complexa, mas muito limitada. O alcance da luz que vemos é uma parte muito pequena do espectro da radiação eletromagnética.
Avalie a escala da tragédia - a maioria das informações sobre o mundo ao nosso redor é simplesmente escondida de nós. Obviamente, seria ótimo expandir a estrutura natural e obter a capacidade de enxergar além dos limites delineados pela natureza. Portanto, as seguintes experiências foram realizadas usando um sistema de varredura mecânica.Para testar a tecnologia, criei uma câmera simples de “um pixel” que funciona na faixa já visível que nos é familiar. Usei uma bateria solar de um carro de brinquedo chinês como sensor:
Obviamente, a área de uma célula fotoelétrica é muito grande, o que significa que é necessário fornecer um campo de visão estreito; portanto, adicionaremos uma lente da lanterna. Colocamos servos e nos conectamos ao Arduino.
A bateria solar gira para a área desejada da imagem futura, após o que o controlador lê um sinal proporcional à quantidade de luz incidente na bateria. Obviamente, essa câmera produzirá uma imagem em preto e branco.Para processar os resultados da verificação, usando o QT, foi implementado um programa com uma interface simples. (Lições sobre como implementar a comunicação entre Arduino e Qt podem ser facilmente obtidas no youtube) O programa consiste em um par de botões para controle manual de servos e no campo QGraphicsScene, onde pixels quadrados são desenhados, cuja cor depende da magnitude do sinal em um determinado ponto. O uso é simples - primeiro, as unidades são guiadas manualmente para o ponto superior esquerdo da imagem futura, após o que é realizada uma verificação automática da área durante a qual a imagem é construída. Aqui está o que saiu de tudo isso:
O que é representado nesta visualização? Obviamente, este é o assunto mais óbvio para fotografar se sua câmera for uma bateria solar - este é o sol.No entanto, o sinal da bateria é muito fraco para receber imagens adequadas na iluminação da sala, porque foi substituído por um fotorresistor, e as lentes da lanterna deram lugar a metade dos binóculos quebrados do teatro.
Essa criação acabou sendo mais bem-sucedida e já era possível tirar fotografias mais ou menos reconhecíveis: máquina delustre
na estrada
Vista da janela
E até nuvens no céu
Tendo satisfeito com esse resultado, decidi que era hora de finalmente fazer um monitor de rádio completo, substituindo o fotorresistor por uma antena direcional. O alcance mais adequado para isso é o microondas, uma vez que uma antena direcional não ocupa muito espaço e, hoje em dia, existem muitos dispositivos que emitem cuidadosamente nesse alcance.No começo, eu decidi usar uma antena de buzina, que está nos detectores de radar de carros (eles geralmente funcionam na faixa de 10,525 GHz ou 24,15 GHz). Tentativas de isolar um sinal analógico proporcional ao valor da radiação detectada do circuito de um detector desse tipo não tiveram êxito, possivelmente devido à falta de meu conhecimento e possivelmente porque não existe, pois funciona pelo princípio da comparação. (Olá aos irmãos chineses que reuniram esse milagre). É claro que eu queria puxar a própria antena e construir algo próprio, mas não comecei a quebrar um bom dispositivo para isso.A segunda coisa que me veio à mente foi construir um detector de campo de acordo com um dos esquemas encontrados em abundância em portais de rádio amador e conectar uma antena direcional caseira a ele, por exemplo, o muito popular e bastante simples de produzir Harchenko biquadrat. Mas, como se viu, o elemento mais importante - o diodo detector de microondas é muito difícil de encontrar, fácil de perder e geralmente custa muito, então eu tive que procurar a peça certa por um longo tempo e com dificuldade.Depois de algum tempo, consegui obter um diodo detector de germânio nos tempos soviéticos e montar o seguinte circuito:
O dispositivo resultante funcionou com confiança, mas a uma distância muito curta, em algum lugar a 5 a 10 cm de um telefone celular que atua como fonte de radiação. Obviamente, isso não foi suficiente para a tarefa.Depois de todas essas provações, finalmente recebi o módulo ESP8266, que pode exibir RSSI (indicador do nível de sinal WiFi recebido) dos pontos de acesso encontrados. Para fazer isso, use o comando AT + CWLAP no firmware padrão do módulo. Decidi aplicar esse recurso, juntamente com a antena de biquadrat caseira, dirigida por WiFi, mencionada anteriormente. Assim, esse milagre da tecnologia apareceu:
O próprio ESP8266 é montado na parte traseira da antena e está bem protegido com chapas de cobre. Os dígitos luminosos mostram a tensão na saída do conversor DC-DC pulsado, que reduz 12V da fonte de alimentação para 3,3V, necessária para o módulo funcionar (é muito voraz, portanto, alimentá-lo do Arduino é uma operação instável).O Arduino ainda gerencia servo drives e também envia comandos AT para o ESP8266 usando a biblioteca SoftwareSerial. Um dos pontos difíceis - em vez das bibliotecas padrão SoftwareSerial e Servo, tive que mudar para suas contrapartes, pois as originais conflitam quando usadas simultaneamente.Obviamente, você pode ouvir críticas de que o Arduino é um elemento extra aqui, já que o próprio ESP8266 pode lidar com essa funcionalidade. Mas aconteceu historicamente que, durante a criação do dispositivo, eu inicialmente foquei no Arduino como o elo central do dispositivo final, e o ESP8266 desempenha o papel de um tipo de sensor.O programa QT, escrito para a "câmera solar", sofreu um refinamento significativo.Durante a varredura da área, para cada ponto de acesso encontrado, é criada uma matriz de valores de sinal, que permite ver como diferentes roteadores WiFi “brilham” no final da varredura e até tentar estimar sua localização aproximada. Quanto mais forte o sinal em um ponto específico, mais brilhante é a cor azul do pixel correspondente.E, finalmente, colocando o dispositivo em diferentes partes da minha casa, obtive as seguintes imagens. Felizmente, existem muitas redes wifi em minha casa e, com uma antena direcional semelhante, você pode capturar até mesmo redes muito remotas.
Peça de sofá e carpete. Se você prestar atenção, é obtida uma imagem de alta qualidade em comparação com as outras no ponto “SkyNet” - este é o meu roteador doméstico. Ele é o mais próximo do local da filmagem, que aparentemente desempenha um papel importante no processo.
Lustre novamente. Os sinais de algumas redes não são refletidos no teto ou no lustre. Provavelmente, com base nesses sinais, você pode tentar determinar a localização física do transmissor.
Uma banheira cheia de água. Como todos sabem, as ondas de rádio sob a água são pouco transmitidas.Vale ressaltar que as fotos na faixa visível correspondem apenas aproximadamente à área digitalizada. Também é necessário levar em consideração que durante a operação a antena descreve de alguma forma o hemisfério, e isso também afeta o resultado. A resolução, em princípio, é limitada apenas pelo curso da antena e pelo tempo necessário para circular a área inteira. Além disso, a obtenção de dados para cada pixel requer 4-5 segundos. Gostaria de obter imagens menos desfocadas, mas isso requer uma antena com um padrão de radiação mais estreito.Códigos-fonte, incluindo um esboço para o ArduinoSource: https://habr.com/ru/post/pt392555/
All Articles