Paso 3: Configuración de la pila de software
Instalar el sistema operativo de su elección en el Pi, usamos Raspbian ya familiarizado con Debian/Ubuntu resulta fácil de usar. Este paso va a seguir convenciones de Raspbian; puede utilizar cualquier distribución de si le gustaría, pero luego tendrás que ajustar estos al sabor usa.
Tomar imágenes va a pasar con raspistill, esto ya debería estar instalado en el dispositivo. Conversión a archivo de sonido modulada SSTV ocurrirá usando PySSTV y UNIXSSTV, así que usted necesitará Python, Git, GCC y hacer para. Las dependencias de este último están presentes por defecto en Raspbian, por lo que sólo necesitará instalar el software SSTV dos ejecutando los siguientes comandos.
sudo pip install PySSTV git clone <a href="https://github.com/dnet/unixsstv" rel="nofollow">https://github.com/dnet/unixsstv</a> make -C unixsstv
La imagen será tomada y preprocesada en Python, un script de ejemplo se puede encontrar a continuación:
from PIL import Image from pysstv.color import MartinM2 from subprocess import check_output from cStringIO import StringIO import RPi.GPIO as GPIO import struct, sys TX_PIN = 18 img = Image.open(StringIO(check_output(['raspistill', '--output', '-', '--width', '320', '--height', '256', '-e', 'bmp']))) overlay = Image.open('overlay.png') img.paste(overlay, (0, 0), overlay) img = img.resize((MartinM2.WIDTH, MartinM2.HEIGHT)) sstv = MartinM2(img, 44100, 16) for freq, msec in sstv.gen_freq_bits(): sys.stdout.write(struct.pack('ff', freq, msec)) GPIO.setmode(GPIO.BCM) GPIO.setup(TX_PIN, GPIO.OUT) GPIO.output(TX_PIN, True)
Se pondrá la imagen en overlay.png sobre la foto, así que necesitarás construir de manera que la mayor parte de ella es transparente, ya que los píxeles serán los únicos que pueden verse en la foto. No dude en experimentar, sólo asegúrese de que si utiliza frecuencias de radio de jamón (amateur), transmiten su indicativo poniendo en la imagen. (Los usuarios avanzados pueden probar y utilizar el codificador de indicativo FSK en PySSTV).
Martin M2 fue seleccionado ya que cuenta con una salida de color bastante agradable, aún teniendo sólo un minuto para transmitir una imagen. 44100 Hz y 16 bits también son buenos parámetros, pero no dudes en experimentar con los así, sólo asegúrese de hacer coincidir estos parámetros en otros componentes.
Puesto que esta secuencia de comandos finaliza su trabajo activando el PTT y escribir datos preprocesados de SSTV en la salida estándar (stdout), otro componente es necesario que termine el proceso, reproduce el sonido en la salida de audio y PTT desactiva al final.
Para esto, un script de shell debe ser creado como el de abajo:
#!/bin/sh python /home/pi/beacon.py | /home/pi/unixsstv/gen_values 44100 >/tmp/wav.bin play -q -r 44100 -t f32 -c 1 --norm /tmp/wav.bin >/dev/null 2>&1 python -c 'import RPi.GPIO as G; G.setmode(G.BCM); G.setup(18, G.OUT); G.output(18, False); G.cleanup()' >/dev/null 2>&1 rm -f /tmp/wav.bin
Python script anterior es llamado beacon.py y situado en el directorio home del usuario por defecto de la pi, si esto es diferente en su dispositivo, usted necesitará cambiar apropiadamente. La salida es por departamento en gen_values de UNIXSSTV y luego se guarda en un archivo con ningún encabezado, sólo contenido binario, por lo tanto la extensión .bin.
Esto se juega más tarde con el comando juego de sox, que puede ser instalado en Raspbian desde el paquete sox, pero usted puede tener hacer manualmente en otras distros. Finalmente, la PTT se desactiva llamando código Python directamente, en el llamado estilo, y rm borra el archivo temporal de preprocesados.
Nota: ya GPIO puede ser manipulado sólo por raíz, debe ejecutar esta secuencia de comandos shell como root , así. También, juego se utiliza el canal de audio de HDMI por defecto, así que asegúrese de desconectar el HDMI al tratar de esta parte. Si no reproduce ningún sonido, compruebe también el nivel de volumen (por ejemplo con alsamixer).
Teniendo estos, captura la imagen y transmitir la foto pueden ser juzgados por ejecutar el script anterior desde una consola (serial, local, GUI) o sobre SSH. Si funciona bien, solo una cosa es necesaria para la transmisión regular llamada cron. En sistemas tipo Unix como Linux, este programa realiza tareas predefinidas según un calendario que se puede definir mediante crontab -e, donde se encuentra -e para editar. Esto mostrará la programación actual del usuario (este debe ser root para esta tarea) y permite editar en el editor predeterminado del usuario. También hay ayuda allí con respecto a la sintaxis, y por ejemplo, enviar una imagen cada 15 minutos se ve como esto:
*/15 * * * * sh /home/pi/beacon.sh
Esta configuración puede ser probada conectando el Raspberry Pi a un cargador USB, y si todo funciona, se puede seguir sustituyendo con solar.