banner
Lar / blog / Introdução ao Rádio GNU
blog

Introdução ao Rádio GNU

Jun 18, 2023Jun 18, 2023

Rádio Definido por Software (SDR) – a capacidade de processar sinais de rádio usando software em vez de eletrônicos – é inegavelmente fascinante. No entanto, há uma grande lacuna entre ser capaz de usar software SDR pronto para uso e escrever o seu próprio. Afinal, os SDRs exigem muito processamento de sinal digital (DSP) em altas velocidades.

Poucas pessoas conseguiriam construir um PC moderno do zero, mas quase qualquer um pode obter uma placa-mãe, algumas placas de E/S, uma fonte de alimentação e um gabinete e montar um sistema personalizado. Essa é a ideia por trás do GNU Radio e do SDR. GNU Radio fornece uma variedade de funções Python que você pode usar para criar aplicativos SDR sofisticados (ou, na verdade, qualquer aplicativo DSP).

Se Python ainda não for sua escolha (ou mesmo se for), há uma maneira ainda mais fácil de usar o GNU Radio: O GNU Radio Companion (GRC). Esta é uma abordagem principalmente gráfica, permitindo que você encadeie módulos graficamente e construa GUIs simples para controlar seu novo rádio.

Mesmo que você normalmente pense que GRC é sobre rádios, na verdade ele é um bom framework para construir qualquer tipo de aplicação DSP, e é isso que vou mostrar no vídeo abaixo. O GRC possui um bloco gerador de sinal e faz interface com sua placa de som. Ele ainda tem a capacidade de ler e gravar dados no sistema de arquivos, para que você possa usá-lo para fazer muitas aplicações ou simulações DSP sem hardware adicional.

ATUALIZAR:Não perca a postagem de acompanhamento que usa SDRPlay para construir um receptor baseado em GNU Radio.

Existem vários blocos de construção importantes que se combinam para tornar o SDR possível. O primeiro é algum dispositivo de entrada (uma fonte) que é amostrado em alguma taxa de amostragem. Para um dispositivo de áudio, as amostras serão números reais. No entanto, é mais provável que os dispositivos de rádio forneçam números complexos com componentes I e Q.

Se você não está familiarizado com a expressão de sinais como componentes I e Q (às vezes conhecidos como dados de quadratura), esse é um grande tópico (com uma ótima explicação em 3D, uma da Tektronix e outra da National Instruments). No entanto, você não precisa entender diretamente a teoria por trás dos sinais de quadratura para começar a usar o GRC. Saiba apenas que os sinais I e Q podem se combinar para expressar qualquer forma de onda e, inversamente, qualquer forma de onda pode se dividir em uma série de valores I e Q. Com o GRC, porém, não é tão importante (na maioria dos casos) entender isso, assim como você pode usar uma placa de vídeo sem saber exatamente quais sinais estão no barramento PCI Express.

Você pode encontrar um projeto inicial simples no vídeo abaixo. GRC usa um diagrama de blocos (um gráfico de fluxo) para representar seu projeto. Ao criar um novo gráfico de fluxo, você verá dois blocos já presentes: um para opções e uma variável chamada samp_rate. A parte mais importante do bloco de opções define o kit de ferramentas gráficas que você deseja usar (widgets gráficos WX ou widgets QT). Para o nosso propósito, isso realmente não importa, mas no vídeo vou selecionar Qt. A taxa de amostragem é tão essencial ao seu projeto que existe uma variável especial para ela. A maioria dos outros blocos pegará o valor desta variável e o usará para sua taxa de amostragem. No entanto, nem sempre é isso que você deseja, mas é um bom ponto de partida. Para este exemplo, eventualmente obterei entrada de uma placa de som, então queria uma taxa de amostragem que a maioria das placas de som suportasse (48 kHz). Para começar, porém, mantive o exemplo muito simples, como você pode ver no diagrama acima.

Para começar, você colocará uma fonte de sinal que gera dados de QI (como números complexos) no gráfico de fluxo. O bloco gerador de sinal pode gerar muitos dados e tornar a CPU lenta. Como a taxa de amostragem é de 48 kHz, não faz sentido gerar mais de 48.000 amostras por segundo. Para garantir que isso aconteça, você adicionará um bloco de aceleração e o conectará ao gerador.

Conectar portas que possuem a mesma cor (e, portanto, o mesmo tipo de dados) é simples. Basta clicar em uma porta e depois clicar na outra. A ordem não importa e você pode conectar mais de uma entrada a uma única saída. Se o tipo de dados da porta não corresponder, você precisará usar um conversor de tipo (e o vídeo de exemplo mostrará isso mais tarde).