Photomaton* automatique à base de Raspberry Pi

Photobooth (boîte en carton) branché à la TV
Photomaton minimaliste pour le moment, mais parfaitement utilisable (boîte faite en carton)

Page mise à jour le : 06 mai 2021

* : Attention, Le terme Photomaton est un nom générique mais c’est aussi une marque ; il faudrait dire « Cabine Photographique »

Nouvelle mise à jour de l’article le 15/04/2019 avec mise à jour du script + simplification de l’article par mise en téléchargement d’une archive avec le script et les fichiers complémentaires.
Le script a été revu et corrigé avec le programme « Thonny Python IDE » et ne donne aucune erreur avec son exécution en python3 sur Raspbian Stretch (mais uniquement les versions avec bureau graphique ; pas avec la version Lite).

Résumé :
Article en 2 parties
1 – Tutoriel pour réaliser en quelques minutes un photomaton automatique à l’aide d’un Raspberry Pi et d’un bouton poussoir.
2 – Tutoriel pour ajouter un bouton poussoir de redémarrage (reboot) et un bouton poussoir d’extinction (shutdown).

Bonjour,

Cette fois, ce n’est pas pour aider quelqu’un d’un forum que j’ai réalisé ce « montage » … mais … suite à une question d’un forumeur en rapport avec le sujet.
Oui, ça reste proche ; c’est à cause des autres 🙂

Ajout du 11/04/2019 : Merci à Loïc et Stéphane pour leurs commentaires ; j’ai modifié l’article pour qu’il soit plus facile à suivre/comprendre.
Et bon Anniversaire à
Isabelle D en même temps 😀

Je n’avais jamais essayé de réaliser un « photomaton »* (trop souvent appelé Photobooth à cause du terme Anglais) alors qu’on trouve légion de questions/sites/tutos sur le sujet.
Vous vous en doutez, j’y ai souvent pensé ces dernières années.
Cependant, je ne m’étais jamais aventuré dans l’histoire car j’avais peur de ne pas y arriver et, surtout, je ne voulais pas acheter de matériel (oui, c’est un aspect récurrent de ma personnalité 😉 ; j’avoue).

Mais … en fait … je n’ai pas besoin d’acheter puisque un simple bouton fera l’affaire (« Commutateur momentané à bouton-poussoir » dans le jargon je crois).
Ben oui ! Il m’en reste 4 de l’époque de mon bartop maison ; ils sont dans une caisse au sein même de LA caisse « informatique » du garage truc appelé garage faisant office de débarras.
Content Alban 🙂

Et, je vous le dis tout de suite : Réaliser un Photomaton* = c’est HYPER facile et rapide !

A la fin de cet article, vous aurez donc un photomaton* (ou Photobooth pour les Anglophone ou un PiBooth pour les « branchés » ou une Cabine Photographique pour les puristes).
C’est à dire un Raspberry Pi pouvant prendre une photo par simple appui sur un bouton.
Et cela va vous prendre moins de 5 minutes si Raspbian est déjà installé.

Et, après, en bonus, j’ai ajouté un cadeau 🙂

En effet, après un petit tour du Web, j’ai voulu corser le tout.
Oui, ça sera mon premier script en python.
Oui, je veux modifier ce script pour y mettre ma patte.
Mais, en plus, je veux ajouter un truc : la gestion du photomaton sans aucune interface clavier/souris.
En bref, pouvoir arrêter le Raspberry Pi en appuyant juste sur un bouton au cas où il serait dans un meuble en mode Photomaton.

Actuellement, je vous écris depuis le Raspberry Pi3B+ qui sert de Photomaton/Photobooth (j’ai coupé le script et branché clavier/souris).
Cela pour prouver que ce Raspberry Pi peut encore être utilisable comme PC.

C’est mon Rpi3B+ avec Raspbian Stretch avec Bureau graphique (mais pas la version « full »).
Mon image est celle du 13/11/2018 réinstallée fraîchement ce matin pour vérifier que les tutos fonctionnaient bien.
J’ai simplement configuré le Rpi comme dans cet article : Installation de Raspbian Stretch.

Ajout du 13/04/2019 : Tuto testé sur une installation fraîche de Raspbian Stretch Release 2019-04-08 = tout est fonctionnel !

1 – Tutoriel pour le Photomaton

Finalement, la mise en place du « photobooth » est très simple et tient en 4 étapes :

  1. Vous installez Raspbian (tuto détaillé en images).
  2. Évidemment, vous connectez le module caméra (ou RaspiCam) au port CSI (avant de commencer, testez-le avec raspistill -o test.jpg)
  3. Vous activez ensuite la Caméra et le SSH (et VNC si besoin) et en allant dans l’utilitaire de configuration nommé « Configuration du Raspberry Pi » (Menu Framboise –> Préférences).
  4. Vous téléchargez le script photomaton.py écrit en python (je vous détaille cela dans les lignes qui suivent)

Mon script est énormément basé sur celui que nous trouvons tous sur le Net à un moment ou un autre et qui s’appelle pibooth.py (lien direct par respect, mais ne téléchargez pas le fichier, au lancement du script, il affiche un écran noir qui peut faire peur).

J’ai modifié ce script, mais je n’ai rien inventé. D’autant que je découvre le python !
L’inspiration est très très (très très) forte. Mes adaptations apportées sont :

  • Modification des GPIO utilisés (le BCM24 soit la PIN18 + la masse en PIN20)
  • Ajout d’une image de fond + un texte d’accueil
  • Ajout d’un effet sonore à l’écran d’accueil
  • Ajout d’un délai de 5 secondes avant photo (le temps de se mettre en place)
  • Ajout d’un temporisateur pour que la photo prise s’affiche 5 secondes
  • Ajout d’un retour à l’écran d’accueil.

Bref, rien de révolutionnaire, mais je suis content puisque je débute totalement en python et qu’il est valide python3
Bon, comme je suis fier et partageur, voici mon script.

Pour simplifier les choses, tout sera dans un dossier « Photomaton » ; comme ça, on travaillera au propre.

–> Télécharger le dossier « Photomaton » contenant mon script python nommé photomaton.py + l’image d’accueil + le son directement ici : script python pour photomaton .

–> C’est un zip avec les 3 fichiers : il faudra le dézipper pour obtenir un dossier « Photomaton » avec les fichiers nommés « accueil.png » + « photomaton.py » + « son.wav ».

–> Vous glisserez ensuite ce dossier dans « /home/pi/ »
(on peut extraire l’archive directement vers un dossier cible en faisant clic droit puis « extraire vers » et spécifier /home/pi/).

–> Ne testez pas le script de suite ; restez patient 😉
En effet, si vous lancez le script maintenant, vous aurez bien le photomaton qui se lancera … mais … vous ne pourrez rien faire (clavier inactif).
(si le script a été lancé, connectez-vous au Rpi via SSH et lancer un sudo reboot pour redémarrer)

image avec dessin d'un appareil photo et texte invitant à s'installer et appuyer sur le bouton
–> Image d’accueil personnelle pour mon photomaton (à la dimension de mon écran)

Un peu de blabla :
Mon image est simplement une insertion d’une image Libre de Droit sur un fond noir + incrustation d’un texte en blanc.
L’icône vient de pixabay.com.
Vous pouvez utiliser/modifier « mon » image ; d’ailleurs, elle est intégrée dans le dossier mis en téléchargement. Elle ne pèse que 46 ko (image au format 1080x1920px).

Le son de sifflet vient de https://lasonotheque.org et le fichier est « Sifflet en plastique 4« . Inutile de le télécharger ; il est intégré dans le dossier.

Rappel : si vous lancez le script sans avoir installé un bouton, vous lancerez le photomaton en plein écran sans possibilité de reprendre la main (clavier inactif).
En effet, une fois le script lancé, il faut appuyer une fois sur le bouton poussoir pour lancer la procédure de prise de photo.
Et, pour fermer le script, il faut appuyer « durablement » sur le bouton jusqu’à la fermeture du script (sur mon script, c’est 20 secondes sans relâcher le bouton si on repart de l’écran d’accueil).

Donc avant de tester le script, on va aborder le branchement du bouton !!!

Photo d'un bouton poussoir
–> Un joli bouton poussoir (et pas un point) noir !

Comme je vous le disais, pour le bouton, j’ai opté pour un simple bouton d’arcade (sur l’image, c’est le bouton noir ; cliquez pour zoomer).
La connexion est réalisée à l’aide du câblage fourni avec.

On connecte donc le câble au bouton puis aux ports GPIO.
On lance le script en essai avec cette commande dans le Terminal :  python3 /home/pi/Photomaton/photomaton.py et ça doit lancer un écran avec « Installez-vous et appuyez sur le bouton pour prendre une photo » et un « joli » son de sifflet.
C’est bon ?
Alors, appuyez 1 fois sur le bouton et … souriez !!! 🙂

Ensuite, appuyez à nouveau mais sans relâcher durant 20 secondes.
Ça va prendre la seconde photo puis l’afficher puis quitter le script.

A noter que j’ai réinstallé au moins 8 fois Raspbian Stretch dans les versions du 13/11/2018 et du 08/04/2019 ; je n’ai jamais eu le moindre souci … sauf avec la version « Lite ».

Comme tout s’est bien passé, on peut automatiser la chose en faisant en sorte que le script se lance dès le démarrage du Raspberry Pi.
Il suffit de taper : sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Et on ajoute python3 /home/pi/Photomaton/photomaton.py à la dernière ligne (et on valide avec les habituels « Ctrl »+ »c » puis « o » puis « Entrée »).

Ça donnera ceci :

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
point-rpi
python3 /home/pi/Photomaton/photomaton.py

A ce stade, vous redémarrez votre Rpi et vous devez avoir un Photomaton automatique car le script sera lancé au chargement de votre interface graphique.

C’est OK chez vous aussi ?

Bon, je vais faire un tour pour trouver des chaussures pour le N°4 et je reviens pour la partie :
Ajout d’un bouton de redémarrage + un bouton d’extinction.
A tout …

TaDa ; me revoilà.

Bon, on avait trouvé des Vans à 25 Euros (C’est les Soldes) … mais avec 1 pied en 35 et l’autre en 36.
Ho, les nazes !
Évidemment, je n’ai pas pris = il était déçu !!!
Quoi ?
Ha oui ; l’automatisation !
(Pffff … Comment ils s’en fichent de ma vie)

2 – Tutoriel pour piloter le Raspberry Pi avec 2 boutons poussoirs

Raspberry Pi + RaspiCam + les 3 boutons poussoirs
–> A l’état prototype, voici le photomaton et ses boutons de pilotage. C’est fonctionnel, mais « nu » pour le moment.

Alors, on termine en rendant le photomaton totalement automatique en chargeant un script avant même la séquence graphique (comme ça, ça fonctionne aussi en mode console).

Ce script sert à éteindre et/ou rallumer le Raspberry avec de simples boutons.

On édite le fichier rc.local avec sudo nano /etc/rc.local
On y insère sudo python3 /home/pi/bouton-extinction.py& juste avant la ligne # Print the IP address
Le fichier sera donc :

#!/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 python3 /home/pi/bouton-extinction.py&
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

Comme d’habitude, « Ctrl »+ »x » puis « o » puis « Entrée ».

Ensuite, création du script avec sudo nano /home/pi/bouton-extinction.py.

Vous pouvez faire un copier/coller de ce code dans Text Editor :

#!/usr/bin/python3

#on importe les modules nécessaires
import time
import os
import RPi.GPIO as GPIO

#on met RPi.GPIO en mode notation BCM (numéro des pins ; ne vous trompez pas ; voir https://fr.pinout.xyz)
GPIO.setmode(GPIO.BCM)

#on initialise le GPIO 13 en écoute (broche physique 33 mais BCM pin 13)
GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#on initialise le GPIO 26 en écoute (broche physique 37 mais BCM pin 26)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)


#on définit la fonction appelée par la pression du bouton
def reboot(channel):
     #on affiche un message de confirmation (visible si écran connecté)
     print("Appui détecté sur le GPIO 13 = redémarrage demandée")
     #on reinitialise les GPIO
     GPIO.cleanup()
     #on lance la commande d'extinction
     os.system('sudo reboot')

#on définit la fonction appelée par la pression du bouton
def extinction(channel):
     #on affiche un message de confirmation (visible si écran connecté)
     print("Appui détecté sur le GPIO 26 = extinction demandée")
     #on reinitialise les GPIO
     GPIO.cleanup()
     #on lance la commande d'extinction
     os.system('sudo poweroff')


#on met les boutons en écoute
GPIO.add_event_detect(13, GPIO.FALLING, callback=reboot)
GPIO.add_event_detect(26, GPIO.FALLING, callback=extinction)

#on lance une boucle infinie, pour garder le script actif
while 1:
     #Avec une légère pause entre chaque boucle dans le but de réduire la charge CPU
     time.sleep(0.02)

#on réinitialise les ports GPIO en sortie de script
GPIO.cleanup()

On a donc un double script avec un « reboot » sur un bouton et un « shutdown » sur l’autre.

J’ai choisi mes GPIO pour les 2 scripts selon un protocole scientifique vérifié et indispensable :
Je voulais pouvoir passer les fils à travers le boitier mais pouvoir refermer le boitier alors que la partie connectable au GPIO est grosse et en un seul module ce qui limite les possibilités. (voir image en fin d’article)
Bref, il fallait que le GPIO utile et la masse soit côte-à-côte dans les 3 cas, mais pas les uns à côté des autres et pas sur la zone des « pattes » (les clips) du couvercle.
Donc mes choix de GPIO ne sont que liés qu’à mon environnement ; libre à vous de faire autrement selon vos câbles et votre boîtier.

Allez, vous tentez un redémarrage ?

Vous avez maintenant un Raspberry Pi qui est devenu un photomaton automatique (photobooth en Anglais) dès le démarrage.
Avec un bouton pour réaliser un cliché.
Ce cliché sera enregistré dans un dossier sur le bureau (ce chemin peut se modifier)
Après affichage de 5 secondes de la photo, on a un retour à l’écran d’accueil.
Pour que cela fonctionne sans rien, le dispositif dispose de 2 autres boutons : « Redémarrer » et « Éteindre ».

Maintenant, à vous de réaliser la caisse/boîte/cabine que vous voulez autour de ce projet.

Pour le moment, le mien ressemble à ça 😀
(voir la galerie en fin d’article)

Si vous en faites un sympa/drôle/bizarre/décalé/original/traditionnel/… vous pouvez m’envoyer des photos pour publication (les images seront alors sous Licence Libre CC BY-SA 3.0 FR comme tout mon site).

Édit du 09/01/2019 au soir :
Pour être bien sûr que tout fonctionne parfaitement, je viens d’installer Raspbian Stretch with Desktop sur une carte SD Sandisk Ultra de 16 Go achetée ce jour à 8,99 Euros à Leclerc (belle promo).
J’ai simplement appliqué les 2 parties de cet article et je confirme que tout fonctionne parfaitement !

Édit du 13/04/2019 au soir :
Je viens de refaire pareil sur Raspbian Stretch Release 2019-04-08 et idem ; tout est OK (sauf avec la version Lite).

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. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS (16,57/20 ;-) ), j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". (Bac+3 obtenu avec 16,40/20) Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

108 commentaires à propos de “Photomaton* automatique à base de Raspberry Pi”

  1. Bonjour,
    tout d’abord un grand merci à vous pour le travail fourni et les explications de la mise en œuvre du projet.
    J’avais comme d’autre un écran noir au lancement mais après des recherches il a bien fallu se rendre compte que l’erreur venait de moi … 🙂
    Le script est bien fait et il est facile de modifier des petite choses comme le texte, mais je suis bien incapable d’en ajouter … et c’est bien là mon problème maintenant. 🙂
    Je voudrais avoir la meilleure résolution possible avec ma caméra c’est un module V2 de 8 MPixel qui annonce 3280 x 2464 pixels, il est possible de modifier cela ???
    Si possible je voudrais aussi avoir un décompte (5, 4, 3 ….) à côté de l’image avant la prise de vue et aussi avoir sur les photos un filtre, une image (en PNG) qui apparaitrait sur chaque photo.
    Ça fait beaucoup je sais …. Si vous trouvez le temps de me répondre …
    Dans tous les cas encore merci pour le tuto.

    • Salut Duael,

      Tu devrais regarder du côté de mon script « Photobooth ultime de la mort qui tue » pour avoir un décompte sur l’image.

      Pour les dimensions d’image, ça a été mon plus gros problème sur mes différents scripts !
      Mais l’article Borne Photos autonome devrait te le permettre (regarde le commentaire d’aujourd’hui justement).

      Sinon, je suis en déplacement pour le travail dans le cadre de mon alternance donc je n’ai rien sous le coude pour tester et je n’ai que très peu de temps.
      Mais je pense que ce script récupère les dimensions de l’écran.
      Donc tu dois rester sur des dimensions qui sont des multiples de ta résolution.

      ++

      • Merci pour la réponse, un grand merci même !!!
        j’ai suivi le lien pour le « Photobooth de la mort qui tue » et franchement ça TUE !!!
        Il y a absolument tout ce que l’on peut avoir besoin en terme de fonctionnalité.
        Après avoir formaté la SD j’ai recommencé le tuto « de la mort qui tue » et là, la loooooose, je ne m’en sort pas avec l’étape 8 (qui est annoncée comme simple …).
        J’ai laissé un petit message… je vais peut être réussir à faire quelque chose avant le mariage ….

        Encore merci pour le temps passé à faire ce tuto. Bon courage pour le travail.
        Duael

  2. Bonjour et MERCI pour ces articles !

    J’ai installé ton script sur mon RPI3b+, il fonctionne.

    Par contre, les écritures dépassent de l’écran !
    Après vérification, pygame se lance bien en fullscreen et le font.render est bien appelé.

    À vrai dire je trouve beaucoup de solutions liées à la position du texte, mais pas à sa taille.

    Pour info je rencontre le même problème avec les images, sauf celle d’accueil que j’ai remplacée (je ne sais pas pourquoi ça fonctionne d’ailleurs).

    Aurais-tu déjà rencontré ce problème ?

    Merci !

    • Salut Jérémy,

      En rapide (je suis en semaine de cours donc post lors de la mini-pause) :

      TEXTE :
      Sur les lignes de texte, tu as 3 chiffres
      1 pour le décalage latéral
      1 pour le décalage horizontal
      1 pour la taille du texte

      IMAGES :
      Quelle est la taille de ton écran (en terme de résolution) ?
      Le script est prévu pour une taille spécifique donc ton souci doit venir de là.

      ++

      • Pour la partie TEXTE, oui je suis d’accord.
        En gros c’est une position sur les axes x et y, en soit ça me va.
        Peut-être que je devrais juste réduire la taille du texte, mais du coup je risque d’avoir le même problème si je change d’écran un jour…

        Celui que j’utilise est un petit écran 7 pouces de 1024 par 600, mais j’imagine que je peux modifier ça…

        • Yo,

          A titre personnel (j’ai vraiment un PhotoBooth fonctionnel), j’ai encore retravaillé ce script pour diverses améliorations/adaptations.
          Pour certaines phrases, j’ai dû baisser la taille du texte (trop bavard le gars ???). Donc, parfois, je joue plus sur la taille du texte que sur sa position.

          Sinon, je l’ai utilisé sur un écran 19 pouces ; un écran 17 pouces et même un écran de PC portable recyclé … et … les 3 ayant la même résolution = pas le moindre souci.
          Tu dois donc modifier un peu le script pour trouver les bonnes dimensions.
          Il peut y avoir un peu de travail et de prise de tête sur cette partie, mais c’est faisable.

          @+

          • Hello !

            J’ai réussi à modifié la résolution de mon écran 7 pouces, mais cela n’a aucun intérêt finalement. J’ai donc simplement modifié la ligne screen.blit(textsurface,(240,240)) en ajustant le couple de nombre sur la position souhaitée !

            Désormais, je pense qu’il suffit d’adapter la taille de la photo prise par la PiCamera dans la ligne « sudo raspistill -t 5000 -w 1200 -h 675 -o » pour que tout soit conforme ! Dommage, je vais perdre en qualité 🙁

            Merci à toi !

            • Hello,

              Désolé, mes premières réponses ont été écrites en pensant à un autre script ; honte sur moi 😀

              Ton écran fait 1024 par 600
              Donc essayons (enfin, toi surtout) des trucs simples.
              Tu peux (en dehors du script ; à la main via le terminal pour tester)
              raspistill -t 5000 -w 1024 -h 600 -o test_100.jpg
              raspistill -t 5000 -w 1536 -h 900 -o test_150.jpg
              raspistill -t 5000 -w 2048 -h 1200 -o test_200.jpg

              Étant en déplacement dans le cadre de ma reprise d’études, je n’ai rien sous la main pour tester alors redis-moi.

              ++

  3. Bonjour,
    super travail.
    ma question c’est comment on fait pour répurérer les photos quand le programme ce lance automatiquement
    car le dossier est sur le bureau ?

    • Salut,
      Tu peux regarder cet article sur le PhotoBooth de la mort et t’en inspirer pour avec un accès galerie web.
      Sinon, j’ai 2 solutions :
      Tu fais [ctrl] + [alt] + [f2] pour prendre la main en mode console afin de couper le script avec pkill lxterminal puis retourner sur le bureau avec [ctrl] + [alt] + [f7] (en local en via VNC).
      Sinon, si tu es sur le réseau, tu les récupères via une commande scp (la commande cp via ssh).

      Après, tu peux aussi facilement modifier le script pour enregistrer sur clef USB (dans /media/pi/…) et tu retires la clef après extinction.

      ++

      • quand je fait [ctrl] + [alt] + [f2] avec pkill lxterminal puis [ctrl] + [alt] + [f7] sa me fait un écran noir je vois que le pointeur de la souris

        • Re,

          Effectivement, je n’utilisais pas la technique du lancement via le terminal à cette époque 😀
          Désolé.
          Du coup,
          Tu fais [ctrl] + [alt] + [f2] puis sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
          Là, tu changes
          python3 /home/pi/Photomaton/photomaton.py
          Par
          lxterminal --command="/home/pi/Photomaton/photomaton.py"
          Tu valides les changements
          Tu fais
          chmod +x /home/pi/Photomaton/photomaton.py
          Tu fais un reboot
          Au redémarrage, tu pourras faire
          [ctrl] + [alt] + [f2] avec pkill lxterminal puis [ctrl] + [alt] + [f7] pour retomber sur ton écran.

          ++

          • un grand merci
            pour ton aide et ton tuto qui est super cool
            car c’est pour faire le photobooth pour mon mariage
            je ferais des photo une fois qu il sera fini
            un grand merci a toi

            • Yo,
              Pas de quoi !
              Quitte à passer des heures à bosser sur des trucs, autant que ça serve aux autres (oui, je ne serai jamais riche avec ce mode de pensée).
              Je te conseille quand même de regarder mon article sur le “PhotoBooth ultime de la mort qui tue” ; il est tout de même plus fun (à mon avis) 😉
              Et, je suis preneur pour les photos en effet 🙂
              ++

  4. Hello,
    Super projet bien clair pour les débutants comme moi. Mais je dois être super mauvais Mdr . Après avoir collé les fichiers dans le raspberry pi 3 et connecté mon bouton, j’obtiens une belle page noir et le bouton ne réagit pas. les broche son pourtant sur la place 18 et 20. j’ai testé un autre bouton mais je dois passé a coté de quelques chose .

    Merci pour votre aide car la je sèche

    • Salut,

      Désolé, je suis « un peu » pris cause reprise d’études et examen semaine prochaine …

      les broche son pourtant sur la place 18 et 20

      En numérotation BCM ou en mode PINS ? 😉

      Donc on parle bien de 18 et 20, mais pour PIN 18 = GPIO 24 et PIN 20 = Ground.
      Nous sommes bien d’accord ?

      Sinon, le bouton sur PIN 18 déclenche l’action de prise de photos.
      Tu as un fichier de log qui nous en apprendrait plus ?

      Ha oui –> tu as bien suivi l’article en entier ?
      Et si tu fais [ctrl] [alt] [f2] tu prends la main en mode console (pour couper le script avec pkill lxterminal)

      ++

      • Bonjour

        Merci pour ta réponse.

        Pour l instant je n en suis qu’à l’étape 1 de ton tuto.

        Le fichier python est celui du tuto.
        C est effectivement indiqué au début
        GPIO.setup ( 24……

        J’ai tester un autre python et le matériel fonctionne ( mais ne me plait pas)

        Pour cette parti il ne faut qu un bouton poussoir que en GPIO 24 soit sur les broche 18( GPIO 24 ) et 20 ( Gnd)

        Je ne peux malheureusement envoyer de photo ni le fichier via cette plate-forme

        • Hopopop !!!

          Je viens de télécharger mon script qui est en ligne et de le tester sur ma borne photos (dernier article en date de la catégorie).
          Dans le script, il faut remplacer les 24 par 18 ; je me suis loupé sur ce coup là !!!
          Je t’envoie un fichier corrigé à tester.

          ++

          • Ayant échangé par courriel avec Cedric directement, je mets mon dernier courriel envoyé hier et qui lui a permis de faire fonctionner le script.

            – Selon ta photo, le bouton a l’air d’être OK (PIN n°09 et 10 en comptant en partant du haut ; en parlant en numérotation humaine et non BCM et non GPIO 😀 )

            – Il faut télécharger le fichier zip puis faire « clic-droit » puis « extraire vers »
            et mettre « /home/pi/ »
            ça va le coller au bon endroit … car … en l’état, dans le script, ce chemin est utilisé donc si tu mets les fichiers ailleurs … 😉

            – Évidemment, avant de tester le script, on vérifie ta caméra : tu ouvres un terminal et tapes :
            raspistill -o test.jpg
            Si une image apparait, on sera déjà sûr que le module caméra fonctionne !

            – Si c’est ok, tu reprends ton terminal et tu tapes :
            python3 /home/pi/Photomaton/photomaton.py
            (je déconseille de passer via un logiciel en fait)

            Tiens-moi au courant,

            ++

  5. Bonjour super rogramme félicitations
    J’aimerai savoir si vous connaissez un script pour le flash pour un ring led adressanble neopixzl ws2812b pour le photomaton car je me marri en juin et j’aimerai un flash originale merci

  6. Bonjour alban,
    Un grand merci pour votre travail sur le photomaton. Je suis trop fan car je vais pouvoir l’utiliser pour mon mariage. Juste une question. Pourriez vous me dire comment faire pour enregistrer le nom des photos avec des numéros au lieu de date et heure. Car je n aurai pas de réseau Wifi.
    Je vous remercie par avance
    Alexandre.

    • Salut Alexandre,

      Tsss, pas de « vous » avec moi 😉

      Personnellement, j’ai réglé le souci avec un module RTC ; tu peux regarder l’article Ajout d’un module RTC DS3231 au Raspberry Pi.
      Ça permet de garder le Rpi à la bonne date et à la bonne heure même sans réseau !

      Et je te conseille de lire l’article sur le Photomaton* automatique avec galerie Web

      Sinon, il suffit de nommer les photos avec un chiffre incrémenté de 1 en 1.
      On part de la valeur « nom » initialisée en « 000000 » et « on incrémente de 1 » à chaque photo.
      Mais pour ça, faudra modifier « un peu » le script 😉

      ++

      • Merci alban pour ta réponse j avais déjà lu ton module RTC DS3231 mais j ai peur de pas avoir les compétences à ce niveau là. J ai surtout peur de faire des bêtises et que cela ne marche plus.
        Pourrais tu me dire comment je pourrais écrire dans le script l enregistrement en chiffre chaque photo.
        Je suis plus que novice en python mais je vais apprendre lol
        (Nom_image = 000000)?
        Merci à toi pour le partage et de tes connaissances

        • Hello,
          Désolé, entre le boulot, la famille nombreuse et les cours … J’ai manqué de temps.
          Je m’y suis mis aujourd’hui.
          Et j’ai trouvé.
          On initialise le nom en partant de zéro avec
          nom_image_Nombre=0

          Ensuite, dans la boucle,
          –> on incrémente de 1 à chaque tour avec
          nom_image_Nombre=nom_image_Nombre+1
          –> On force le formatage en base de 5 chiffres de type 00000 et on transforme le chiffre en chaîne de caractères pour l’utiliser en tant que nom.
          nom_image = str(« %05d »%nom_image_Nombre)

          Et voilà 🙂

          (mais attention, si tu éteins puis relances, tu repars à 0 donc tu écrases tes photos ; c’est un peu dangereux (une coupure de courant et « pouf » on perd les photos prisent durant les 3 premières heures de la réception) ; l’usage du module RTC serait mieux voire carrément « plus mieux » ou même (à mon avis) LA meilleure solution !)

  7. Bonjour et déjà milles merci pour ce tuto très bien fait et très instructif !

    J’ai déjà mis en oeuvre votre code cela fonctionne à merveille, pensez vous que cela soit possible sur votre projet initial (sans la suite avec les deux autres boutons) de rajouter un bouton pour lancer une visionneuse d’image comme feh qui fonctionne parfaitement en ligne de commande, j’ai essayé mais étant débutant en python je m’embrouille tout seul surtout dans la gestion du bouton…. J’ai tester votre projet avec plusieurs groupe d’amis et tous ont été conquis mais m’ont demandé « comment on voit les photos ? » :))

    Encore merci à vous et bonne continuations dans vos projets.

    • Salut LollE,
      On peut ajouter une fonction d’affichage de la dernière image prise (je le fais dans un autre script).
      Mais c’est juste la dernière et elle s’affiche en automatique après avoir été prise.
      Je suis peu libre en ce moment car sur un autre projet (de PhotoMaton ; j’y ai pris goût), mais je vais aller trouver des infos sur feh !
      Sinon, actuellement, j’ai un script avec un stockage des images dans un dossier qui est affichage sur serveur Web intégré au Rpi à l’aide de PhotoShow.
      Si le Rpi à le réseau, on peut voir en direct les images avec un PC (sinon, faut passer par un point d’accès wifi).
      ++

  8. hello à vous,
    Merci pour le scrypt 🙂
    Mais j’ai un petit soucis d’affichage au moment du délais de 5 secondes, l’affichage est au format 4/3 !?
    j’ai mis:
    command = « sudo raspistill -t 5000 -w 1920 -h 1080 -o « + NomPhoto + » -rot 90 -q 100
    J’ai bien une capture par contre en 1920*1080, mais l’affichage ne prend donc pas tout l’écran.
    Une idée à me proposer ?
    Merci

  9. Rétroliens : Photomaton avec prévisualisation (sous Raspberry Pi) – TREVILLY.COM

  10. Salut Salut merci pour ton tuto tout fonctionne, cependant j’ai un problème avec ta boucle while, j’ai mis plusieurs image qui défile (en gros des yeux qui regarde à droite à gauche) le problème c’est que sa revient pas au début en gros une boucle infinie avec les images qui défile, tu aurait une idée ?

    • Salut Ludo,
      Là, comme ça, à chaud, ne connaissant pas le python, je suis tenter de partir sur une image animée GIF.
      Sinon, l’idée serait de faire un affichage image1 / pause de 1 seconde / affichage de image2 / pause de 1 seconde / affichage …
      Faut que je teste ; mais là, je limite les appareils allumés car j’ai horreur de la chaleur (et encore, je ne suis pas dans le sud comme toi !).
      ++

      • OK merci j’ai essayer avec image1 /pause /image 2/pause sauf que la boucle while s’arrête à la fin et ne revient pas au début déplus si j’appuie sur le bouton il fonctionne pas je doit attendre que la boucle arrive à la fin pour appuyer.

        Jai aussi mis le programme en mode plein écran mais du coup maintenant je peut pas quitter pour revenir au menu classique

  11. Bonjour,

    je n’y connait absolument rien en python mais je suis plutôt bricoleur et j’ai décidé de me lancer dans la fabrication d’un photobooth pour mon mariage prévu le 6 juillet 2019 et c’est la que je suis tombé sur votre site avec le premier projet pour une photo à la fois.
    Cela m’a pris environ 1h pour tout installer (raspian, le script photobooth ainsi que le script pour les boutons de reboot et pour éteindre) alors que je n’avais jamais toucher a une Rpi je me suis dnc lancé dans la fabrication . Merciiiiiiiiiiiii
    J’aimerais cependant y apporter certaines modifications tel que:
    -au démarrage sur l’image d’acceuil je voudrais afficher en superposition un texte invitant à appuyer sur le bouton rouge
    -dès l’appuis pouvoir visualiser le flux de la cam avec le décompte (ce qui permet de se positionner comme il faut)
    -lors de l’affichage de la photo prise qu’elle soit inversée de gauche à droite

    Cela parait t’il faisable pour un débutant???

    Merci pour les renseignements qui me permettrai de finaliser mon projet pour dans 2 semaines …

    • Salut Guillaume,

      Mes compétences en Python sont malheureusement proches de zéro ; je ne vais donc pas pouvoir te donner entière satisfaction.
      (bon, j’ai 2-3 idées en fait, mais il va falloir que je teste des trucs avant d’en parler 😉 )

      Pour ta première question : « au démarrage sur l’image d’accueil je voudrais afficher en superposition un texte invitant à appuyer sur le bouton rouge », je pense que tu peux modifier cette partie du script

      AfficherPhoto("/home/pi/Photomaton/accueil.png")
      #AfficherTexteAccueil("Installez-vous et appuyez sur le bouton pour prendre une photo")

      Il te suffit de transformer « #AfficherTexteAccueil » en « AfficherTexteAccueil » (bref, virer le #) et de modifier le texte à ta guise (et tu mettras l’image de fond de ton choix (à la bonne dimension de ton écran perso) évidemment).
      Tu devras faire ça au début du script (avant le while True : #boucle jusqu'a interruption) + à la fin du script, juste après #on recommence en rechargeant l'écran d'accueil

      Pour afficher le flux, je n’ai pas la solution pour le moment pour ce script (d’où le second tuto un peu différent).

      Pour retourner la photo, il faut trouver la bonne commande pour un effet miroir (là, comme ça, à chaud, je n’ai pas la réponse étant inculte en python) et l’ajouter dans def AfficherPhoto(NomPhoto): # affiche NomPhoto.

      ++

      • Hello,

        Cela fonctionne parfaitement pour ce qui est de l’affichage du texte, en revanche j’ai effectué la manip avec le script miroir et ça ne marche pas, au moment ou il devrait afficher la photo effet miroir, sur le bureau Rpi.
        Pour ce qui est de la manip dans le terminal puis ajouter le script dans home/pi/photomaton c’est ok plus de message d’erreur!

        • Yo,
          Sur mon Rpi, j’ai bien eu l’effet miroir hier.
          Lors de l’appui sur le bouton, le photomaton réalise une photo puis la sauvegarde + en fait une copie miroir (effet « flop » de ImageMagick) puis affiche l’image miroir.
          Comme mon script fonctionne et que c’est celui-là que je t’ai envoyé, je ne vois qu’une piste = tu n’as pas le programme imagemagick d’installé !
          Tu peux vérifier si le programme est installé en faisant sudo apt-get install imagemagick
          Redis-moi,
          (Tu peux m’envoyer ton script par courriel, afin que je te le modifie si besoin)
          @+

          • C’est OK ca fonctionne bien , merci encore pour le script modifié et le temps passé ! Au cas ou tu trouverais comment afficher la cam des l’appuie bouton je suis preneur!

            • Hello Guillaume,
              J’ai passé quelques heures à travailler un autre script cette après-midi.
              J’ai réussi à faire un truc pas trop mal :
              A l’allumage, ça affiche une image de fond (paramétrable) puis, lors de l’appui, on a une prévisualisation avec un décompte sur l’écran puis prise de photo puis affichage de la photo réalisée puis retour à l’écran d’accueil (coupure de la prévisualisation) et impression de l’image si besoin.
              La photo prise est enregistrée dans un dossier qui est configurable.
              Pour ton usage, il me reste à réaliser une transformation miroir (effet ‘flop’ de ImageMagick).
              @+

  12. Rétroliens : Photomaton à base de Raspberry Pi – Choix 1 ou 4 photos et impression directe. – TREVILLY.COM

  13. Re, deux idées du dimanche matin pour plus tard peut-être :
    – Faire une boîte de dialogue pour choisir un nom de fichier en fonction d’une liste (et on met un joystick rétrogaming pour se balader dedans!), intéressant pour alimenter un trombinoscope de membres d’une association et mettre le bon nom…
    – faire un module pour Magic mirror https://github.com/MichMich/MagicMirror/wiki/3rd-Party-Modules, miroir connecté , sans teint, pour intégrer le photomaton dans le miroir
    Jean-Philippe

    • Re,
      J’ai un autre script (qui n’est pas de moi et pas du tout retravaillé par moi) sous le coude qui pourrait t’intéresser.
      Je te l’envoie également,
      On pourrait « mixer » les 2 pour en faire un très personnalisé (mais sans compétence en python, je ne suis pas sûr d’y arriver rapidement).
      ++

        • J’ai bossé qq heures pour que ça fonctionne (le nouveau script) car il y avait des erreurs pour l’impression.
          J’ai dû travailler le script pour insérer une commande d’impression totalement différente.
          Et mon absence de formation m’a un peu ralenti.
          Mais il est têtu et pas trop bête le Alban = il a réussi !!!
          Je le connais bien ; je lui faisais confiance = nous l’avons fait (comment ça « Je » et « Il » ; ben oui ; nous sommes 2 (voire plus) dans ma/sa tête 😉 )

          Je réinstalle Raspbian pour reprendre la procédure avant de partager.
          Tu vas l’avoir ton Photomaton de folie !

          • Et voilà, c’est fait !
            Réinstallation complète de Raspbian + de l’imprimante et du photomaton.
            C’est fonctionnel.
            Je t’envoie un courriel avec le zip et un pré tuto.
            Tu me redis si souci.
            Je n’ai plus qu’à faire le tuto et le mettre en ligne 🙂
            ++

  14. Bonjour
    Superbe boulot bravo pour ce tuto et scripts m’ont l’air très poussés avec la possibilité d’impression et autres options , on a (dans mon FabLab associatif jurassien ) l’envie de faire un photomaton et ce tuto m’intéresse au plus haut point 🙂
    Merci pour le taff

    • Bonjour Jean-Philippe,
      Merci pour le compliment.
      Je vais t’envoyer par courriel mon nouveau script en attendant d’en faire un tuto complet.
      Il faudrait néanmoins que j’efface tout de mon Rpi pour tout recommencer avant car la procédure que j’avais trouvée était un peu vieille et j’ai opéré quelques modifications (mais comme je fais ça sans prise de notes …)
      Je serais bien venu au FabLab … mais … c’est un peu loin … 😉
      @+

  15. Bonjour,

    Un tout grand merci pour ton tuto , c est top!!!
    J ai acheté une camera 8mp pour le pi. J ai néanmoins une image d assez mauvaise qualité et le photos font +-300k .

    Je pense que la résolution de la caméra est mal configurée. Sais tu comment je peux changer ça?

    Merci

    • Hello,

      Merci !
      Je suis en train d’en travailler un autre qui est plutôt pas mal 🙂
      (voir le dernier commentaire 611)
      Patience.

      Pour ta question, c’est à la ligne :
      command = « sudo raspistill -t 5000 -w 1200 -h 675 -o « + NomPhoto + » -q 100″ #prend une photo
      Où « -w 1200 -h 675 » est l’option qui donne la hauteur et la largeur
      Tu peux essayer « -w 1920 -h 1080 » pour voir.

      Tu peux aussi essayer hors du photomaton avec juste la commande
      raspistill -t 5000 -w 1200 -h 675 -o -test.jpg
      en ligne de commande et voir le résultat
      (pour info, j’ai acheté un module 8Mpx il y a qq années et je l’ai retourné car les photos étaient moins bonnes que mon pauvre module « Low Cost » qui date de mon Rpi2)

      ++

    • Merci Stéphane,
      Pour dire vrai, mon absence de formation en informatique rend la tache un peu longue parfois.
      En effet, souvent, je n’ai pas la réponse donc … je dois la chercher 😉

      • Stp je tiens vraiment que tu nous aide au niveau de l’impression…car j’arrive pas à faire en sorte que la commande d’impression que je lance reconnaisse le nom de l’image qui vient d’être prise

        • Trouvé 🙂

          Ça m’a pris 1 bonne heure, mais comme je n’y connais rien, j’ai dû chercher un peu.

          J’ai d’abord installé mon imprimante samsung (elle est sur le réseau, sur le poste depuis lequel je « travaille » actuellement en VNC et/ou SSH) en suivant mon tuto sur l’installation d’une imprimante sur Raspberry Pi
          J’ai ensuite cherché à imprimer en ligne de commande.
          J’ai donc installé cups-bsd en complément de cups avec sudo apt-get install cups-bsd
          Puis j’ai testé d’imprimer une image (ce qui fut OK)

          Ensuite, j’ai cherché comment lancer ma ligne de commande en python.
          C’est simple ; il faut faire os.system(‘ligne de commande’)

          Ensuite, j’ai voulu imprimer l’image qui est prise par le photomaton.
          Et je me suis donc dit « Non, mais ; tu n’y connais rien, mais Stéphane compte sur toi = tu vas te servir de ton intelligence. Tu dois y arriver !« .

          Comme le script dit : chemin_photo = '/home/pi/Desktop/photos/'+nom_image+'.jpeg' alors j’ai tenté lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/Desktop/photos/'+nom_image+'.jpeg"
          Et tu sais quoi ?
          Ça solutionne tes 2 soucis puisque ça permet :
          – d’imprimer LA dernière image prise
          – d’imprimer LA photo qui est dans le dossier sur le bureau (ou n’importe où puisque le chemin est complet)

          Le code utilisé est :
          os.system('lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 "/home/pi/Desktop/photos/'+nom_image+'.jpeg"')
          où « Samsung_Samsung_CLX-3300_Series » est mon imprimante et « -#1 -o media=A4 -o scaling=25 » me permet de faire des tests avec une image réduite pour ne pas bouffer mon encre 😀

          Je te donne le bout de code dépersonnalisé + avec un peu de code avant et après afin que tu saches où l’insérer.

          #on affiche la photo
          time.sleep(1)
          AfficherPhoto(chemin_photo)

          #on imprime la photo
          os.system('lpr -h -PNomDeTonImprimante "/home/pi/Desktop/photos/'+nom_image+'.jpeg"')

          #on affiche un message
          AfficherTexteTransparent("OK ; voici ce qui dans la boite ...")
          time.sleep(5) #Ajout d'un temps d'affichage afin de repartir sur l'accueil ensuite

          @+

          • Youupiiiii ça donne…
            Merci merci… J’avais déjà pensé à ça mais j’avais jamais essayé…
            Vrai que on a pas les même se mais ça fonctionne avec le lp -d ……… encore merci
            Cool ça fonctionne…
            Maintenant si on regardait comment améliorer.. hum l’écran noir est ambettant lors du décompte,es ce possible d’ouvrir la caméra à cet instant en affichant le décompte au même moment ?

            • Hello,
              En théorie, à chaud, en sortant d’un entretien de 40 minutes sans avoir lu ta question avant :
              Il suffit d’allonger le temps de prévisualisation de Raspistill et de faire afficher le décompte par dessus.
              Encore un truc sur lequel je vais devoir bosser ce soir 😉

              La piste : « sudo raspistill -t 5000 … » (où tu modifies le 5000 en 10000 pour passer de 5 à 10 secondes par exemple)
              Et lors du décompte, faudrait trouver un truc (dans « def decompte(): ») pour effacer le texte sinon, il y a superposition des inscriptions (j’avais testé à l’arrache un soir en passant)

              A très vite alors 🙂

              • en fait raspistill déjà même a un souci la photo n’est pas directement prise … la caméra s’ouvre pendant un certain temps après le message < et pendant ce temps on sais pas exactement à quel moment là photo est prise.. ce problème est résolu à partir de la bibliothèque<> mais là je sais pas comment m’y prendre….
                ce que je propose qu’on fasse si c’est possible c’est d’ouvrir la caméra dès l’appui sur le bouton poussoir à ce moment un décompte s’ce lance sur l’écran le temps pour l’utilisateur de de positionner (en voyant déjà ce que la caméra renvoie) et puis à la fin du décompte on ai sur que à cet instant là la photo sera prise…

                • Re,
                  C’est toi qui règle raspistill et son délai avec son option « -t ».
                  Personnellement, j’ai mis « -t 5000 » soit 5000 millisecondes soit 5 secondes d’où mon message disant que la photo sera prise au bout de 5 secondes après affichage de l’image.
                  Il est vrai que je n’ai pas trouvé comment imposer le décompte visuel sur l’aperçu.
                  Et l’usage de la prévisualisation provoque un conflit au lancement de raspistill ; je dois donc chercher une autre piste.

                  Sinon, j’ai trouvé un truc sur le Net. Il est vachement bien.
                  Il fait 3 photos puis concatène les 3 images avec une 4ème image prédéfinie pour en faire une grille de 4 images (3 photos et 1 image avec texte + date)
                  Ensuite, l’image finale (la grille) est imprimée.

                  Je viens de te modifier la partie python principale pour que le script puisse se lancer à la main en python3 (et je l’ai un peu francisé au passage 😉 …)
                  Ce n’est pas terminé, mais je suis limité car je n’ai pas d’écran sur le Rpi :-s
                  Actuellement, il lance la prise de 4 photos et les concatène en 1 grande image (j’ai désactivé l’impression pour le moment)

                  Je vais voir pour pousser la chose et te l’envoyer. Et si j’arrive à comprendre un peu plus le python, je vais voir si je peux modifier « mon » script pour utiliser certaines de ses techniques.
                  La source est là : https://github.com/zoroloco/boothy

                  On va y arriver !

                  Édit de 23h57 :
                  Je vais m’arrêter de jouer pour ce soir.
                  J’ai fait pas mal de petites modifications.
                  A ce stade, le Rpi démarre et le photomaton se lance en automatique.
                  On a un fond noir avec superposition de l’affichage de la caméra + un texte « Enfoncez le bouton rouge pour démarrer »
                  Il suffit donc d’appuyer sur le bouton pour lancer la procédure.
                  On a le décompte (j’ai baissé à 5 secondes) à l’écran par dessus la prévisualisation.
                  Ceci est effectué 4 fois puis on a une concaténation des 4 photos en 1 image qui est sauvegardée (et imprimée si je réactive cette fonction)
                  Bref, on touche au but ; quasi parfait.
                  Je vais tacher de faire un tuto pour ce « PhotomatonX4 »
                  ++

                  • Bonsoir,
                    Je pense que je vais refaire un autre tutoriel.
                    En effet, ce soir, j’ai travaillé un autre code python (sans avoir appris le python ; en travaillant en simple logique de base) et j’ai réussi une partie de ce que tu cherches Stéphane.
                    Ce n’est pas terminé à 100% (j’ai juste bossé de 21h à 23h45), mais c’est fonctionnel et utilisable en l’état :
                    – Le photomaton se lance avec un aperçu en direct (flux vidéo continue)
                    -Ça t’invite à appuyer sur le bouton rouge pour 4 photos ou le noir pour 1 photo.
                    – Si bouton « 4 photos », tu as le décompte à chaque photo (5 secondes) sur l’écran en te voyant à l’image (surimpression) puis les 4 images sont fusionnées/concaténées en 1 image proche du A4
                    – Si bouton « 1 photo », tu as le décompte de 5 secondes sur l’écran (en te voyant à l’image car surimpression du texte) puis la photo est prise et sauvegardée.
                    Pour le moment, j’ai désactivé le mode impression car travailler gratuitement m’invite à ne pas gâcher ni papier ni encre, mais c’est prévu dans le script 😉
                    @+

                    • Bonjour, je suis actuellement votre tutoriel et j’aimerais pouvoir afficher le décompte sur le preview de la caméra. Mais si je réutilise votre fonction AfficherTexteTransparent,() ça remplace le flux vidéo par un fond noir. Vous auriez des pistes à me donner pour régler ce problème?

                      Merci d’avance 🙂

                    • Bonjour Alec,
                      Je te propose d’essayer mon autre photomaton.
                      Il est paramétrable donc tu pourras le simplifier.
                      Je vais essayer de faire un autre photomaton un peu comme celui de cet article (pas d’impression, juste un photo et pas de retraitement de l’image) car même si je ne connais pas le python, je pense que cela va être assez facile (oui, je suis confiant et, surtout, je n’annonce pas les trucs qui risquent d’être plus compliqués à gérer 😀 …).
                      Pour ce photomaton, j’avais aussi essayé de faire afficher le décompte par dessus le « preview » et je n’avais pas réussi (bon, je n’avais pas cherché longtemps puisque je testais déjà d’autres trucs en parallèle 😉 )
                      @+

  16. Bonjour, est il possible qu’une fois l photo effectuer, et que même si elle est stocker dans un dossier, de faire en sorte d’imprimer la photo après la prise de vue via une imprimante canon selphie par exemple ?

    En gros, les gens prennent la photo en appuyant sur un bouton. Puis ensuite j’aimerais qu’une boite de dialogue saffiche pour donner le choix d’imprimer ou non (bouton vert pour imprimer et rouge pour ne pas imprimer par exemple).
    Ou plus simple, faire en sorte ou non qu’après chaque photo elle soit automatiquement imprimée.
    En gros si j’ai une imprimante j’active l’impression automatique et si j’en ai pas je la désactive.

    C’est possible ?
    Et comment faire ?
    Merci d’avance

    • Bonjour,

      C’est possible.
      Perso, je ne l’utilise pas (je n’ai fait ce photomaton que pour tester et aider), mais je connais des gens qui ont mis une Selphie CP 1300.
      Tu devrais pouvoir trouver des scripts aisément sur le Net.
      Si je peux, je regarde ça pour intégrer l’usage de l’impression à mon script.

      Si le script python dit d’enregistrer et d’imprimer, il devrait suffire de ne pas allumer l’imprimante pour que les photos ne sortent pas.
      Mais sortiront-elles plus tard ; c’est le risque.

      Il est vrai que la solution de l’invit’ de commande ferait plus pro pour ton usage.
      Je crois que je vais devoir bosser sur le sujet 😉

      A bientôt,

        • Bon,
          Comme tu peux le voir, j’ai trouvé comment lancer une impression de manière automatique.
          Je vais devoir chercher un peu plus pour t’aider.
          En effet, je viens de tenter un truc :
          Éteindre l’imprimante puis faire 2 photos avec le photomaton puis éteindre le Rpi puis rallumer l’imprimante.
          Résultat : mon imprimante n’a pas bronché (mais elle est en réseau et je n’ai pas de serveur d’impression
          MAIS … lorsque j’ai rallumé le Rpi, la dernière photo est sortie. Grrrr … !!!

          Donc, ça fonctionne puisque les photos sont prises + elles sont imprimées si imprimante active + elles ne sont pas imprimées si imprimante non active.
          Sauf que la dernière image ressortira lorsque l’imprimante sera rallumée.
          Bref, je dois retravailler le truc.

          @+

    • Bonsoir… J’ai le même problème que toi et actuellement j’y travaille toujours.. j’ai également une imprimante photo canon selphy..
      Pour imprimer il y’a deux possibilités.. soit tu passe par CUPS soit tu passe par le Terminal…
      La photo prise dans ce programme est obtenue par appel d’un script dans un programme pyton.. j’ai essayé de faire la même chose en ce qui concerne l’impression mais j’ai un problème, pour pouvoir imprimer une photo via le Terminal,la photo doit être enregistré dans le dossier home/pi de que j’ai fait en modifiant les chemins d’enregistrement mais le gros problème est au niveau du nom de l’image.. comment faire pour que à chaque passage l’imprimante puisse reconnaître le nouveau nom de la photo ??
      Svp si vous trouvez quelque chose n’hésitez pas à partager..
      Merci

    • Bonjour merci beaucoup pour tout votre tuto il est extra! Petite question savez vous comment ajouter un son type déclenchement vieux appareil photo en même temps que la prise de photo? Merci

      • Salut Bob,

        Tu trouves un son qui te convient et tu l’enregistres dans le dossier Photomaton sous le nom « clic-clac.wav » par exemple

        Puis, dans le code :
        chemin_photo = '/home/pi/Desktop/photos/'+nom_image+'.jpeg'
        PrisePhoto(chemin_photo) #Déclenchement de la prise de photo
        AfficherTexte("--> Merci ! <--")

        Tu ajoutes :
        pygame.mixer.init()
        son = pygame.mixer.Sound('/home/pi/Photomaton/clic-clac.wav')
        canal = son.play()

        Pour que ça donne :
        chemin_photo = '/home/pi/Desktop/photos/'+nom_image+'.jpeg'
        PrisePhoto(chemin_photo) #Déclenchement de la prise de photo
        pygame.mixer.init()
        son = pygame.mixer.Sound('/home/pi/Photomaton/clic-clac.wav')
        canal = son.play()
        AfficherTexte("--> Merci ! <--")

        Comme je suis en train de bosser autre chose et que je ne peux pas tester, je donne l'info avec réserve (surtout que je ne suis pas codeur).

        ++

        • Bonsoir,

          bravo pour le boulot!!! super!!! le grand merci…

          Je voudrais également avoir un son de déclenchement à la prise de la photo mais le code ne fonctionne pas j’ai fait les modifications rien… avez vous la solution ?

          J’aimerai également le décompte 5,4,3,2,1,,, avez vous les modifications ?

          • erratum! lol le script fonctionne pour le déclenchement du son a la prise de photo super! dsl erreur de frappe…

            mais je n’arrive pas a faire le décompte..

            • Salut Matt,
              J’avoue que j’ai passé des heures et des heures à faire d’autres codes/scripts pour des photomatons ces derniers mois et que je ne sais plus exactement ce que fait celui-là (c’était mon tout premier essai).
              Je vais le réinstaller sur un Rpi pour revoir le décompte et te redire.
              @+

              • Re,

                Alors Matt, je viens de prendre qq minutes pour regarder ça.
                Le décompte n’apparait pas à l’écran.
                C’est vrai que ce premier essai était « un peu basique ».
                C’est pour ça que j’ai exploré d’autres pistes ensuite.
                Je te conseille de tester un des autres scripts suivants nettement plus performants.
                Je pense que le tutoriel Photomaton avec prévisualisation (sous Raspberry Pi) te conviendra parfaitement (il suffit de virer l’option d’impression)
                @+

  17. bonjour
    merci pour le tuto , j essaie en fin de semaine
    est ce que c’est compliqué da jouter une imprimante ensuite?
    belle journee
    julien

    • Bonsoir Julien,
      J’ai une imprimante sur le Rpi (enfin, parfois puisque j’ai 5 installations de Raspbian différentes pour des tests pour moi et pour les autres 😀 …), mais je n’ai jamais testé l’impression avec mon photomaton.
      Mais je pense que tu sauras trouver (ou je serais là pour t’aider si besoin ; ça me fera faire encore un nouveau truc).
      Pour l’imprimante, cela pourra t’aider : Installer une imprimante sur Raspberry Pi
      @+

    • Bonsoir,
      Il faut modifier le chemin qui dit où les photos doivent être enregistrée.
      Ça peut donc être une clef ou un disque dur en effet.

      Là, par exemple, je viens de formater une clef en « clef ».
      Insérée dans le Rpi, elle se monte dans /media/pi/clef

      Dans le script, j’ai modifié la ligne
      #on déclenche la prise de photo
      chemin_photo = '/home/pi/Desktop/photos/'+nom_image+'.jpeg'
      PrisePhoto(chemin_photo) #Déclenchement de la prise de photo

      en
      #on déclenche la prise de photo
      chemin_photo = '/media/pi/clef/photos/'+nom_image+'.jpeg'
      PrisePhoto(chemin_photo) #Déclenchement de la prise de photo

      Et j’ai bien mes photos dans ma clef.

      J’espère que tu verras cette réponse car ton adresse de courriel n’est pas valable.

      ++

    • Re,
      En installant Raspbian Stretch with desktop + en téléchargeant mon archive + en réglant le lancement automatique + en mettant en place le script des boutons « arrêt » et « redémarrage », je confirme que le photomaton était opérationnel en 1/4 d’heure (y compris installation et configuration de Raspbian).

      Si vous voulez un Photomaton autonome sans prise de tête, je vous conseille donc cette solution.

      Mais je tenterai tout de même de voir si j’arrive à y parvenir avec une version Lite 😉

  18. Bonsoir… J’utilise rasbian Jessy lite…
    J’ai toujours le même problème…
    Je sais pas si je vais juste mal ou alors il y’a un endroit où je fais pas bien

    • Re,
      Effectivement, nous n’avons pas les mêmes versions (Jessie est sortie en avril 2015 et sa dernière mise à jour date de juin 2018 ; Stretch est sortie en août 2017).
      Il existe des différences entre Jessie et Stretch, mais je suis sûr que le problème vient de l’utilisation de la version Lite. En effet, un système Lite ne comprend que le strict minimum et mes tests ce matin n’ont pas été concluants avec Lite alors que tout fonctionne sous Stretch en version graphique (j’ai écrit et testé Stretch Lite, Stretch Desktop et Stretch full ce matin).
      Je vais tenter de trouver une solution, sans certitude de réussite toutefois, je ne suis en rien informaticien …
      Espérant pouvoir revenir vous donner la solution,
      Au plaisir,

      Une piste –> https://pillow.readthedocs.io/en/latest/installation.html

  19. bonsoir… j’ai le même problème et je pense que cela peut provenir de la bibliothèque PIL puisque au départ je ne l’avais mit(désolé déjà d’avoir pas bien lu votre code)… mais Svp comment l’installer pour pyton 3 ?? j’ai beau chercher mais il parait que installer pil pour pyton 3 est un peu bizarre…
    je pense que si j’arrive à l’installer le problème sera résolu..
    merci d’avance

    • Bonjour Stéphane,

      Je suis actuellement avec Raspbian Stretch Release 2019-04-08 (version “Raspbian Stretch with desktop and recommended software”).
      Et je n’ai pas eu à installer PIL.
      Quelle version de Raspbian utilisez-vous ?
      Vous êtes sous Raspbian Lite ?
      Que dit cat /etc/issue et cat /etc/debian_version ?

      Sinon, on peut tenter
      pip install --user Pillow
      Voir cette page de l’université d’Aix-Marseille
      Je viens de tester (il faut juste modifier le script pour mettre les bon chemins) et ça fonctionne.

      A bientôt,

      • Bonjour… J’ai réussi à afficher l’image de fond en passant par la bibliothèque pygame ainsi que l’ajout d’un flash… Mais j’ai un souci à chaque retour de boucle la photo qui vient d’être prise est jumilée à l’image de fond…. Et aussi toutes mes photos ne sont pas sauvegardées…. Ça montre bien le fichier photo mais quand j’ouvre ça m’affiche une erreur…
        Merci pour votre aide. ..

  20. bonsoir…
    le pibooth d’origine de lance sans problème… sauf que pour sortir du programme suis obligé d’arrêter de débrancher la raspberry car même quand j’appuie le bouton poussoir pour longtemps ça ne sort pas du programme….
    pour votre programme il bloque directement après le lancement sur écran noir et après impossible de sortir du programme…..
    bon demain j’essaierai de faire des modifications comme vous l’avez indiqué et je vous retournerai le résultat juste après…

    • Bonsoir Stéphane,
      J’ai réinstallé Raspbian et suivi mon tuto (le début, pas les boutons « reboot » ni « shutdown »).
      Au démarrage, j’ai bien un Raspberry Pi avec Raspbian.
      Si je lance le script avec python photomaton.py j’ai bien l’écran avec mon image d’appareil photo (ou l’écran noir avec la phrase “Installez-vous et appuyez sur le bouton pour prendre une photo” en bleu car j’ai tout refait 3 fois et je recommencerai ce soir ou cette nuit).
      Si j’appuie 1 fois sur mon bouton poussoir, ça lance le décompte et déclenche la prise de la photo pour l’afficher puis revenir à l’écran d’accueil.
      Si j’appuie sans relâcher le bouton jusqu’à la prise d’une nouvelle photo et son affichage, alors, je sors du script.
      Votre version de Raspbian est bien à jour ? (sudo apt-get update && sudo apt gate upgrade -y && sudo apt-get dist-upgrade -y).
      A noter que je gère mes script avec l’éditeur de texte ou via nano, mais pas par le programme python.
      Attention, pour éteindre le Rpi, il faut passer en SSH et lancer un sudo poweroff et ne pas débrancher du courant, ça peut griller la carte SD !
      A plus tard pour votre retour,

  21. Bonjour.
    J’ai essayé votre programme. Étant débutant sur python, j’ai 2 problèmes quand je lance le programme. J’ai un écran noir. Deuxièmement, si je lance avec sudo, j’ai un msg ‘commande invalide’.
    Merci d’avance pour votre aide,

    • Bonjour Loïc,

      Désolé pour le délai, je travaillais sur la transformation d’un « Shuttle » (un miniPC de récup’) en serveur d’auto-hébergement sous YunoHost.

      Je pense que votre écran est noir car « mon » script contient AfficherPhoto("/home/pi/Photomaton/accueil.jpg" alors que vous n’avez pas cette image sur votre Rpi.
      L’absence d’image renvoie donc un écran noir (écran vide).
      Vous devez copier mon image de fond et l’enregistrer au format .jpg (elle est en png actuellement) puis la placer dans le dossier /home/pi.

      La deuxième question est donc (pour voir si c’est plus grave) :
      L’écran est noir, mais le photomaton est-il fonctionnel lors de l’appui sur le bouton ?
      (et l’écran est-il actif en étant sous Raspbian ?)

      A bientôt,

      • Bonjour Loïc,

        Je viens de réécrire Raspbian sur ma carte SD et de tout refaire en suivant bêtement mon tutoriel afin de le revérifier.
        Le photomaton est bien fonctionnel.

        Je n’ai pas réalisé l’automatisation, mais juste refait un script (par [copier/coller] de celui du tuto) en modifiant simplement /home/pi/Photomaton/accueil.jpg en /home/pi/Photomaton/accueil.png et en téléchargeant mon image de fond mise en partage.
        (J’ai pris des tas de captures d’image et vais tenter de remettre ça en forme.)

        Pour l’instant, j’ai donc un Rapberry Pi avec Raspbian à jour et je peux lancer le photomaton en faisant sudo python /home/pi/photomaton.py.

        A noter que mon explication initiale ne tient pas : si le script n’est pas modifié et que l’image n’est pas téléchargée, le script s’arrête de lui-même car il ne trouve pas l’image.

        J’en reviens donc à une question de base = à quel moment avez-vous cet écran noir :
        – Lors du démarrage du Raspberry Pi ?
        – Lors du lancement du script ?
        – Lors de la prise de la photo ?

        Bien à vous,

        • bonsoir… svp moi même j’ai eu ce problème d’écran noir lorsque j’ai lancé le script… directement au démarrage et oopp plus rien ne fonctionnait…. bon je vais essayer avec votre image…
          j’aimerais également savoir si le fichier doit se trouver au bureau ou alors dans le lieu où il va se retrouver après l’avoir créer vos le Terminal comme vous l’avez dit…
          également j’aimerais savoir s’il y’a possibilité d’imprimer cette photo et aussi d’ajouter une bordure…
          merci bien et bon courage à vous..

          • Bonsoir Stéphane,

            Le script qui donne un écran noir est pibooth.py (dont je m’inspire plus que fortement) ou « le mien » ?
            Je pense que le script se lance en plein écran sans retour graphique (la seule solution pour reprendre la main est d’éteindre le Raspberry Pi en lançant la commande sudo reboot en SSH).
            En démarrant Raspbian (sans lancer le script python), arrivez-vous à afficher une image (et réaliser une photo) avec la commande raspistill -o test.jpg ?

            A bientôt,

            Edit de 21h41 : je viens de lancer le script d’origine (pibooth.py) et effectivement, j’ai un écran noir.
            ça n’arrive pas avec mon script car il plante du fait de la recherche de l’image de fond.

            Edit de 22h18 : je viens de modifier l’article pour dire de ne pas télécharger pibooth.py + mis mon script en téléchargement + modifier le script pour que l’absence d’image ne fasse pas planter le script (vous aurez un écran noir avec la phrase « Installez-vous et appuyez sur le bouton pour prendre une photo ») + modifié l’article pour vous obliger à installer le bouton avant de tester le script.
            Merci pour vos remarques qui m’ont permis de voir que ce qui me paraissait clair ne l’était pas forcément pour autrui.

  22. Rétroliens : Lancement automatique d’un script au démarrage – TREVILLY.COM

Laisser un commentaire

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

*

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