Explorando campos eletromagnéticos usando um receptor SDR e OpenCV



O receptor SDR, mesmo o mais barato, é um instrumento altamente sensível. Se você adicionar uma antena especial e o OpenCV a ela, poderá não apenas ouvir habitualmente o éter, mas também observar a distribuição dos campos eletromagnéticos no espaço. Uma aplicação tão interessante será discutida neste artigo. Atenção! Sob o corte muitas fotos e animações!

Você gostaria de ver campos eletromagnéticos? Sim, não há nada mais fácil, aqui estão elas:



eu concordo, não muito claramente. Mesmo se somos capazes de ver a luz (que também é descrita por essas equações), o espectro de rádio não é tão facilmente acessível para nós. Por esse motivo, a humanidade criou muitas maneiras diferentes de espionar esse mistério da natureza, usando modelagem por computador e instalações especializadas.

O último pode ser encontrado dentro dos muros de institutos científicos, departamentos de pesquisa de grandes empresas e, é claro, das forças armadas. Geralmente, esta é uma sala separada, protegida contra radiação externa por uma gaiola de Faraday e por dentro coberta com materiais absorventes de radar. Afinal, um vizinho amador ou um microondas não aterrado não deve nos incomodar ao conduzir tais experimentos. Este quarto é chamado de câmara anecóica. O nome, é claro, é mais consistente com um estúdio de gravação, mas, neste caso, "eco" refere-se a quaisquer reflexões e reflexões internas de ondas eletromagnéticas que interferem na pesquisa e são impiedosamente extintas. Dentro da câmera, do ponto de vista da antena, você está em um vazio absoluto, onde toda a radiação entra em extensões infinitas simuladas por um absorvedor de rádio e nada volta.

, -, , - — , , . «» , ---, .


, Panasonic. « » — . — .

Ao realizar testes de compatibilidade eletromagnética, o desenvolvimento de antenas, bem como pesquisas científicas relacionadas à radiação eletromagnética, não se pode prescindir dessas câmeras. No entanto, a própria câmera é apenas parte da história. Entre outros elementos-chave necessários para registrar o comportamento das ondas eletromagnéticas, antenas especiais, instrumentos de medição caros e, de fato, também será necessário um scanner de campo. O scanner nada mais é do que o notório sistema de coordenadas do CNC. Você pode dar ao scanner uma antena adequada ou uma sonda de medição na sua “mão” e depois tomar café até que ele caminhe cuidadosamente pelos pontos definidos pelo programa, construindo uma bela imagem da distribuição dos campos ao redor do seu novo tanque ou, por exemplo, o padrão de radiação do radar.

Mas de volta ao ponto. Aconteceu que longe de fontes, no espaço vazio, os campos eletromagnéticos parecem muito chatos. Algo assim:



enquanto as coisas mais mágicas e interessantes se escondem em regiões onde as ondas se formam (perto de fontes), ou interagem com objetos. Essas áreas geralmente não excedem as dimensões do comprimento de onda da emissão de rádio, que está envolvido no experimento, e são chamadas de zona de campo próximo. As investigações dos campos de campo próximo são, sem dúvida, uma das mais curiosas e, é claro, não podiam ficar muito tempo apenas atrás dos muros blindados de grandes organizações.

Os entusiastas perceberam rapidamente que, para mapear os campos com o mesmo princípio das câmeras profissionais, você pode criar seu próprio scanner de coordenadas ou, ainda mais simples, adaptar as onipresentes impressoras 3D para esse fim. Por que, na verdade, eles até escreveram um artigo científico sobre isso.


Impressoras 3D, onde, em vez da extrusora (ou com ela), são instaladas sondas de medição, antenas. É mostrado acima como o coeficiente de acoplamento de duas antenas de loop: a de medição e a deitada na mesa da impressora (o chamado parâmetro S21) muda no espaço. Abaixo está um exemplo de construção da distribuição de um campo magnético de alta frequência sobre um xale do Arduino.

Embora os scanners caseiros não estejam no ambiente eletromagneticamente estéril das câmaras anecóicas, eles ainda podem produzir resultados interessantes. E se no primeiro exemplo da imagem acima um analisador profissional caro for usado para coletar dados (um artigo científico, afinal), então no segundo caso eles custam um receptor SDR barato, o que torna esses experimentos ainda mais acessíveis. No entanto, não vamos insistir nas impressoras 3D, elas já estão cansadas de tudo em ordem.

O autor do segundo projeto da imagem, Charles Grassin , decidiu simplificar ainda mais o processo e livrar-se completamente de qualquer sistema de coordenadas, como um elemento extra volumoso, oferecendo rastrear o movimento da antena de medição usando o OpenCV. O sistema que ele concebeu se parece com isso:


Diagrama de instalação para mapear campos eletromagnéticos usando um receptor SDR e OpenCV.

Uma câmera é instalada acima do objeto cujo campo queremos ver. O script define a aparência da nossa antena e depois a desenhamos, como um pincel, nas áreas em que queremos ver o campo. O sinal da antena vai para o receptor SDR e o script python compara a posição da antena no quadro com o nível de sinal rms do receptor. Depois disso, temos uma bela imagem com a distribuição dos campos. Obviamente, essa abordagem até agora nos limita a um plano, mas isso não a torna menos interessante. Vamos construir este sistema e verificar como ele funciona, pois muitos detalhes não são necessários para isso.

Primeiro, decidimos o que exatamente mediremos. Apesar do fato de os campos eletromagnéticos serem um fenômeno único, podemos examinar separadamente seus componentes elétricos e magnéticos. Cada tipo exigirá sua própria antena de medição especial. Como o autor do original, fiz uma antena de sonda para um campo magnético de acordo com o esquema abaixo:


Um esquema para fabricar uma sonda magnética e exemplos que fiz. Se você levou a sério o mapeamento de campos, faça várias antenas de tamanhos diferentes - seja útil. Mesmo se não houver margens, haverá um bom conjunto para soprar bolhas de sabão.

Esse design é bem conhecido por hams sob o nome de uma antena de loop, no entanto, ao contrário dos irmãos mais velhos, essa antena não precisa ser coordenada com o receptor, o que certamente simplifica nossa vida. Como base para uma sonda, é melhor usar um cabo coaxial duro ou semi-duro, mas, em princípio, você pode fazer quase tudo. A impedância do cabo também não desempenha um papel. O importante é o tamanho da antena, como veremos mais adiante.

Para demonstrar como a sonda "sente" os diferentes componentes do campo eletromagnético, modelei-a no CST:


, , . — , ( ). . .

Mesmo como duas manifestações de uma única entidade, os campos elétrico e magnético interagem com a antena de maneiras diferentes. A diferença na trança que fizemos de cima não passa de um condensador de ar. Como convém a um capacitor, ele concentra o campo elétrico em seu espaço. O campo magnético, devido à simetria da estrutura, tem um máximo dentro do loop. Assim, se quisermos medir o último, basta colocar o loop paralelo ao objeto medido. E é exatamente isso que você precisa para capturá-lo no quadro usando o OpenCV! Então, depois que a antena estiver pronta, adicione o toque final. Melhoraremos o reconhecimento visual usando o termoencolhedor preto ou fita isolante. Aqui está o meu trabalho:


Para a antena maior (5 cm de diâmetro), não houve retração do tamanho necessário. No entanto, no final, eu não o usei. O preto dará um grande contraste ao fundo branco, para que o OpenCV facilite a visualização da nossa antena.

Em seguida, você precisa obter uma webcam e instalá-la em um tipo de tripé. Se de repente você não tiver uma webcam, um smartphone no Android com o aplicativo DroidCam também será adequado. A antena está conectada ao receptor SDR e ele, por sua vez, ao computador. O hardware está pronto para isso.

Faça o download do script camera_emi_mapper.py . Isso exigirá que as bibliotecas opencv e pyrtlsdr funcionem.. Instruções detalhadas de instalação estão disponíveis no link designado. Observe que, se você usa o Windows, as bibliotecas pyrtlsdr devem ter a mesma profundidade de bits que a versão python no seu sistema. O script é iniciado pelo comando:

