4b. Software Defined Radio (SDR)

Volver ao curso


Contidos:



Que é unha SDR - Diagrama de bloques

Unha SDR (Software Defined Radio) é unha placa programable especializada na transmisión e recepción de sinais. Podémolo describir rápido e mal como “o Arduino das radiocomunicacións”.

Imaxe: Alba.boj
Imaxe: Alba.boj

Ten dúas áreas diferenciadas:

Na recepción:

  1. Comeza coa antena + amplificador de baixo ruido (LNA), que serven para recuperar o sinal electromagnético, convertelo en electricidade (sinal de radiofrecuencia, RF), e aumentar a súa potencia para que sexa distinguible pola electrónica posterior.
  2. O sinal captado se pasa por un downconverter (mezclador + oscilador local), que diminúe a frecuencia do sinal modulado que estás a recibir (pasamos RF → IF). Esa frecuencia intermedia é apta para que o conversor analóxico-dixital (muestreo1 e cuantificación2) dixitalice o sinal e así sexa entendible pola microelectrónica da SDR (procesador de banda base + FPGA). Neste paso convertemos IF → banda base dixitalizada.
  3. O procesador de banda base e a FPGA comunícanse coa túa PC a través do porto USB/PCIe e da capa software. Este software pode ser desde un receptor de radio FM comercial, ata un receptor de satélite meteorolóxico.

Na transmisión (só certas SDR):

  1. O usuario programa unha aplicación SDR ou utiliza unha “precociñada”. Podemos invertir o proceso anterior (pasar un audio .mp3 e modulalo en FM) ou outra aplicación máis complexa (transmitir en VHF, modular TDT…).
  2. A capa software da orde á CPU+FPGA de xerar o sinal banda base. O convertedor dixital a analóxico crea o sinal analóxico. Despois se pasa por un upconverter (mezclador + oscilador local) para elevar a frecuencia dese sinal ata a RF especificada polo usuario.
  3. A etapa de potencia aumenta o nivel de sinal e o envía á antena, que convirte ese sinal en ondas electromagnéticas.
Raspberry Pi con RTL-SDR. LimeSDR Mini con accesorios (prolongador USB, antenas de varias frecuencias, carga 50Ω)
Raspberry Pi con RTL-SDR. LimeSDR Mini con accesorios (prolongador USB, antenas de varias frecuencias, carga 50Ω)

Un SDR pode ter unha ou dúas tomas de antena (se permite transmisión case seguro terá dúas tomas). Nestre caso, recoméndase conectar unha carga terminadora de 50Ω cando non esteas usando a transmisión. Por suposto, se permite executar aplicacións que utilicen transmisión e recepción simultánea TDM, como por exemplo as femtoceldas repetidoras de telefonía móbil.

LimeSDR mini con antena telescópica e carga terminadora na Tx. Repara en que o prolongador debe soportar USB 3.0
LimeSDR mini con antena telescópica e carga terminadora na Tx. Repara en que o prolongador debe soportar USB 3.0

Algúns factores determinantes no prezo dunha SDR son a sensibilidade (na recepción) e a potencia de saída (na transmisión). Por suposto, pódese trampear o sinal usando amplificadores de potencia ou LNAs conectados na propia liña coaxial, pero iso son parches que non suprimen outros problemas como poden ser a xeración de interferencias na propia CPU/FPGA.

Dentro das SDR económicas, as máis populares son as RTL-SDR, que son vendidas como sintonizadores TDT USB, pero que no seu interior levan o chip RTL2832U, que permite recepción de todo tipo de sinais de 500 kHz a 1,75 GHz.


SDR básico: espectro e demodulacións analóxicas

Se tes unha placa SDR, prepáraa e conéctalle unha antena telescópica, imos escoitar radio FM. Se non a tes, simplemente bota unha ollada a este apartado para tomar conciencia do básico.

A aplicación típica para demodular audio é SDR# (só para Windows) (pronunciado “SDR Sharp”) ou CubicSDR (Linux, macOS). Estas capturas foron tomadas con CubicSDR, se precisas información sobre SDR#, segue este link.

Conecta a SDR coa antena ó porto USB do teu ordenador. Abre o software e selecciona o dispositivo correcto:

Unha vez recoñeza a SDR,

  1. Escolle a modulación FMS (FM Stereo). Arriba á esquerda.
  2. Selecciona a frecuencia (center frequency) e ancho de banda (bandwith). A FM comercial ten un ancho de banda de 200 kHz. Eu escollín sintonizar a frecuencia de 91.0 MHz.
  3. A escoitar!

En CubicSDR aparecen os seguintes diagramas:


Transmisión TCP

Raspberry Pi con RTL-SDR
Raspberry Pi con RTL-SDR

Podes separar fisicamente a placa SDR do ordenador que a controla. Só precisas conectar a SDR a unha Raspberry Pi que estea na mesma rede que o equipo cliente. O proceso consiste en instalarlle o sistema operativo Raspbian seguindo os pasos do seguinte titorial:

Montaje de un servidor rtl_tcp con una Raspberry Pi

Unha vez teñas a Raspberry funcionando, configura unha IP estática válida na túa rede, e habilita SSH. A partir de ahí xa podes deixar o equipo sen monitor, teclado nin rato e conectarte desde calquera outro ordenador usando protocolo SSH:

Deberás executar os dous comandos da imaxe cada vez que inicies a Raspberry (coa dirección IP correcta):

$ sudo rmmod dvb_usb_rtl28xxu rtl2832 (desactiva o driver orixinal da RTL-SDR, que servía para usala como receptor TDT)

$ rtl_tcp -a 192.168.99.25 Activa a transmisión TCP desde a IP actual (debe ser a que teña a raspberry, compróbaa en ifconfig).

No equipo cliente, neste caso na aplicación CubicSDR, elixe File → SDR Devices → Remote → preme “Add” e elixe “SoapyRemote” e mete a rtl_tcp=IP:porto (no exempo “rtl_tcp=192.168.99.25”)

E listo! Imaxina as posibilidades… poderías deixar a SDR na casa e conectarte desde calquera lugar mediante VPN. Ata hai apps móbiles:


O seguinte nivel: GNU Radio

GNU Radio é un ferramenta de desenvolvemento software que permite desenvolver circuitos de proceso de sinais mediante bloques para a súa entrada e/ou saída via SDR.

Ten parecido con Matlab Simulink. Que iso non te asuste, usaremos exemplos xa feitos.


Preparación do software

Para utilizar GNU Radio, o mellor é traballar en sistema operativo Linux. A xente da asociación SDR Galicia recomenda a distribución Ubuntu Mate versión 18.04 LTS.

Propoño dúas opcións:

Se escolles a primeira opción, cando remate a instalación deberás entrar en Ubuntu por primeira vez e abrir unha terminal Bash en Menú → “Ferramentas de Sistema” → “Terminal de MATE”. Ou ben directamente pulsando CTRL + ALT + T.

A continuación segue os pasos das “Instrucións de instalación das ferramentas para o desenvolvemento SDR na plataforma GNU Radio” da asociación SDRGalicia de Vigo. Se tes calquera dificultade, deberás desistir e pasar á alternativa da máquina virtual, xa que de momento non sei Linux como para dar soporte.

Outros pasos adicionais para a instalación propia: Librerías Python necesarias para trazado de gráficas:

$ sudo apt install python-numpy python-scipy

$ sudo apt install python-qt4

Clonar o git da Industriosa cos materiais do Obradoiro SDR, que contén interesantes prácticas:

git clone https://github.com/aindustriosa/obradoiro-sdr

Ambas instalacións incorporan drivers para as seguintes placas USB:


Algúns proxectos de SDR Galicia

Bótalles unha ollada ós flowgraphs que teñen no seu Github (incluidos na máquina virtual):

  1. Receptor e transmisor FM. Ollo, realmente non se pode transmitir sen unha licenza comercial de radio.
  2. Receptor ADS-B. Automatic dependent surveillance—broadcast (ADS–B) é unha tecnoloxía de balizas de navegación aérea. Todos os avións emiten a súa posición sen ningunha restricción, e se pode captar con facilidade.
  3. Transmisor DVB-T


Comentarios sobre GNU Radio Companion

Ás veces se nomea a interfaz gráfica de GNU Radio como “GRC”, que significa “GNU Radio Companion”.

CTRL + F serve para buscar bloque. Debes ter dispoñibles os da túa SDR.

O “RESAMPLER” nos exercicios de FM se coloca para axustar o número de mostras a 48 kHz, que é a frecuencia máxima soportada polos chips de audio dos ordenadores.


Tarefa “4b” para entregar

Busca en Internet un proxecto de SDR que che interese e fai un comentario sobre el.

Entrega en formato PDF na páxina da tarefa. Dúbidas no foro de consultas. Non esquezas facer o cuestionario deste tema.


Bibliografía e agradecementos


Creado para G1801013 – “Radiocomunicacións prácticas” por Daniel Ríos Suárez

Licenciado baixo a Licenza Creative Commons Recoñecemento Compartir igual 4.0

Este curso virtual elaborouse para ser impartido no plan anual de formación do profesorado de FP da Consellería de Cultura, Educación e Ordenación Universitaria, Xunta de Galicia

Quedan fora desta licenza os textos, imaxes, recursos... que manteñen a súa propia licenza, sinalada en cada caso.

Úsanse imaxes e recursos de producción propia, que se publican no Dominio público ou con licenza CC BY-SA, outras de dominio público, con licenza creative commons, GNU... tomados prefentemente de bancos de recursos educativos abertos. Tamén se empregan ---acolléndose ao "Dereito de cita" --- imaxes, e recursos diversos de diferentes páxinas web, e se enlaza a súa licenza ao pé dos propios recursos ou na páxina coa atribución da propiedade intelectual dos ODE empregados, dereitos reservados que manteñen integramente. Se detecta algunha imaxe, recurso... con dereitos reservados, agradecemos nos informe para retirala.


  1. A frecuencia de muestreo é un parámetro crítico xa que provoca a maior parte da carga de traballo do PC e da SDR. Debe cumprir o criterio de Nyquist (fs≥2 BW). Isto é, debe ser polo menos o dobre do ancho de banda recibido. Tamén deberás ter en conta as restriccións do bus que esteas a empregar. Non é o mesmo unha SDR USB 2.0 (60 MB/s) que unha 3.0 (625 MB/s). ↩︎
  2. A LimeSDR cuantifica mostras de tamaño de 12 bits. ↩︎