Publié le 10 janvier 2017 - par

[AstroPi] Emulateur de SenseHat et de matrice de LEDs

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 ?

  • Utilisation hors ligne, ce qui est l’utilisation la plus courante des Raspberry Pi dans une salle de classe.
  • Recyclage des plus vieux modèles de Raspberry Pi 256 Mo qui ne peuvent pas exécuter la version web.
  • Mise en œuvre d’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.

 [stextbox id= »alert » caption= »A noter »]La sauvegarde d’une animation ou d’une image se fait toujours avec le même nom. Si vous voulez garder des fichiers, il faudra penser à les renommer, sinon il seront écrasés lors des prochaines sauvegardes.[/stextbox]

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

 

Sense HAT emulator

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

18 réflexions au sujet de « [AstroPi] Emulateur de SenseHat et de matrice de LEDs »

  1. Bernard

    Bonsoir Francois

    On s’amuse bien…
    Je vois que les lumières des guirlandes lumineuses de Noel ont inspiré cet article. 😉
    Cet émulateur Sense Hat a beaucoup plu .

    Je l’avais déjà dit, mais je le répète , je trouve les vidéos particulièrement bien faites et pédagogiques.

    Cordialement.

    Répondre
  2. Valentin

    Bonjour,

    Peut être saurez vous éclairer ma lanterne. Je constate, autant sur vos articles que dans les magazines spécialisés, que le langage prépondérant est chaque fois le Python. J’ai cru comprendre que c’était un bon langage pour l’apprentissage, pourtant j’ai appris avec le C/C Arduino au lycée puis C++/Java en BTS. Ma première expérience avec le Python ne date que de l’année passée, en Licence Professionnelle, en cours de Cryptologie. Du coup je m’interroge, Est-ce une nouvelle lacune de l’éducation française ou simplement une philosophie différente?

    PS: Qu’importe la réponse, mon langage préféré reste le C++ 😛

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Valentin
      déjà le Pi de Raspberry Pi vient de Python
      Après c’est un langage simple d’utilisation très utilisé par les étudiants et les chercheurs… doctorants etc l’avantage certain c’est que du fait de son utilisation universelle il y a des bibliothèques… à peu près pour tout 🙂
      j’en fais parce que de nombreux progs sont en Python dans l’environnement Raspberry Pi. Ne le répétez pas mais d’origine je suis plutôt accro à l’assembleur (6800, Z80, 80X86) et j’ai ensuite basculé en C. Quand je dois écrire un prog rapide en fait… je préfère le C
      Ce que je n’aime pas dans le Python c’est cette histoire de blocs faits en indentation. c’est facile pour les débutants (à condition qu’ils ne mélangent pas espaces et TAB). Ça ne vaut pas les {} qui sont (à mon avis) plus lisibles
      Mais bon, c’est sans doute parce que j’ai été formé avec ces outils…
      Et puis Python est utilisé dans l’éducation Nationale (quand même)
      regardez https://www.google.fr/?gws_rd=ssl#safe=off&q=python+%C3%A9ducation+nationale
      j’espère avoir répondu à vos questions
      cordialement
      François

      Répondre
  3. Mohamed

    Bonjour François,
    Article très bien conçue comme d’habitude.
    Et au fait….une très bonne année 2017 à vous pleine de petits Rpi…Pendant que j’y penses, savez vous si une nouvelle version du Rpi est dans les tuyaux pour 2017 (un Rpi 4) ?

    Répondre
    1. dyox

      Bonjour,
      J’ai ma petite théorie la dessus. Si vous voyais des promotions dans les enseignes françaises, alors dans peu de temps il y aura une nouvelle version. Je pense surtout au mois de février pour le lancement de leur produit, donc dans pas longtemps !

      Répondre
  4. albaflo

    la pi 3 a le défaut de chauffer pas mal quand on soumet son processeur à un régime un peu soutenu.

    La présence de la hat, placée si près de la raspi, ne représente pas un risque de surchauffe ?

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour
      ma foi on ne peut pas trop faire autrement…
      sur les pi3 que je sollicite beaucoup je monte un radiateur
      Raspi 3 avec radiateur et SenseHAT
      cela ne gêne pas la mise en place de la SenseHat
      Après… est-ce que le flux d’air est optimisé ? pas sûr !
      il faudrait tenir le RasPi vertical pour assurer une circulation de l’air entre les deux cartes ou alors monter un petit ventilateur
      mais jusqu’à maintenant tout ce petit monde fonctionne sans problème
      cordialement
      François

      Répondre
  5. CDBI30

    Bonjour François
    J’ai une pifcace2 sur mon PI3
    Peut-on monter la SenseHat en plus ??
    Il semble y avoir conflit sur le bus SPI, même en changeant l’adresse de la piface

    Bonne Journée

    Répondre
    1. François MOCQ Auteur de l’article

      bonsoir
      rapidement sensehat est en I2C voir https://fr.pinout.xyz/pinout/sense_hat
      il faudrait monter la piface au dessus de la sense hat ? ça masquerait la matrice de LEDS…
      La PiFace2 est sur le bus SPI… il ne devrait pas y avoir d interférence.
      http://www.piface.org.uk/guides/Install_PiFace_Software/Enabling_SPI/
      et
      https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial
      cordialement
      François

      Répondre
  6. CDBI30

    Bonjour
    Merci de me conforter, c’est bien ce que je pensais.
    Pour le montage, j’utilise le IO-SHIM de Piface (chez KUBII)
    Avec une nappe sur le côté vers la SenseHat qui sera montée en face avant
    la Piface2 restant sur le PI3.

    Il faut que je regarde un peu plus
    Cordialement

    Répondre
      1. CDBI30

        Tout semble fonctionner
        J’affiche les mesures sur la matrice
        Mon prog de capture photo qui utilise la Piface2 fonctionne
        Mais quand j’appuie sur un bouton de la piface qui est en listener
        c’a allume la matrice alors que la sensehat n’est pas utilisée dans ce programme
        et pas importée

        Répondre
          1. CDBI30

            Bonsoir
            J’ai fait un prog python qui commande la SenseHat avec des boutons
            sur les entrées de la Piface2.
            Choix d’afficher la Temp ou la Temp+Humi…..etc
            C’a fonctionne parfaitement
            Le seul défaut est que l’activation d’une entrée de la Piface
            allume la matrice plein pot avec l’arc-en -ciel
            Un autre prog avec la Piface qui n’utilise pas la SenseHat fait pareil
            Dès que j’appuie sur un bouton, la matrice s’allume
            et comme le prog ne l’utilise pas….impossible de l’éteindre
            Il y a vraiment une action de l’interruption générée par la Piface en listener sur la sensehat

            Comment mettre ce prog sur le site ?
            Dans le Forum ?

            Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.