Télécommande wifi pour Raspberry Pi

Pour un spectacle mêlant photo et danse contemporaine « Paysages d’un corps », les artistes nous sollicitent pour mettre en place un dispositif numérique qui leur permettra de :
– projeter de manière instantanée les photos prises sur scène durant la performance
– diffuser de la musique
– projeter des diaporamas sous forme de séquences vidéo préenregistrées
– projeter enfin un diaporama des photos prises durant la performance
C’est le photographe qui durant la performance sera en charge de piloter le dispositif.

Matériel

Le photographe utilise un appareil photo reflex doté d’une fonction wifi.

Raspberry Pi

Pour les besoins exprimés le choix du matériel informatique s’oriente vers un Raspberry Pi 3 qui aura pour rôle la mise en place d’un point d’accès wifi ainsi que l’ensemble des fonctions multimédias. Il sera raccordé à un vidéoprojecteur par sa sortie HDMI, à un système de diffusion sonore via la prise analogique Jack, et sera branché au secteur.

La télécommande

Les télécommandes infra-rouges classiques n’étant pas compatibles avec les conditions d’utilisation prévues : interférences lumineuses et obstacles… nous nous orientons vers une télécommande wifi basée sur un microcontrôleur EPS8266. Elle doit posséder un minimum de 6 boutons pour les fonctions multimédia et fonctionnera sur batterie rechargeable. Elle sera construite autour de la carte Adafruit Feather Huzzah ESP8266 (https://learn.adafruit.com/adafruit-feather-huzzah-esp8266/overview ) qui remplit les caractéristiques nécessaires : dimensions, circuit de charge de batterie LiPo, 9 entrées/sorties.

Résumé

Réalisations

Raspberry Pi

Logiciels

Le Raspberry Pi fonctionne grâce à un ensemble de logiciels libres :

Description du fonctionnement :

Au démarrage du Raspberry

  • le point d’accès Wifi est démarré
  • le serveur MQTT est démarré
  • Airnef démarre, en attente de la connexion de l’appareil photo. Lorsqu’une photo arrive, elle est projetée immédiatement.
  • un script python est lancé en attente des messages provenant de la télécommande. Pour chaque message reçu une action différente est lancée.

Beaucoup de ressources sont disponibles sur internet, les documentations de chaque logiciel utilisé sont assez détaillées. Nous avons tout de même documenté la création du point d’accès wifi sur le wiki du Fablab : https://wiki-fablab.grandbesancon.fr/doku.php?id=howto:wirelessaccespoint

Le script python du client MQTT est disponible sur:

https://framagit.org/Fablab_des_fabriques_Besancon/pizzapette/-/blob/master/RPI/mqtt-sub.py

Réplication

Dans ce contexte d’utilisation il convient plus que jamais d’être capable de répliquer le système mis en place. On sait que la durée de vie des cartes mémoires utilisées dans les Raspberry Pi est assez limitée et la fiabilité n’est pas au rendez-vous. Il nous faut donc une solution de sauvegarde et de clonage du système embarqué. Sur un système GNU/Linux il est aisé de créer une image de la carte mémoire. Le script PiShrink (https://github.com/Drewsif/PiShrink) nous permet ensuite de rétrécir cette image et pallier au problème des capacités différentes des cartes mémoires. L’ensemble de la procédure est décrite sur notre page wiki :

https://wiki-fablab.grandbesancon.fr/doku.php?id=howto:creer_sa_propre_image_de_carte_sd

La télécommande

Code source

La télécommande est programmée à l’aide de l’IDE Arduino. Le programme a pour objet :

  • la connexion Wifi au Raspberry Pi
  • la connexion au serveur MQTT du Raspberry Pi
  • l’envoi d’un message texte à chaque appui d’un bouton. En pratique, afin d’éviter des appuis involontaires, il faudra appuyer sur 2 boutons simultanément pour l’envoi du message.

Le code source est disponible sur :

https://framagit.org/Fablab_des_fabriques_Besancon/pizzapette/-/blob/master/Arduino/pizzapette.ino

PCB

Après les premiers tests sur une plaque de prototypage rapide, on dessine le circuit imprimé définitif à l’aide du logiciel libre KiCad.

Les fichiers sources sont disponibles à l’adresse :

https://framagit.org/Fablab_des_fabriques_Besancon/pizzapette/-/tree/master/KiCad

Le circuit est ensuite usiné au Fablab à l’aide de la fraiseuse d’après les réglages :

https://wiki-fablab.grandbesancon.fr/doku.php?id=usinage_pcb

Boîtier

On a bien sûr besoin de mettre tout ça dans un boîtier, que l’on dessine avec le logiciel libre de C.A.O FreeCAD. Le fichier source ainsi que les STL pour impression sont disponibles à l’adresse: https://framagit.org/Fablab_des_fabriques_Besancon/pizzapette/-/tree/master/Boite

Assemblage

Conclusion

Lors de la première représentation, tout a fonctionné correctement, la batterie d’une capacité de 400mAh offre plus de 2h30 d’autonomie à la télécommande ce qui est largement suffisant pour assurer l’alimentation le temps de la représentation.

L’ensemble des sources est à récupérer sur :

https://framagit.org/Fablab_des_fabriques_Besancon/pizzapette/