Affichage dynamique avec un Raspberry

Bonjour,

En cette période de confinement pour certaines et certains (perso, je bosse), la genèse de cet article ne sera pas bien différente des autres : il fait suite à une demande d’aide.

Le but est très similaire à mes précédents articles intitulés “Lecture automatique de vidéos en boucle au démarrage“ et Lecture automatique de vidéos en boucle au démarrage – Suite, mais sera adapté à un cas un peu différent (pas de lecture en réseau) et utilisera le FTP pour le transfert des fichiers.

L’idée est bien évidemment de pouvoir diffuser des vidéos de présentation dans un magasin ou dans une salle d’attente.

Ce tutoriel est dédicacé à Martin S qui avait sollicité mon aide car cette demande a été une source d’enrichissement (une nouvelle découverte) et d’amusement.

L’idée de cet affichage dynamique est très simple :

  • On dispose d’un Raspberry Pi Zero V1.3 connecté à un écran et au réseau (adaptateur USB vers RJ45)
  • Il fonctionne simplement avec Raspbian Lite (hyper léger)
  • On branche le Raspberry Pi qui démarrage et se lance automatiquement en mode lecture de vidéos.
  • Les vidéos sont automatiquement en plein écran et lues en boucle.
  • Les vidéos sont stockées dans un dossier sur le Raspberry
  • Ce dossier est alimenté (vidéos déposées et/ou ôtées) par FTP dans un dossier distant.

Pour débuter, il faut procéder à l’installation de Raspbian Lite.
Je ne détaille pas l’installation ici, mais préfère le noter : n’oubliez surtout pas de lancer sudo raspi-config pour changer divers paramètres dont le mot de passe par défaut !!! (il faut aussi passer le clavier en “Fr”, activer le ssh, … mais vous pouvez voir le tuto Installation de Raspbian Buster Lite pour plus de détails).
A noter que dans le cas d’un Raspberry Zero V1.3 (pas de wifi), je connecte un clavier à mon adaptateur micro-USB vers USB pour cela.
Mais, ensuite, je tape sudo reboot et remplace le clavier par l’adaptateur USB vers RJ45 branché sur le réseau.

Le Raspberry Pi est donc “seul” dans son coin sans périphérique d’entrée.
Mais … Pas grave … On a le SSH 🙂

On se connecte donc en SSH au Raspberry.
(j’ai fixé une IP fixe à mon adaptateur en partant de son adresse MAC ; je sais que c’est 192.168.0.25 = plus facile 😉 … )

Ensuite, on lance un petit principe de mise à jour :
sudo apt update && sudo apt upgrade

Après quoi, il faut installer un serveur FTP :
sudo apt install proftpd

Bien sûr, il faut créer le dossier pour les vidéos :
mkdir /home/pi/videos

Et n’oubliez pas que Raspbian Lite est une version “nue” donc, il faut penser à installer un lecteur vidéo :
sudo apt install omxplayer

Il reste bien-sûr à écrire le script de lecture :
nano /home/pi/script-affichage-dynamique.sh

Et on y insère

#!/bin/bash

# Suppression du curseur de la souris
setterm -cursor off

# Chemin du dossier des vidéos
VIDEOPATH="/home/pi/videos"

# Lecteur vidéo à utiliser
SERVICE="omxplayer"

# Boucle while du programme
while true; do
        if ps ax | grep -v grep | grep $SERVICE > /dev/null
        then
        sleep 100; 
