sábado, 21 de enero de 2017

Raspberry Pi como transmisor de radio

Hace unos días, decidí probar suerte e intentar crear una emisora de radio FM con mi Raspberry Pi. Raspberry Pi puede emitir en una frecuencia entre 1 y 250 MHz pero la banda de frecuencias más habitual de transmisión de radio en FM oscila entre 88 MHz y 108 MHz




Necesitaremos los elementos siguientes:

  • Un Raspberry Pi
  • Un cable macho-hembra de una breadboard (placa de pruebas) de unos 20 cm nos bastaría para que haga de antena.
  • El programa PiFM que se puede descargar en este enlace: [Download Now!]

Utilizaremos como antena un cable de aproximadamente 20 cm para tener algo de cobertura, el cual conectaremos al pin GPIO 4, que es el pin de reloj (CLK). Las señales de reloj se usan para proporcionar un pulso que puede sincronizar varias partes de un sistema que lleva a cabo acciones que tienen una relación temporal entre ellas. GPCLK0 (GPIO 4 y pin número 7), es un reloj de propósito general capaz de crear una señal de pulsos cuadrados hasta una frecuencia máxima de 75 MHz.



Optimización de la Antena

Para calcular la longitud óptima que debe tener la antena, se debe tener en cuenta:
  • La longitud de la antena depende directamente de la frecuencia a la que vayamos a emitir
  • La longitud de la antena es 1/4 de la longitud de onda de la frecuencia de emisión
  • Por último, longitud de onda = (Velocidad de la luz en metros por segundo/frecuencia en Hertzios) - 5%
Suponga que tenemos pensado emitir en 91.4 Mhz:

Longitud de la antena = ((300000000/91400000)-5%)/4 = (3,28-5%)/4 = 3,12/4 = 0,78 metros ó 78 cm

Con esto habremos optimizado la antena para emitir a distancia máxima en función de una determinada frecuencia, si necesitásemos más potencia tendríamos que utilizar un amplificador de señal conectado al puerto GPIO4 y una antena comercial, pero advertimos, emitir en FM sin licencia (y sin equipo calibrado y certificado) podría estar prohibido y se sanciona con multa. Infórmese de la legislación de su país en esta materia.



Crea un directorio, por ejemplo PiFM y mueva el archivo pifm.tar.gz allí y descomprímalo:

user@linuxmint ~ $ cd /home/pi/PiFM

El programa necesita permisos de administrador para emitir el archivo de sonido de extensión wav en la frecuencia que elijamos, en este caso, elegiremos la frecuencia 108.0 MHz.

user@linuxmint ~ $  sudo ./piFM sound.wav 108.0

Para emitir en stereo:

user@linuxmint ~ $  sudo ./pifm left_right.wav 103.3 22050 stereo 

Ejemplo de comando para hacer sonar un archivo MP3:

user@linuxmint ~ $  ffmpeg -i input.mp3 -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - 

Si desea retransmitir radio mediante un micrófono USB (vea la página de configuración del manual arecord)

user@linuxmint ~ $ arecord -d0 -c2 -f S16_LE -r 22050 -twav -D copy | sudo ./pifm - 

PiFM se distribuye con el código fuente listo para ser compilado, puede modificarlo a su gusto:

user@linuxmint ~ $ gcc -lm -std=c99 pifm.c

Nos generará un archivo que podremos emitir por radio a través de este comando:

user@linuxmint ~ $ sudo ./a.out sound.wav 100.3

Fuentes: