Photomaton avec prévisualisation (sous Raspberry Pi)

Photomaton fabriqué par Guillaume pour son mariage – Félicitations au bricoleur – Félicitations aux jeunes mariés !!!

Article publié le 04/07/2019 ; Bon Anniversaire Geneviève C 😉

Bon, comme certains le savent déjà, je me suis amusé à retravailler des codes pour apprendre et pour aider autrui.

Il s’en est suivi la rédaction de 2 tutoriels.

  • Le premier, s’appelant simplement Photomaton automatique à base de Raspberry Pi, correspond à la prise d’une photo stockée dans un dossier (emplacement configurable). La photo est prise après un décompte permettant de prendre place (mais sans prévisualisation) puis un léger délai où on se voit avant la photo.
  • Le second, portant le titre Photomaton à base de Raspberry Pi – Choix 1 ou 4 ou 8 photos et impression directe, présente des fonctions différentes. Outre la possibilité de choisir soit 1 soit 4 soit 8 photos (concaténées en 1 seul document), cette version permet l’impression et, surtout, dispose d’une prévisualisation du flux vidéo durant le décompte (plus pratique pour bien se placer).

J’avoue que ces photomatons ne me sont d’aucune utilité si ce n’est l’apprentissage et l’amusement (oui à 44 ans on reste juste un enfant de 11 ans … 4 fois plus enclin à jouer 🙂 ; non ?!?).

Cependant, d’autres les utilisent et m’écrivent par le biais des commentaires et/ou par courriel + par le biais d’un forum.

Et je prends en compte les remarques, voire les demandes … parfois, on pourrait presque parler de “commandes” (défaut de ma part que de vouloir réaliser les choses).

La genèse de cet article est d’une simplicité toute enfantine. Devinez quoi/comment ? Et oui, c’est une demande (en fait, 2 demandes quasi simultanées) !

Et la demande est simple en théorie : La simplicité du Photomaton de base + la prévisualisation du Photomaton plus évolué (+ l’impression pour l’une des personnes) .

Et comme vous vous en doutez : j’ai fait 🙂
Voici le détail de ma “création”.
Lorsque le photomaton est lancé :

  • Vous avec une image de fond (personnalisable) avec une fenêtre de prévisualisation transparente (mais visible) avec l’incrustation “Appuyez sur le bouton rouge”
  • Une fois le bouton pressé, vous avez un affichage de l’aperçu de la caméra (en mode inversé ; pas comme dans un miroir) avec décompte (5 secondes, mais modifiable)
  • On vous demande de sourire et la photo est prise et on vous remercie (oui, j’ai du savoir être 😉 tout de même)
  • La photo prise est affichée 3 secondes (histoire de se dire “Yep ; trop la classe” ou “Heu … On va la refaire plutôt” ; à vous de voir !)
  • Impression de la photo (ou pas ; c’est vous qui voyez ; il suffit de (dé)commenter la ligne selon le cas)
  • Retour à l’écran d’accueil.

Par contre, attention, il faut que le Raspberry Pi soit connecté au réseau pour être à l’heure car je nomme les photos avec la date et l’heure (c’est le défaut du Rpi).

Bon, soyons honnête, encore une fois avec ce site, nulle solution ne provient du génie créatif de l’auteur (oui, je parle de moi à la 3ème personne).
Tout a été possible par notre capacité (oui, je parle de moi à la 1ère personne du pluriel) dite de débrouillardise : la faculté du bidouilleur à s’adapter et donc à adapter.
Est-ce une honte ? Je ne crois pas.
Tout le monde n’a pas le génie de De Vinci.
Mais je crois aussi qu’un certain nombre de “dirigeants” prenant les “gens de base” pour des nazes n’ont même pas cette capacité d’adaptation 😉

