Paso 2: Convertir la imagen a un archivo de sonido de SSTV
A continuación tenemos que convertir la imagen a un archivo de sonido que puede ser transmitido por el aire. Existen varias implementaciones de SSTV para Raspberry Pi.
PySSTV
Primero tuve un vistazo a PySSTV, una implementación de Python que se puede instalar usando pip:
pi ~/sstv $ sudo apt-get install python-setuptools pi ~/sstv $ sudo apt-get install python-imaging pi ~/sstv $ sudo easy_install pip pi ~/sstv $ sudo pip install setuptools --no-use-wheel --upgrade pi ~/sstv $ sudo pip install PySSTV
Esto funciona, pero es muy slooooooooooooow, tarda muchos minutos para convertir una sola imagen. Así que seguí a buscar otra opción.
Implementación en C
Luego encontré una implementación simple de C aquí: https://sites.google.com/site/ki4mcw/Home/sstv-via-uc Lamentablemente hay algunos errores en los tonos de preámbulo, pero aquellos fáciles de arreglar. También hice un poco más flexible que puede establecer la frecuencia de muestreo de audio de la línea de línea de comandos. Fuente de mi aplicación puede encontrarse en GitHub. Para compilar el código fuente:
pi ~/sstv $ sudo apt-get install libgd2-xpm-dev pi ~/sstv $ sudo apt-get install libmagic-dev pi ~/sstv $ gcc -lm -lgd -lmagic -o pisstv pisstv.c
Para ejecutar el programa:
pi ~/pisstv $ ./pisstv /tmp/image.png 22050 Constants check: rate = 22050 BITS = 16 VOLPCT = 20 scale = 6553 us/samp = 45.351474 2p/rate = 0.000285 Checking filetype for file [/tmp/image.png] File is a PNG image. Input file is [/tmp/image.png]. Output file is [/tmp/image.png.wav]. Writing audio data to file. Got a total of [2589556] samples. Done writing to audio file. Created soundfile in 4 seconds.
Como se puede ver el archivo de sonido de SSTV se crea en tan sólo 4 segundos. Así que muy bien, siguiente paso, cómo transmitir el audio por el aire.