Étape 3: Configuration de la pile logicielle
Installer l’OS de votre choix sur la Pi, nous avons utilisé Raspbian puisque les personnes familières avec Debian/Ubuntu trouvent qu’il est facile à utiliser. Cette étape va suivre les conventions de Raspbian ; vous pouvez utiliser n’importe quelle distribution si vous voulez, mais alors vous devrez ajuster celles-ci à la saveur qu’il utilise.
Prise d’images va se produire à l’aide de raspistill, cela devrait déjà être installé sur l’appareil. Conversion de fichier sonore modulé SSTV arrivera en utilisant PySSTV et UNIXSSTV, donc vous avez besoin de Python, Git, GCC et faire pour cela. Dépendances de ce dernier sont présents par défaut sur Raspbian, donc vous avez juste besoin d’installer les deux logiciels SSTV en exécutant les commandes suivantes.
sudo pip install PySSTV git clone <a href="https://github.com/dnet/unixsstv" rel="nofollow">https://github.com/dnet/unixsstv</a> make -C unixsstv
L’image sera prise et prétraité en Python, un exemple de script se trouvent ci-dessous :
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)
L’image en overlay.png sera mis sur la photo, donc vous aurez besoin pour le construire de façon que la plupart de celui-ci est transparent, puisque ces pixels seront les seuls que l'on peut voir sur la photo. N’hésitez pas à expérimenter, assurez-vous juste que si vous utilisez des radiofréquences de jambon (amateur), transmettre votre indicatif d’appel en le plaçant sur l’image. (Les utilisateurs avancés peuvent essayer et utiliser l’encodeur de callsign FSK dans PySSTV).
Martin M2 a été choisi car il a une sortie couleur plutôt sympa, tout en prenant toujours qu’une seule minute pour transmettre une image. 44100 Hz et 16 bits sont également des paramètres par défaut bonne, mais n’hésitez pas à expérimenter avec ceux aussi bien, assurez-vous de faire correspondre ces paramètres à d’autres éléments.
Étant donné que ce script termine son travail en activant le bouton PTT et écrire des données SSTV prétraitées sur la sortie standard (stdout), une autre composante est nécessaire qui termine le traitement, fait entendre le son sur la sortie audio et désactive des PTT à la fin.
Pour ce faire, un script shell doit être créé comme celui ci-dessous :
#!/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
Le Python script ci-dessus est appelé beacon.py et situé dans le répertoire home de l’utilisateur de pi par défaut, si cette approche est différente sur votre appareil, vous devrez changer cela de manière appropriée. La sortie est acheminée dans les gen_values de UNIXSSTV et puis enregistrée dans un fichier avec aucun en-tête, juste binaire contenu, d'où l’extension .bin.
C’est par la suite joué avec la commande jouer des sox, qui peut être installé sur Raspbian depuis le paquet sox, mais vous devrez le faire manuellement sur les autres distributions. Enfin, le bouton PTT est désactivé en appelant le code Python directement, dans un style intraligne soi-disant, et rm supprime le fichier prétraité temporaire.
Remarque : depuis GPIO peut seulement être manipulée par root, vous aurez besoin d’exécuter ce script shell en tant que racine aussi bien. Aussi, jouer utilise le canal audio HDMI par défaut, alors assurez-vous de débrancher le HDMI tout en essayant cette partie. Si aucun bruit ne joue, également vérifier le niveau de volume (par exemple avec alsamixer).
Ayant ces, de capture de l’image et de transmettre la photo peuvent être essayés en exécutant le script ci-dessus depuis une console (serial, local, GUI) ou via SSH. Si cela fonctionne bien, une seule chose est nécessaire pour la transmission régulière appelée cron. Sur les systèmes de type Unix tels que Linux, ce programme effectue des tâches prédéfinies selon un calendrier qui peut être définie à l’aide crontab -e, où e - représente edit. Cela affichera le calendrier actuel de l’utilisateur (ce doit être root pour cette tâche) et permet de modifier dans l’éditeur par défaut de l’utilisateur. Il y a aussi peu d’aide là au sujet de la syntaxe, et par exemple, envoi une image toutes les 15 minutes ressemble à ceci :
*/15 * * * * sh /home/pi/beacon.sh
Cette configuration peut être testée en branchant le Raspberry Pi à un chargeur USB, et si tout fonctionne, vous pouvez continuer en le remplaçant par le solaire.