L’installation est simple :

  1. Téléchargement de Raspbian Buster sur le site officiel
  2. Téléchargement de Etcher pour écrire l’image de Raspbian sur la carte SD (ou la clef USB)
  3. Réalisation de l’installation de Raspbian Buster en suivant cet excellent tutoriel ;-).
    (activer bien le ssh pour prendre la main si besoin)
  4. Téléchargement de l’archive du script appelée Photomaton_Prev.zip
  5. Dézippage dans /home/pi (ou ailleurs, mais plus simple) pour obtenir /home/pi/Photomaton_Prev
  6. Création du dossier “Photos_du_Photomaton” sur le bureau avec
    mkdir /home/pi/Desktop/Photos_du_Photomaton
  7. Installation de tout le nécessaire avec
    sudo apt-get install cups cups-bsd python3-cups python3-picamera python3-rpi.gpio -y
  8. Autorisation d’administrer CUPS avec “pi” :
    sudo usermod -a -G lpadmin pi
  9. Redémarrage de CUPS :
    sudo /etc/init.d/cups restart
  10. Lancement de CUPS pour installer l’imprimante en lançant http://localhost:631/
    (Lecture du tutoriel d’installation d’une imprimante sur le Raspberry Pi afin de terminer l’installation si vous ne savez pas comment faire)
  11. modifier la ligne :
    os.system('lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
    afin de transformer -PSamsung_Samsung_CLX-3300_Series en -PVotre_Imprimante
    et -o media=A4 -o scaling=25 en ce que vous voulez (là, j’imprime en 25% sur du A4 pour mes tests ; par économie et écologie)
  12. Test de votre imprimante avec raspistill -o test.jpg puis lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/test.jpg" (une image assez petite doit sortir)
  13. Installation du bouton poussoir sur le GPIO
    (Attention au choix des ports ; référez-vous au site https://fr.pinout.xyz/ ; j’ai pris BCM24 (GPIO18) et la masse qui est à côté).
  14. Puis lancement du Photomaton afin de tester :
    python3 /home/pi/Photomaton_Prev/Photomaton_Prev.py
  15. Joie ; Bonheur ; Zenitude 🙂
  16. On peut évidemment lire mon tutoriel pour arrêter ou redémarrer le Raspberry Pi avec des boutons poussoirs afin d’améliorer l’expérience en l’absence d’un autre PC pour éteindre le Rpi.

Si tout se passe bien (faites plusieurs photos pour voir et vérifier que les photos sont bien enregistrées), on peut passer en affichage “écran complet”.
Attention, pour sortir du script, vous devrez alors vous connecter en ssh avec ssh pi@votre-ip puis taper votre mot de passe puis lancer la commande pkill lxterminal

Toujours partant pour le plein écran ?
Pour ce faire, transformez
pygame.init()
#screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
screen = pygame.display.set_mode((1920,1080),RESIZABLE)
width, height = screen.get_size()

en
pygame.init()
screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
#screen = pygame.display.set_mode((1920,1080),RESIZABLE)
width, height = screen.get_size()

Relancez le script pour vérifier.
C’est bon ? OK, alors stoppez le script avec la commande pkill lxterminal via SSH.

Donc, maintenant que tout roule, on peut automatiser le photomaton en lançant le script dès le démarrage du Raspberry Pi.
Pour cela, vous modifiez l’autostart avec : sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Et vous ajoutez python3 /home/pi/Photomaton_Prev/Photomaton_Prev.py à la dernière ligne (validez avec “Ctrl”+”c” puis “o” puis “Entrée”).

Au démarrage, vous aurez donc le photomaton en plein écran de manière automatique.

A noter que si vous ne voulez pas l’impression, il suffit de transformer les lignes
os.system('lpr -h -PVotre_Imprimante blablabla pour les autres options "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
time.sleep(15)

en
### os.system('lpr -h -PVotre_Imprimante blablabla pour les autres options "/home/pi/Desktop/Photos_du_Photomaton/'+fileName+'"')
### time.sleep(15)

ce qui aura pour effet de ne pas appliquer cette partie du script donc de ne pas imprimer

Et voilà. J’espère, encore une fois, avoir été utile.

Comme d’habitude, ce script est gratuit, mais merci de respecter vos sources si vous le diffusez/adaptez.
Et rien ne vous empêche de me faire un petit don de soutien de 1 ou 2 euros 😉

Je précise que cet article a été testé sur un Rpi3 avant rédaction puis écrit tout en étant installé (en même temps pour vérifier) sur un Rpi3B+.

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. 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.

2 commentaires à propos de “Photomaton avec prévisualisation (sous Raspberry Pi)”

Laisser un commentaire

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

*