Table des matières
Configuration du Raspberry-Pi pour de la SSTV
La suite a été testé sur un Raspberry-Pi 1 Modèle B et Raspberry-Pi 2 Modèle B avec la caméra officiel du Raspberry-Pi. J'utilise comme OS, Minibian. C'est une version allégé de Raspbian sans interface graphique.
Installation des paquets
apt-get install -y raspi-config keyboard-configuration nano gcc g++ sox imagemagick console-data libgd-dev make python python3 git # Note: libttspico-utils est dans les dépôts non-free. Il sert à générer des messages de synthèse apt-get install -y libttspico-utils
Activer la caméra
raspi-config
Installer le programme qui permet de convertir les photos en fichier sons au format Robot 8BW
git clone https://github.com/Oros42/SSTV_Robot_encoder.git cd SSTV_Robot_encoder gcc SSTV_Robot_encoder.c -o SSTV_Robot_encoder -lgd -lm chmod u+x SSTV_Robot_encoder cd ..
Réglage audio
J'utilise une voix de synthèse pour mes réglages. On crée le fichier sons.
pico2wave -l fr-FR -w synthese_vocale.wav "Ceci est un message automatique de test. Il est envoyé par <VOTRE_INDICATIF>. Ce message sert à effectuer des réglages de réception audio sur des machines fonctionnant sou «g» «n» «u» Linuxce. Merci de ne pas répondre à ce message."
Brancher la carte sons usb et le câble vers le Yeasu, puis
alsamixer
F6, puis et baisser le sons Jusqu'à 20. Échappe pour quitter.
Télécharger le fichier suivant :
- test_audio.sh
#!/bin/bash echo "18" > /sys/class/gpio/export sleep 1 echo out > /sys/class/gpio/gpio18/direction echo 1 > /sys/class/gpio/gpio18/value aplay -D plughw:CARD=Device,DEV=0 synthese_vocale.wav echo 0 > /sys/class/gpio/gpio18/value echo "18" > /sys/class/gpio/unexport
Je conseille d'ouvrir un 2ème terminal ou 2ème session SSH sur le Raspberry-Pi. Dans le 1er, lancer la lecture du fichier sons.
chmod u+x test_audio.sh ./test_audio.sh
Dans le 2ème régler le sons
alsamixer
Câblage de l'interrupteur
Câblage des LED
Le programme pour la SSTV
Télécharger le fichier suivant :
- raspberry_sstv.sh
#!/bin/bash indicatif='F4HIZ' # mettez votre indicatif ici #5V ;5V ;GND ;GPIO14;GPIO15;GPIO18;GND ;GPIO23;GPIO24;GND ;GPIO25;GPIO8 ;GPIO7;DNC;GND ;GPIO12;GND ;GPIO16;GPIO20;GPIO21 #3V3;GPIO2;GPIO3;GPIO4 ;GND ;GPIO17;GPIO27;GPIO22;3V3 ;GPIO10;GPIO9 ;GPIO11;GND ;DNC;GPIO5;GPIO6 ;GPIO13;GPIO19;GPIO26;GND # interrupteur pour enclencher le système # GPIO 24 ━━résistance 1K━━━┓ # ground ━━résistance 10K━━┫ # ┃ # ╱ # ┃ # 3v3 ━━━━━━━━━━━━━━━━━━┛ # # antenne FM # GPIO 4 (antenne 20cm) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # # led d'infos # GPIO 22 ━━━━━━━━led rouge━━┓ émission # ground ━━résistance 10K━━━┫ # GPIO 23 ━━━━━━━━led jaune━━┛ prise de la photo # commande baofend ou yaesu # GPIO 18 ━━━━━━━━━━━━━━━━━━┳━━résistance 220━━━━2N3904 # ground ━━résistance 10K━━┛ #mode=24 mode=8 finish() { echo "22" > /sys/class/gpio/unexport echo "23" > /sys/class/gpio/unexport echo "24" > /sys/class/gpio/unexport echo "18" > /sys/class/gpio/unexport } trap finish EXIT # switch echo "24" > /sys/class/gpio/export sleep 1 echo in > /sys/class/gpio/gpio24/direction # audio cable echo "18" > /sys/class/gpio/export sleep 1 echo out > /sys/class/gpio/gpio18/direction # led rouge (émission) echo "22" > /sys/class/gpio/export sleep 1 echo out > /sys/class/gpio/gpio22/direction echo 0 > /sys/class/gpio/gpio22/value # led jaune (photo) echo "23" > /sys/class/gpio/export sleep 1 echo out > /sys/class/gpio/gpio23/direction echo 0 > /sys/class/gpio/gpio23/value sleep 1 echo 1 > /sys/class/gpio/gpio23/value # jaune sleep 1 echo 0 > /sys/class/gpio/gpio23/value # jaune if [ ! -d /root/photos ]; then mkdir /root/photos fi if [ ! -f /root/photos/_num ]; then echo "0" > /root/photos/_num fi num=`cat /root/photos/_num` while : do sleep 2 if [ `cat /sys/class/gpio/gpio24/value` -eq 1 ]; then echo 1 > /sys/class/gpio/gpio23/value # led jaune # take photo num=$((num+1)) echo $num > /root/photos/_num raspistill -w 2592 -h 1944 --colfx 128:128 -vf -hf -o /root/photos/photo_${num}.jpg echo 0 > /sys/class/gpio/gpio23/value if [[ mode -eq 24 ]]; then #raspistill -w 320 -h 240 --colfx 128:128 -vf -hf -o /root/data/photo.jpg convert /root/photos/photo_${num}.jpg -resize 320x240 -strip -interlace Plane /root/data/photo.jpg else #raspistill -w 160 -h 120 --colfx 128:128 -vf -hf -o /root/data/photo.jpg convert /root/photos/photo_${num}.jpg -resize 160x120 -strip -interlace Plane /root/data/photo.jpg fi convert /root/data/photo.jpg -fill '#0008' -draw 'rectangle 0,0,65,25' -fill white -pointsize 20 -annotate +5+20 $indicatif /root/data/anno_photo.jpg # encode wav /root/SSTV_Robot_encoder/SSTV_Robot_encoder /root/data/anno_photo.jpg /root/data/sstv_robot.wav # Robot${mode}BW if [ -f /root/data/sstv_robot.wav ]; then echo 1 > /sys/class/gpio/gpio22/value # led rouge # FM # Pas au point :-( # /root/fm_transmitter/bin/Release/fm_transmitter /root/data/sstv_robot.wav 104.0 & # radio echo 1 > /sys/class/gpio/gpio18/value if [ `aplay -L|grep "plughw:CARD=Device,DEV=0"` != "" ]; then aplay -D plughw:CARD=Device,DEV=0 /root/data/sstv_robot.wav else aplay /root/data/sstv_robot.wav fi echo 0 > /sys/class/gpio/gpio18/value echo 0 > /sys/class/gpio/gpio22/value # led rouge sleep 2 echo "24" > /sys/class/gpio/unexport echo "24" > /sys/class/gpio/export sleep 1 echo in > /sys/class/gpio/gpio24/direction else echo "ERROR /root/data/sstv_robot.wav not found !" echo 1 > /sys/class/gpio/gpio22/value # led rouge sleep 1 echo 0 > /sys/class/gpio/gpio22/value # led rouge echo 1 > /sys/class/gpio/gpio23/value # led jaune sleep 1 echo 0 > /sys/class/gpio/gpio23/value # led jaune echo 1 > /sys/class/gpio/gpio22/value # led rouge sleep 1 echo 0 > /sys/class/gpio/gpio22/value # led rouge fi fi done