Le FabLab Utopi du Creusot participe début octobre 2022 au Village des Sciences organisé au Creusot. Parmi les expériences exposées cette année, nous présentons une expo d’écrans … blancs. L’idée c’est d’enlever le filtre polarisant qui existe sur l’écran LCD, et de faire regarder le public avec des lunettes munies … d’un filtre polarisant. Une façon d’engager la conversation et d’expliquer certains phénomènes physiques.
Au sommaire :
Un cadre photo pour une exposition
Contraintes et cahier des charges
Il faut préparer 4 Raspberry Pi. Au démarrage, les Raspberry Pi lancent un programme d’affichage d’images sur l’écran, chaque image est présentée 30 secondes. Les images sont présentées en boucle.
Les écrans qu’on a « dépiautés » en enlevant le film polarisant (cutter puis nettoyage à l’acétone, avec les précautions d’usage contre les coupures quand on utilise un cutter pour découper le film. Pour l’acétone il faut éloigner les enfants et les animaux, l’utiliser à l’extérieur, sinon aérer la pièce plusieurs heures après utilisation, ou porter un masque adapté. Porter des gants pour protéger la peau, ne pas fumer…
Les images sont présentées sur des vieux écrans (de récupération) Dell E176EPf qui ont une résolution de 1280×1024 pixels. Les images ont été préalablement (légèrement) découpées et redimensionnées pour les amener au format requis. Elles seront donc affichées en plein écran avec la résolution adéquate. Les écrans ont une entrée VGA, ce qui impose d’utiliser un adaptateur HDMI=>VGA. En HDMI il y a un dialogue entre le Raspberry Pi et l’écran pour convenir de la meilleure résolution à utiliser (EDID). En VGA il n’y a pas de dialogue… il va falloir configurer manuellement la résolution.
Régler la résolution à 1280×1024
Le système d’exploitation a bien évolué sur le Raspberry Pi. Il intègre les souhaits des utilisateurs, en particulier la possibilité de régler la résolution de l’affichage.
On peut par exemple régler la résolution en mode « Headless » (sans écran ni clavier/souris connecté). Vous y accédez via le menu de configuration du Raspberry Pi dans l’onglet Display. c’est la résolution que verra VNC lorsque vous prendrez la main à distance avec VNC. Ça ne sert pas ici mais c’est toujours bien de le savoir 😉
Les écrans qui vont être utilisés au Village des Sciences sont des DELL avec une résolution de 1280×1024 pixels. On va donc régler la résolution du Raspberry Pi sur cette valeur :
Dans le menu du Raspberry Pi, ouvrez le menu Screen Configuration.
Dans Configure > HDMI1 > Résolution choisissez 1280×1024 (ou une autre valeur selon l’écran que vous utiliserez). Cliquez ensuite sur Appliquer (flèche rouge).
Une fenêtre apparait, si tout est correct, cliquez sur Valider. L’utilité de cette validation est que si la configuration que vous imposez n’est pas supportée par le moniteur et que l’image disparait, il suffit de patienter 10 secondes. Comme vous ne validez pas la modification, le système revient en arrière et remet la valeur précédente (qui fonctionnait). L’affichage réapparait alors normalement.
Installer feh
Pour gérer le cadre photo j’ai choisi le programme feh. La première étape a été de créer une carte SD propre avec Raspberry Pi Imager. Après réglage des paramètres, suppression du passage en veille (c’est mieux pour un cadre photo 😀 ), il faut installer feh :
sudo apt install feh
et c’est tout.
Pour notre expo, ce sont les images des tableaux d’un peintre local : Raymond Rochette qui a su restituer les conditions de travail dans les usines métallurgiques du Creusot. Il a aussi abordé de nombreux autres sujets comme vous pourrez le voir sur ce site qui présente son œuvre. Pour les peintures relatives aux usines, choisissez Genres > Paysage Industriel ou Usine.
J’ai donc créé un dossier /home/pi/expo sur le Raspberry Pi, dans lequel j’ai déposé les images des tableaux.
Afficher les tableaux aléatoirement à l’écran
Pour afficher les images aléatoirement à l’écran, entrez la commande suivante dans le terminal :
feh -F -z -D 5 ~/expo/
- L’option -F permet pour toutes les commandes suivantes de s’afficher en plein écran
- L’option -z fait un tirage aléatoire d’image dans un répertoire
- L’option -D suivie d’un chiffre en secondes donne la durée d’affichage de chaque image
- ~/expo/ est le répertoire où j’ai rangé les images
Créer un fichier de démarrage
Créez un fichier dans le dossier /home/pi :
sudo nano diapo.sh
Dans ce fichier mettez la commande du cadre photo :
feh -F -z -D 5 ~/expo/ &
Le & final force la commande à s’exécuter en arrière plan. Modifiez les droits du fichier pour qu’il soit exécutable. Comme on n’est pas connecté à Internet, on peut même mettre 777 (pas recommandé) sans trop de risque.
sudo chmod 775 diapo.sh
Exécuter automatiquement le script
L’idée c’est que les personnes présentes sur le stand n’aient rien à faire pour que le diaporama se lance.Comme j’ai utilisé la distribution qu’il y avait sur mon Pi400, elle est en mode graphique avec un Desktop. Le plus simple c’est d’utiliser l’autostart pour que lorsque le bureau a démarré le programme soit lancé. Ouvrez autostart :
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@bash /home/pi/diapo.sh
Sortez par CTRL X pour enregistrer la modification et redémarrez le système.
Le programme se lance et les diapos commencent à défiler. Vous pouvez sortir du programme en appuyant sur la touche ESC.
Arrêt propre du système
Comme tous les systèmes d’exploitation, le Linux qui tourne sur le Raspberry Pi accompli de nombreuses tâches en simultané, et parfois il n’a pas terminé d’écrire un fichier sur la carte SD (qui lui sert de mémoire de masse). De ce fait si on arrête brutalement le Raspberry Pi en débranchant ou en coupant l’alimentation, on court le risque d’avoir des fichiers pas terminés, pas fermés, mal enregistrés. Au prochain démarrage du système, ça fonctionne… ou pas ! LA solution c’est de provoquer systématiquement un arrêt du système avant de couper l’alimentation. Les concepteurs du Raspberry Pi on prévu cette éventualité. Le GPIO 3 est réservé à cet usage. Il suffit de brancher un bouton poussoir entre le GPIO3 et la masse. Lorsqu’on appuie sur le bouton poussoir le système déclenche une procédure d’arrêt « propre ».
Installer un bouton poussoir (BP)
L’installation physique ne devrait pas poser de problème. Le bouton poussoir est connecté à la masse (broche 6) d’un côté et au GPIO3 (broche5). Quand on actionne le BP, le système déclenche un arrêt propre.
Vous pouvez utiliser tout type de bouton, avec un contact fugitif (le contact se coupe quand vous relâchez le BP).
Ajouter l’interception du BP sur GPIO 3
Ouvrez le fichier /boot/config.txt pour le modifier
sudo nano /boot/config.txt
A la fin du fichier dans la rubrique [all] ajoutez
dtoverlay=gpio-shutdown
Au prochain redémarrage, cette ligne activera la surveillance du GPIO 3 par le système, pour provoquer l’arrêt en cas de mise à la masse. Une résistance de pull-up est prévue sur le GPIO 3.
Par défaut c’est le GPIO3 qui est utilisé. Sur une de mes cartes le GPIO 3 est « mouru », il reste toujours à 0 en entrée (souvenir d’une manip ratée ?). J’ai donc décidé de tester une autre entrée. Le GPIO 26 fonctionne bien. J’ai modifié config.txt pour l’utiliser.
dtoverlay=gpio-shutdown,gpio_pin=26
Du coup le bouton poussoir sera branché entre GPIO26 et masse (broches 37 et 39) comme sur la photo ci-dessous.
Mise en route et arrêt du Raspberry Pi
Pour la mise en route du cadre photo:
- Vérifier que le bouton poussoir est bien connecté en 37 et 39 (1)
- Connecter l’adaptateur HDMI=>VGA sur la sortie HDMI (2)
- Connecter l’alimentation (3)
Arrêt du cadre photo
- Appuyer sur le bouton poussoir connecté en broches 37 et 39 (1)
- Attendre un moment, l’écran s’éteint, la LED ACT clignote une dizaine de fois puis s’éteint.
- Débrancher la prise d’alimentation (3)
Test de la fonction d’arrêt propre
Lorsqu’on appuie sur le bouton poussoir, le système s’arrête proprement.
Conclusion
Un montage qui vous servira si vous devez projeter des images en boucle sur un écran. On peut supprimer la projection aléatoire en modifiant la ligne de commande dans le script de lancement.
Sources
Arrêt « propre » du système : https://www.circuitbasics.com/using-a-switch-to-startup-and-shutdown-the-raspberry-pi/
Cadre photo : https://blog.dorian-depriester.fr/linux/raspberry/un-cadre-photo-numerique-connecte-avec-un-raspberry-pi
Programme de cadre photo : https://doc.ubuntu-fr.org/feh
Démarrer un script automatiquement : https://www.circuitbasics.com/starting-programs-automatically-using-cron-on-a-raspberry-pi/
Très intéressant.
Merci
😉
merci 🙂
Bonjour,
Excellent tuto comme d habitude,
vous devriez sacrifier un vieil écran, afin de montrer et
d expliquer le phenomene de polarisation de la lumiere
Experience tres interessante pour ceux qui ne l ont jamais vu ou fait
et je suppose que vous possedez un ou plusieurs vieux ecrans….
Encore merci
A Bientôt
Christian
Bonjour Christian
C’est exactement ce que nous avons fait. 4 écrans ont été « pelés », on a enlevé le filtre polarisant et on le remplace par celui qui est monté sur les lunettes !
je n’ai pas de photos de cette partie car je m’occupe des raspi et de leur config/environnement/câbles…
mais il y aura des photos après l’expo (7 au 9 octobre)
cdt
francois
Le résultat à la fête de la science au Creusot nous a « bluffé » complètement.
Merci à tous !
Jean-François – F5RRB
merci pour ce retour !
Ping : Visite de la maison "Rochette" - Framboise 314, le Raspberry Pi à la sauce française....
Bonjour,
y a-t-il moyen de répéter une image et laisser les autres en aléatoires?
Je travaille pour un restaurant et j’aimerais que leur menu apparaisse entre chacune de mes photos, est-ce possible?
d’avance merci
Bonjour
non pas avec la solution proposée qui est strictement aléatoire.
il faut réécrire un prog. en Python par exemple avec affichage aléatoire une fois sur 2
cdt
francois