python3 camera_emi_mapper.py -c 1 -f 100

o sinalizador -c permite selecionar uma câmera se você tiver vários deles, e o sinalizador -f define a frequência na qual a magnitude do sinal será monitorada (em megahertz). Se tudo funcionar, veremos a imagem da webcam. Para o primeiro experimento de teste, coloquei meu dispositivo OSA103 no quadro , ligando-o no modo gerador a 100 MHz :



pressione R para que o script se lembre da imagem de fundo e, em seguida, retornemos à área de digitalização. Em seguida, usando a tecla S , você pode selecionar nossa antena da seguinte maneira:



Após confirmar sua escolha com a tecla Enter , a captura de dados da câmera e do receptor SDR começará imediatamente. Bem, e como sempre, na primeira vez que tudo der errado:



Para entender o que o OpenCV vê e por que a captura não funciona como deveria, descomentei as seguintes linhas do script:

# debug only
#cv2.imshow("Thresh", thresh)
#cv2.imshow("Frame Delta", frameDelta)

Eles abrem duas janelas adicionais, onde você pode ver como a antena contrasta com a imagem de fundo. Esse contraste é ajustado pelo valor em thresh :

    	
thresh = cv2.threshold(frameDelta, 50, 255, cv2.THRESH_BINARY)[1]

No original, tinha 15 anos, aumentei esse valor para 50 e a antena começou a ser capturada com confiança. Este número deve ser selecionado dependendo da iluminação no quadro. Ao mesmo tempo, experimentei o brilho da antena, pois o preto às vezes se confundia com um FPGA quadrado grande. Após essas correções, tudo começou a funcionar como um relógio:


Quando a verificação for concluída, você deverá pressionar Q e o script criará a distribuição do campo. Nesse caso, o resultado é o seguinte:


Honestamente - pouco se entende, tudo ficou embaçado e com algum tipo de divórcio. Não que eu estivesse esperando um super resultado, mas gostaria de ver algo mais específico, por exemplo, quais circuitos no dispositivo estão envolvidos na geração. Ainda assim, o mapeamento de campos eletromagnéticos deve dar respostas a perguntas e não criar novos. Olhei novamente para o código e vi que a imagem do campo estava muito embaçada durante a construção. Reduzi esse efeito alterando o valor sigma de 7 para 2:


blurred = gaussian_with_nan(powermap, sigma=2)

Além disso, substituí o objeto de medição. Para testar o método, você precisa de algo mais simples como objeto de teste, e um dispositivo com uma estrutura interna complexa não é adequado para isso. Além disso, a distribuição do campo magnético de radiofrequência do novo objeto deve ser conhecida antecipadamente, para que fique claro se o script mostra os campos corretamente ou não. O mesmo laço magnético se encaixa perfeitamente com esse critério. Como vimos anteriormente, em um loop, o campo magnético está concentrado dentro de seu loop. Então, ao digitalizar, devemos vê-lo. Soldamos um circuito ressonante quadrado simples na forma de folha de cobre e capacitor:


, . , . , .

Você pode ter uma pergunta - como podemos ver o campo dessa maneira, se não houver nenhuma fonte aqui! E o fato é que estamos cercados por ruído branco (o mesmo "ruído" que ouvimos quando não estamos sintonizados em uma estação favorita) e em seu espectro já existem quase todas as frequências desejadas. Se aproximarmos a antena de medição do circuito ressonante, ela se tornará mais suscetível ao ruído na frequência ressonante desse circuito. O receptor SDR é tão sensível que pode até ser usado para medir campos em objetos passivos! Vamos tentar o que acontece:



Tentei agir com muito cuidado, mas, ainda assim, mudei levemente a folha na qual o contorno estava colado. No entanto, o resultado não foi ruim. Você pode dirigir nossa sonda muito mais rapidamente. Pelo que entendi, a velocidade do processamento de dados depende apenas do desempenho do computador e do tremor das suas mãos. De qualquer forma, a placa de vídeo do meu laptop ficou visivelmente desgastada durante o processo de teste. Sim, e também mudei o mapa de cores para um plasma mais agradável para os olhos:



Parece que a prática, no entanto, coincide com a teoria e o método de trabalho. Vemos o campo magnético onde era esperado - dentro do circuito. Ao mesmo tempo, a resolução da nossa imagem é ditada diretamente pelo tamanho da antena de medição, e é por isso que os campos estão um pouco fora do lugar onde estão fisicamente. E essa é a razão pela qual o tamanho da antena é tão importante, porque a magnitude dessa mudança dependerá dela. Também é visto claramente que uma mudança na direção do movimento da antena distorce a imagem. Isso ocorre porque o processo de "desenho" me lembra desconfiado de algo:



Por analogia com o exemplo acima, o método fornece uma boa resolução na direção do movimento da antena. Porém, a cada mudança nessa direção, um erro entra nos dados na forma de um deslocamento da imagem do campo. Eu circulei o mesmo contorno, mas desta vez na diagonal, o que mais uma vez demonstrou essa desvantagem. A propósito, ambas as varreduras foram realizadas a uma frequência de 87 MHz.



Infelizmente, sou um programador mais ou menos, porque ainda não descobri como modificar o código para corrigir esse erro. Em vez disso, posso oferecer uma breve metodologia de autoria para medir campos. Nós chamamos de técnica de golpe único:



Tudo é simples - se houver uma direção, não haverá erros. Obviamente, enquanto isso limita ainda mais o escopo de possíveis aplicações, mas teremos certeza de que os campos observados correspondem mais ou menos à realidade. Agora, sabendo como medir corretamente, você pode tentar digitalizar outra coisa. Por exemplo, você sabia que um circuito ressonante, como o já mostrado, pode ser feito sem condutores? Como já argumentei, uma corrente de alta frequência flui através de um capacitor, o que significa que você pode montar um circuito ressonante usando apenas ele e nada mais. Aumente mentalmente o capacitor muitas vezes e obtenha um pedaço de cerâmica que também localize o campo magnético próximo a ele (graças a colegas do ITMO pela amostra fornecida). Frequência de varredura 254 MHz.



Vale mencionar outra desvantagem do método - a distância do objeto à antena deve ser idealmente a mesma, caso contrário, nossa imagem dos campos não estará mais no plano, o que significa que será distorcida. Teoricamente, acho que isso também pode ser corrigido usando o OpenCV, rastreando a mudança no tamanho da antena no quadro.

Para a demonstração final, montei uma coisa tão mais complicada:



este é um filtro passa-baixa de vários estágios, também pode ser chamado de linha de transmissão ou mesmo metamaterial (com uma extensão muito grande). O diagrama do circuito se parece com o seguinte:



Como existem muitos elementos ressonantes nessa estrutura, ele também possui muitas frequências ressonantes (medidas pelo dispositivo desde o primeiro experimento). Cada mínimo do gráfico é uma ressonância no espectro:



Tais ressonâncias são chamadas de modos próprios. E cada um deles tem sua própria imagem única dos campos. Mas, no entanto, todos eles estão conectados por uma certa regularidade, a saber, o número de ondas que se encaixam na estrutura, o que é claramente visível durante a varredura:



Tendo contado o número de picos de campo, você pode nomear com precisão o número do modo. Também é uma ótima ilustração de como os campos eletromagnéticos reduzem sua velocidade dentro dos materiais. Afinal, a velocidade da onda é menor - mais picos de campo se encaixam na imagem. Na minha opinião, um ótimo auxílio visual.

Como você pode ver, a ideia de cruzar SDR e OpenCV acabou sendo muito boa. E o mais importante, essa união traz um toque criativo ao processo de medição monótono e chato. Penso que no futuro isso poderá tornar o estudo dos campos eletromagnéticos uma experiência mais emocionante, além de se tornar uma boa ajuda para os laboratórios domésticos.

All Articles