else
        for entry in $VIDEOPATH/*
        do
                clear
                omxplayer -b $entry > /dev/null
        done
fi
done

(pour enregistrer, il faut faire “ctrl”+”x” puis “o” (ou “y”) puis valider)

Pour rendre le Raspberry Pi totalement autonome, il faut lancer ce script dès le démarrage. Il suffit d’éditer le rc.local avec :
sudo nano /etc/rc.local

Et on ajoute la ligne sudo bash /home/pi/script-affichage-dynamique.sh juste avant la ligne # Print the IP address

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo bash /home/pi/script-affichage-dynamique.sh

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

(pour enregistrer, il faut faire “ctrl”+”x” puis “o” (ou “y”) puis valider)

Vous êtes prêts ?

On lance un petit redémarrage avec sudo reboot juste pour voir.

Bon OK, on ne voit rien du coup. Juste un écran tout noir puisqu’il n’y a pas de vidéo 😀

Il suffit de lancer un client FTP (j’utilise Cyberduck (sur Mac) et FileZilla (sur Linux) en tapant “pi@192.168.0.25” et de naviguer jusqu’au dossier “videos” (ou en tapant “pi@192.168.0.25/home/pi/videos”)

La dernière étape sera simpliste : glisser les vidéos dans ce dossier (mais attention, pas d’espace dans les noms !).

Faites l’essai : glissez 2 vidéos et regardez. La lecture commence.

Et si vous rajoutez 2 autres vidéos, ça les prend en compte en direct.

Et si vous en retirez 1 pour en rajoutez 3 autres, vous aurez une lecture de 6 vidéos en boucle (rangées dans l’ordre alphabétique).

Vous voulez rire ?

Je viens de vérifier mon tutoriel en le suivant et ça fonctionne ! (ouf)

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide.

11 commentaires à propos de “Affichage dynamique avec un Raspberry”

  1. Bonjour
    Merci pour ce tuto, cependant j’ai 2 problèmes je n’ai pas d’écran noir et je vois le bureau entre chaque video et mon écran est au format 9/16 mais les videos se lancent en format 16/9 à l’horizontal sur l’écran.
    Auriez vous une idée pour résoudre les problèmes

    Merci d’avance de votre aide.

    • Salut Nanou,

      C’est parce que tu utilises un Système d’Exploitation en mode graphique qui tu as un retour visuel du bureau
      Si tu utilises un Système d’Exploitation en mode console (comme RaspiOS lite) et que tu lance les vidéos avec OMXplayer, tu devrais être en plein écran avec écran noir entre les vidéos.

      Par contre, je n’ai jamais testé en écran basculé ; va falloir que je m’y colle 😀

      ++

      • Bonjour Alban
        J’ai résolu mon problème d’écran noir entre chaque vidéo cependant j’ai un autre problème je n’arrive pas à interrompre la boucle vidéo même en utilisant les différents raccourcis clavier (ctrl+c par exemple).
        Est-il possible de rajouter une ligne dans le script pour définir une touche qui stopperait le script (un break).

        Merci de votre aide

        • Salut Nanou,

          Désolé de t’avoir fait attendre ; j’ai été très pris par le travail + mes activité bénévoles + ma reconversion …

          Si tu utilises une version graphique, je te propose une solution que je mets en œuvre dans mon tutoriel sur ma borne à Selphies ultime de la mort qui tue 😉

          En 2 mots :
          Tu édites le fichier autostart et tu lui demandes de lancer lxterminal … qui … lancera ton script.

          Ainsi, tu pourras reprendre la main en tuant le processus « lxterminal » avec le raccourcis clavier “ctrl+c” ce qui provoquera l’arrêt de ton script.
          Pas bête ce Alban 🙂

          Bref,
          Tu édites le fichier autostart avec sudo nano /etc/xdg/lxsession/LXDE-pi/autostart et tu ajoutes en bas de page
          lxterminal –command=”bash /home/pi/script-affichage-dynamique.sh”

          @+

  2. Bonjour Alban, comment vas-tu ? 🙂

    Avec la fin de confinement, je vais enfin pouvoir mettre en place cette solution dans mon entreprise.

    Je me demandais s’il était en plus possible d’afficher la date/heure dans un coin par superposition ? Par exemple, est-ce que le module RTC que tu as proposé d’installer dans un de tes autres tutos permettrait ce genre d’affichage complémentaire ?

    Bonne journée à toi

    • Hello,

      Quel confinement ??? !!! 😉 Perso, j’ai bossé sans arrêt, voire même plus. 😮
      Sur la cabine photos que je réalise actuellement malgré le peu de temps dispo, j’affiche en effet la date et l’heure (et d’autres choses) via python.
      Le module RTC fait parfois des caprices mais permet de garder date et heure puisque cette cabine a pour vacation à être hors réseau.
      (maintenant si le Rpi est sur le réseau, pas de souci de date/heure)

      @+

      • Hahaha, j’imagine bien 🙂

        D’accord, donc c’est faisable, et puisqu’elle est branchée sur le réseau, je n’aurai pas besoin du module RTC alors.

        Je regarderai tes scripts pour voir comment tu fais ça, et surtout comprendre comment tu fais ça 🙂

        Bonne journée, à bientôt.

  3. Rétroliens : Installation de Raspbian Buster Lite – TREVILLY.COM

Laisser un commentaire

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

*