escrito Bruno Benedetti & Marcos Benedetti
📚 Introdução
O uso de SDRs (Software Defined Radios) tem se expandido em diversas áreas da engenharia, oferecendo flexibilidade e baixo custo para captura e análise de sinais. Este guia prático demonstra como utilizar um dispositivo RTL-SDR para capturar sinais de rádio e processá-los em tempo real ou armazená-los para análise posterior utilizando Python e Scilab.
O uso de SDRs (Software Defined Radios) tem se expandido em diversas áreas da engenharia, oferecendo flexibilidade e baixo custo para captura e análise de sinais. Este guia demonstra como utilizar um dispositivo RTL-SDR para capturar sinais de rádio e processá-los utilizando Python e Scilab, incluindo visualizações gráficas.
O SDR, faz uma parte do trabalho deslocando o sinal do RF para BandaBase, bem como a devida digitalização dos dados em formato amostras intercaladas I (in-phase) e Q (quadrature), armazenados geralmente como valores inteiros de 8 bits . Esses dados devem ser trabalhados com softwares como MTLAB, SCILAB ou mesmo em programas Python, conforme veremos abaixo.

Fonte: Livro Software Defined Radio
Observe abaixo as faixas de frequências normalmente usadas pelo mundo, que o dongle SDR pode atuar.

Fonte: Livro Software Defined Radio
o que é modulação FM
Antes de colocarmos o SDR em funcionamento, vale entender o princípio da modulação em frequência (FM), técnica amplamente usada nas transmissões de rádio.
Na modulação FM, a informação (o áudio) modifica a frequência de uma portadora de alta frequência, enquanto a amplitude permanece constante. Em outras palavras, o som que queremos transmitir é convertido em pequenas variações de frequência ao redor de uma frequência central.
A grande vantagem da FM é sua resistência a ruídos: como interferências geralmente afetam a amplitude, e não a frequência, o sinal demodulado mantém excelente qualidade sonora mesmo em ambientes ruidosos.
A largura de banda de um sinal FM é dada pela regra de Carson:

onde:
Δf é o desvio máximo de frequência (por exemplo, ±75 kHz para FM comercial);
fmax é a maior frequência de áudio moduladora (geralmente até 15 kHz).
Para recuperar o áudio, o receptor precisa “medir” essas variações de frequência e convertê-las novamente em tensão — processo chamado demodulação FM.
Com um Software Defined Radio (SDR), conseguimos fazer tudo isso por software, visualizando e processando as amostras captadas em tempo real.
🛠️ 1. Instalação do Driver e Software SDR
RTL-SDR:
Windows: Instale o driver usando o Zadig.
Linux: Instale com:
Verificação:
Linux:
rtl_testourtl_fm -f 100.1M -s 2.4e6 -Windows: SDR# ou CubicSDR
📥 2. Captura de Dados do SDR
Capturando o sinal FM
Considere um sinal FM com portadora de 100 MHz, sintonizado no SDR com largura de banda 250kHz, com taxa de amostragem adequada, conforme figura abaixo.

Ao sintonizar uma frequência (ex: 100,1 MHz), o SDR gera amostras intercaladas I (in-phase) e Q (quadrature).
Esses dados são armazenados geralmente como valores inteiros de 8 bits, em um arquivo binário, e representam o sinal complexo:
s(t)=I(t)+jQ(t)s(t) = I(t) + jQ(t)
Cada par de amostras I e Q descreve o estado instantâneo do sinal recebido, contendo todas as informações necessárias para reconstruir o áudio original.
🔹 Opção A: Gerar Arquivo Binário,
observe abaixo a linha de comando no shell do LINUX para obter os dados da sinal FM com portadora 100.1 MHz, sendo armazenado em arquivo binário sdr_samples.bin.
🔹 Opção B: Stream Direto via Python
Abaixo script em python para realiza a mesma tarefa.
observe que deve-se instalar as bibliotecas rt;sdr, numpy, como por exemplo: pip install rtlsdr
script python, use qualquer editor de texto, após salve com o nome de geradados.py, rode com o comando python geradados.py.
📊 3. Importação e Processamento no Scilab
// Abrir arquivo binário
fd = mopen(“sdr_samples.bin”, “rb”);
data = fread(fd, -1, “int16”);
mclose(fd);
// Separar I e Q
I = data(1:2:$);
Q = data(2:2:$);
s = I + %i*Q;
// Gerar gráfico da forma de onda
scf(0);
plot(real(s));
xlabel(“Amostras”);
ylabel(“Amplitude I”);
title(“Componente I do sinal SDR”);
scf(1);
plot(imag(s));
xlabel(“Amostras”);
ylabel(“Amplitude Q”);
title(“Componente Q do sinal SDR”);
// Plot magnitude do sinal
scf(2);
plot(abs(s));
xlabel(“Amostras”);
ylabel(“Magnitude”);
title(“Magnitude do sinal I/Q”);
// Plot espectro de frequência
N = length(s);
S = fft(s);
f = (0:N-1)*(2.4e6/N); // taxa de amostragem 2.4 MHz
scf(3);
plot(f, 20*log10(abs(S)));
xlabel(“Frequência (Hz)”);
ylabel(“Magnitude (dB)”);
title(“Espectro de Frequência do Sinal SDR”);
📈 4. Exemplos de Dados
Para teste sem hardware, você pode simular um sinal FM mono simples:
Gráfico da forma de onda: componente I e Q

Espectro de frequência: visualização da banda do sinal

✅ 5. Conclusão
Neste guia, mostramos como capturar sinais de rádio utilizando RTL-SDR e processá-los no Scilab, incluindo gráficos da forma de onda, magnitude e espectro. Estes exemplos são fundamentais para análise de sinais em engenharia e telecomunicações, além de servir como base para projetos mais avançados, como demodulação FM e análise de espectro em tempo real.
Agradecimentos:
fonte de algumas figuras do livro Software Defined Radio using MATLAB & Simulink and the RTL-SDR. escrito por: Stewart, Robert and Barlee, Keneth W and Atkinson, Dale S. W and Crockett, Lousie H




Deixe um comentário