La présence de Thomas Pesquet dans la Station Spatiale Internationale (ISS) a permis à l’ESA de proposer un concours aux écoliers, collégiens et lycéens européens.
De nombreux participants français ont été retenus pour proposer des applications qui seront exécutées sur les Raspberry Pi embarqués dans l’ISS.
J’ai reçu plusieurs demandes d’aide auxquelles je réponds de mon mieux. Pour aider ceux qui démarrent et ont du mal à travailler sur leurs programmes avec la SenseHat, je vous propose de voir comment installer un émulateur de cartes SenseHat sur le Raspberry Pi, puis un émulateur de matrice à LED pour la SenseHat qui pourra aider à la création d’animations ou de blasons/logos destinés à accompagner les programmes.
AstroPi, la SenseHat dans l’espace
Rappel des caractéristiques de la SenseHat
Je vous avais présenté la SenseHat lors de sa sortie, fin 2015. Vous pouvez aussi consulter le WiKi de McHobby qui propose un traduction en français de la documentation de la SenseHat. Dominique publie de nombreuses traductions, n’hésitez pas à faire un tour sur son site
La carte est équipée d’accéléromètres et de gyroscopes réalisés en nano-technologie, qui enregistrent les mouvements selon les 3 axes Pitch, Yaw et Roll. Si ça ne vous parle pas, le schéma ci-dessous devrait vous éclairer
La carte SenseHat embarque
- Une matrice d’affichage LED 8 × 8
- Un accéléromètre, un gyroscope et un magnétomètre
- Un capteur de pression atmosphérique
- Des capteur de température et d’humidité
- Un Joystick miniature
Émulateur de SenseHat
Il existe deux émulateurs pour la carte SenseHat : un émulateur en ligne proposé par Trinket une société partenaire de la fondation Raspberry Pi et um émulateur à installer sur le Raspberry Pi.
Émulateur en ligne
L’émulateur en ligne autorise l’écriture de programmes Python qui peuvent être testés sur le simulateur (à droite de l’image).
Des curseurs situés en bas à droite de la fenêtre permettent de simuler les capteurs de température, pression et humidité de la carte. Ceci est utilisé pour tester des programmes qui doivent réagir en fonction de la valeur retournée par les capteurs.
Cet émulateur peut être utilisé avec n’importe quel navigateur et permet aux participants au challenge de tester leurs réalisations, même s’il n’y a pas de SenseHat ou de Raspberry Pi disponible.
Émulateur sur le Raspberry Pi
Pour les participants qui ont déjà un ou plusieurs Raspberry Pi, il est possible d’installer un émulateur, développé par Dave Jones, qui permet de simuler la carte SenseHat. Des curseurs sont ici aussi utilisés pour modifier les valeurs envoyées par les capteurs pendant que le code est en cours d’exécution.
Pourquoi avoir créé cette deuxième version ?
- Pour l’utilisation hors ligne, ce qui est l’utilisation la plus courante des Raspberry Pi dans une salle de classe.
- Pour permettre l’utilisation des plus vieux modèles de Raspberry Pi 256 Mo qui ne peuvent pas exécuter la version web.
- Pour vous permettre d’utiliser un programme SenseHAT avec tous les modules Python disponibles, ou avec d’autres fonctionnalités du Raspberry Pi comme le module caméra.
Comment ça marche ?
Vous trouverez l’émulateur dans la rubrique Programmation du Menu de Raspbian PiXel. Lorsque vous cliquez dessus, la fenêtre Sense Hat Emulator s’ouvre.
Vous disposez alors de curseurs simulant les capteurs et de boutons en lieu et place du mini joystick.
Vous allez pouvoir piloter l’émulateur de carte SenseHat en Python : pour mes tests j’ai ouvert un Python 2 (IDLE) et saisi
from sense_emu import SenseHat sense = SenseHat() red = (255, 0, 0) sense.show_message('framboise314', text_colour = red)
et le message s’affiche en rouge sur l’afficheur (ici le début de ‘framboise314’).
Un émulateur de matrice à LED
C’est Denis, enseignant de technologie à Brioude (43) qui m’a posé des questions à propos de cet émulateur. La version originale est disponible sur le github d’AstroPi.
J’en ai fait un fork que j’ai francisé, adapté à la nouvelle version de SenseHat (les anciens appels se faisaient sur AstroPi). J’ai aussi fait quelques modifications cosmétiques pour que les textes en français tiennent dans les boutons. Cette version est bien entendu disponible si vous souhaitez la modifier ou l’adapter à vos besoins.
Installer l’émulateur de matrice à LED
Si git n’est pas installé sur votre version de Raspbian, installez le
sudo apt-get install git
pi@raspberrypi:~ $ git clone https://github.com/framboise314/RPi_8x8GridDraw Clonage dans 'RPi_8x8GridDraw'... remote: Counting objects: 81, done. remote: Compressing objects: 100% (27/27), done. remote: Total 81 (delta 16), reused 0 (delta 0), pack-reused 54 Dépaquetage des objets: 100% (81/81), fait. Vérification de la connectivité... fait. pi@raspberrypi:~ $
La copie du répertoire est rapide et ne devrait pas poser de problème.
pi@raspberrypi:~/RPi_8x8GridDraw $ ls 8x8grid-astropi.py 8x8grid-unicorn.py buttons.py led.py licence.md README.md
Dans le dossier on trouve les classes led et buttons nécessaire au fonctionnement du programme émulateur de matrice : 8x8grid-astropi.py.
N’hésitez pas à le renommer. Je trouvais le nom un peu long, je l’ai rebaptisé 8×8.py…
Lancer l’émulation
Dans le terminal entrez python 8x8grid-astropi.py
pi@raspberrypi:~/RPi_8x8GridDraw $ python 8x8grid-astropi.py
ce qui va ouvrir la fenêtre de l’émulateur :
Si vous cliquez sur une LED elle prendra la couleur sélectionné (rouge par défaut). Il faudra cliquer sur le bouton Joue sur LED en bas à droite pour transférer l’image sur les LED de la matrice.
Il est possible d’enregistrer une animation trame par trame, puis de l’enregistrer pour la recharger plus tard.
La vidéo ci-dessous vous montre le fonctionnement de cet émulateur.
Vidéo
Et pour mémoire les premiers essais de la SenseHat sur framboise314
Conclusion
Avec les outils présentés dans cet article vous pouvez préparer le challenge de l’ESA ou tout simplement vous entraîner à la programmation de la SenseHat sans disposer de la carte.
Pour ceux qui seraient tentés par l’achat de la SenseHat, ces émulateurs vous donnent les moyens de vérifier si elle correspond à votre attente.
Sources
- https://trinket.io/sense-hat
- https://github.com/astro-pi/RPi_8x8GridDraw
- https://github.com/framboise314/RPi_8x8GridDraw