Photomaton à base de Raspberry Pi – Choix 1 ou 4 ou 8 photos et impression directe

Exemple avec 4 photos (en 1280×960) ; l’espacement est de 2 px

Bonjour,

A la suite de questions via les commentaires et par courriel au sujet de mon article Photomaton automatique à base de Raspberry Pi, j’ai travaillé un nouveau code. Le but était surtout de rendre service à Stéphane T, un étudiant qui se reconnaîtra.

(mise à jour le 13/06/2018 pour avoir l’option 8 photos en complément – Tutoriel retesté sur Rpi3B+ et Rpi3B avec succès)

L’idée est simple dans le principe :

  1. Allumer un Raspberry Pi connecté à un écran et une imprimante
  2. Démarrage automatique dès la mise sous tension avec lancement direct du mode Photomaton ou PhotoBooth pour parler « Anglish » (oui, j’ai mis un « A »)
  3. Avoir le choix de :
    • Appuyer sur un bouton Blanc pour prendre une photo puis la sauvegarder et l’imprimer
    • Appuyer sur un bouton Noir pour prendre 4 photos puis les sauvegarder en 1 seule image de 4 « miniatures » et imprimer l’image finale
    • Appuyer sur un bouton Rouge pour prendre 8 photos puis les sauvegarder en 1 seule image de 8 « miniatures » et imprimer l’image finale
    • (oui, les couleurs = c’est au choix et juste parce qu’il me restait des boutons utilisés pour mes bornes d’arcade)
  4. Retourner automatiquement sur l’écran de choix de 1 ou 4 ou 8 photos
  5. Voir en continue ce que renvoie la caméra même si aucune photo n’est demandée et même durant le décompte avant les clichés.
  6. Sécuriser la chose en mettant un lancement automatique avec impossibilité pour quiconque de manipuler le Raspberry Pi avec une souris ou un clavier.

N’ayant jamais appris le python (mais j’arrive un peu (la preuve) à le comprendre), je me suis énormément basé sur le travail de Kenneth Centurion dont le pseudo est zoroloco.
Il a publié son projet boothy sur GitHub ce qui permet d’accéder à tous les détails et de faire une sorte de retro-ingénierie.
Comme son travail est ancien (et en anglais) et ne répondait pas totalement à la demande, j’ai pas mal retravaillé son code pour le modifier/adapter/améliorer (selon moi, ce qui reste très subjectif).

Son code permettait de réaliser 3 photos puis de les combiner en 1 image avec les 3 miniatures + 1 logo. Cette image était ensuite imprimée. C’est clairement un photomaton orienté « mariage » ou « anniversaire » (l’image « logo » étant parfaitement logique dans le cadre de cette utilisation).
Dans mon code, j’ai désactivé le « logo » et prévu 4 photos, mais cela est modifiable aisément.

J’ai donc pas mal retravaillé le code d’origine, pour le passer en Python3 (fin 2019, le Python2 ne sera plus supporté) et pour apporter des améliorations/ajouts.
Mais l’idée de base reste SON idée. Il faut croire que je suis plus « Technicien » que « Créatif » … 😉

Pour vous rassurer :
Évidemment, ce tuto a été suivi à la lettre et appliqué sur un Rpi3B+ sur une clef USB vierge (3 fois depuis sa mise en ligne) = tout fonctionne parfaitement.
Ça m’a pris à peine 10 minutes sans compter l’installation de Raspbian. Avec Raspbian et la recherche du PPD ou du pilote de votre imprimante, je pense que vous pouvez prévoir 1h pour ce tuto complet (voire 1h30 si votre imprimante est « exotique »).
Suite à la mise à jour du 12/06/2019 pour intégrer la possibilité de 8 photos, j’ai retravaillé le script et modifié l’article en conséquence. Le tutoriel a évidemment été restesté « from scratch » avec un Rpi3B+ et un Rpi3B sans le moindre souci (il est vrai que je commence à savoir le faire les yeux fermés avec u bras attaché dans le dos 😉 à force de le faire et refaire).

 

1 – Tutoriel pour le Photomaton

Comme pour l’autre photomaton, les étapes sont assez simples.
Là, je pars du principe que vous démarrer de rien ; pour faire branché, on va dire « Réaliser un photomaton from scratch … mais en mode fainéant 😉 « .

Conseil : pour les lignes de commande, préférez faire des [copier/coller] dans le Terminal

  1. Vous connectez le module caméra (ou RaspiCam) au port CSI avant de démarrer le projet.
  2. Vous installez les boutons type « poussoir » sur les GPIO 18, 24 et 26 (+ 1 sur le GPIO 13)
  3. Vous installez Raspbian en suivant ce (superbe) tuto détaillé en images.
  4. Vous activez la Caméra et le SSH (et VNC si besoin) :
    Menu Framboise –> Préférences –> “Configuration du Raspberry Pi”.
  5. Vous testez la caméra avec : raspistill -o test.jpg
    (Vous devez obtenir une photo « test.jpg » dans le dossier « pi »)
  6. Vous installez les dépendances avec :
    sudo apt-get install cups cups-bsd python3-cups python3-picamera imagemagick python3-dev python3-rpi.gpio -y
  7. Vous installez votre imprimante en suivant mon autre tutoriel d’installation d’une imprimante sur le Raspberry Pi. (mon fichier PPD est dans le zip pour faciliter mes tests ; il faudra trouver le votre)
  8. Vous récupérez « mon » script en le téléchargeant puis en le dézippant dans le dossier « pi » (le dossier s’appellera « Photomaton_x1x4x8 »)
  9. Vous éditez le script avec Geany pour modifier les 2 lignes (dans « play » + « play2 » + « play3 ») pour mettre le nom de votre imprimante et passer en 100% (je suis en 25% pour économie lors de mes tests répétés ; mes finances ne sont pas suffisantes + principe d’écologie)
    os.system(‘lpr -h -PSamsung_Samsung_CLX-3300_Series -#1 -o media=A4 -o scaling=25 « /home/pi/Photomaton_x1x4x8/photos/’+fileName+' »‘) doit devenir
    os.system(‘lpr -h -PVotre_imprimante -#1 -o media=A4 -o scaling=100 « /home/pi/Photomaton_x1x4x8/photos/’+fileName+' »‘)
  10. Vous mettez en place le script pour éteindre le Raspberry avec 1 simple bouton.
    Vous éditez le fichier rc.local avec sudo nano /etc/rc.local
    Vous y insérez sudo python3 /home/pi/Photomaton_x1x4x8/extinction.py& juste avant la ligne # Print the IP address
    Vous validez avec “Ctrl”+”x” puis “o” puis “Entrée”.

Bon, normalement, tout est OK.

On essaye ?
Facile :
Ouvrez un Terminal et tapez la ligne python3 /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py puis validez avec « Entrée ».
Là, le photomaton se lance et vous pouvez tester.
–> Si on appuie sur le bouton Blanc « 1 photo », ça fonctionne ? Oui ? Normal !
–> Si on appuie sur le bouton Noir « 4 photos », ça fonctionne ? Oui ? Normal !
–> Si on appuie sur le bouton Rouge « 8 photos », ça fonctionne ? Oui ? Normal !
–> Si on appuie sur le bouton « Éteindre », ça fonctionne ? Non ? Normal ! C’était une blague ; faut redémarrer pour vérifier 🙂

Allez, on redémarre le Raspberry Pi

C’est bon ; c’est tout bien redémarré ?
Si vous voulez, vous pouvez essayer de relancer le script à la main pour vérifier.*
–> Si on appuie sur le bouton Blanc « 1 photo », ça fonctionne ? Yes !
–> Si on appuie sur le bouton Noir « 4 photos », ça fonctionne ? Yes !!
–> Si on appuie sur le bouton Rouge « 8 photos », ça fonctionne ? Yes !!
–> Si on appuie sur le bouton « Éteindre », ça fonctionne ? Yes !!!

Cool ! … Enfin, « normal » faudrait-il dire –> C’est juste tout à fait normal avec un prof aussi bon, sympa, beau, didactique, intelligent, (vous pouvez y aller de vos propres compliments à ma personne) … 😉

* : Astuce = vous pouvez redimensionner la fenêtre noire avec la bordure bleu pour cliquer dans le terminal et faire « ctrl »+ »c » pour tuer le script en cours et retrouver votre bureau afin de poursuivre.

Du coup, maintenant que vous êtes rassuré(e) +++, vous allez 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_x1x4x8/Photomaton_x1x4x8.py à la dernière ligne (validez avec “Ctrl”+”c” puis “o” puis “Entrée”).

Comme tout s’est bien passé auparavant, cela signifie que tout fonctionne … donc … On y va pour de vrai !!!
C’est parti ! –> Lancez un redémarrage du Raspberry Pi et patientez.

Si tout se passe bien, le Photomaton se lancera automatiquement.

Bon, et bien, si tout est OK, maintenant, on va pouvoir « verrouiller » le système en rééditant mon script pour transformer le Rpi en photomaton « automatique et sécurisé » en modifiant très légèrement le script (redimensionner fortement la fenêtre noire avec la bordure bleu pour pouvoir accéder à votre bureau).
Ouvrez le script Photomaton_x1x4x8.py (/home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py) avec Geany et changez :
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()

En effet, cela permet que l’écran passe en noir complet (la fenêtre sera en « FullScreen ») avec rien de visible (juste l’image de la caméra et les messages sur-imprimés) + aucune action possible

Pour toutes les modifications ultérieures, vous passerez donc par SSH (d’où l’activation conseillée au début de l’article).

Comme tous mes tuto, je précise que celui-ci a été travaillé et essayé plusieurs fois avant rédaction.

Évidemment, ce tuto a été suivi à la lettre et appliqué sur un Rpi3B+ sur une clef USB vierge = tout fonctionne parfaitement.

A bientôt, (je pense déjà ajouter un autre bouton pour proposer une série de 8 images, mais chut, c’est un secret –> C’est fait au 12/06/2019 😉 )

(Pour toute correction/ajout/omission/amélioration = passez par les commentaires et/ou le formulaire de contact)

Petit rappel : il est possible de me soutenir pour le temps passé et les frais engagés en participant à une cagnotte de soutien. Note a posteriori : La cagnotte étant fermée, vous pouvez passer par ma page PayPal pour tout soutien que vous jugeriez utile 😉

Exemple avec 4 photos (en 1280×960) ; l’espacement est de 2 px
Exemple avec 3 photos (en 960×960) + 1 logo ; l’espacement est de 20 px
Exemple avec 7 photos (en 960×960) + 1 logo ; l’espacement est de 2 px
Exemple avec 8 photos (en 1280×960) ; l’espacement est de 2 px

 

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. »

47 commentaires à propos de “Photomaton à base de Raspberry Pi – Choix 1 ou 4 ou 8 photos et impression directe”

  1. Bonjour,

    Votre code fonctionne t’il toujours en 2022?

    J’aimerai bien faire unphotobooth pour mon mariage l’année prochaine avec la possibilité d’imprimmer dirrectement les photos sur ma canon CP1300, est il possible de reduire la taille des photos et d’ajouter un fond personnalisé ?

    • Bonjour Bruno,
      Je te conseille de regarder l’article Borne Photos autonome avec galerie Web intégrée et de concaténer l’option impression dedans.
      Je n’utilise pas de programme fermé mais des scripts python donc tout est modifiable.
      Ou du moins, selon ses propres compétences évidemment (par exemple, je n’ai pas suffisamment de connaissances pour faire tout ce que je veux de la meilleure des manières).
      Pour avoir refait récemment mon propre système (une évolution du script de la borne automatique) = ça tourne toujours fin 2022 !
      Bon courage pour la programmation et la construction 😉
      ++

      • Merci pour votre réponse, encore une petite question vous utilisez des boutons physiques pour déclencher les photos, vous connaissez un moyens de le faire à l’aide d’une touche d’un clavier ? Exemple appuie sur la touche 1 du clavier numérique pour déclencher l’option 4 photos ?

        • Re,

          Pour l’usage du clavier, je ne sui spas doué, mais je sais faire avec un pavé numérique et la touche « enter » pour valider.
          Tu peux regarder du côté de l’article Sonnette connectée à base de Raspberry Pi dont un des script intègre cette possibilité.

          (oui, après plus de 20 ans dans le médical et maintenant dans l’informatique, sans compter les forums = je tutoie 😉 )

  2. Bonjour,
    Malgré plusieurs tentative je ne parviens pas a faire fonctionner le script sur un Raspberry Pi OS en 32 Bit car en 64 c’était pire.

    Le test de prise de photo fonctionne mais seulement avec cette commande:
    libcamera-still -o test.jpg

    Le PI est a jour et sur raspi-config dans « 3 inteface Option » puis « I1 Legacy camera a été passer en enable;

    La camera est une Arducam_64mp, elle semble bien installé car je peux prendre des photo avec la commande du dessus

    Le script lance la camera une fraction de seconde puis se coupe et indique l’erreur suivante:

    Hello from the pygame community. https://www.pygame.org/contribute.html
    /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py:73: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(LED_PIN, GPIO.OUT)
    mmal: mmal_vc_component_create: failed to create component ‘vc.ril.camera’ (1:ENOMEM)
    mmal: mmal_component_create_core: could not create component ‘vc.ril.camera’ (1)
    Traceback (most recent call last):
    File « /usr/lib/python3/dist-packages/picamera/camera.py », line 456, in _init_camera
    self._camera = mo.MMALCamera()
    File « /usr/lib/python3/dist-packages/picamera/mmalobj.py », line 2279, in __init__
    super(MMALCamera, self).__init__()
    File « /usr/lib/python3/dist-packages/picamera/mmalobj.py », line 631, in __init__
    mmal_check(
    File « /usr/lib/python3/dist-packages/picamera/exc.py », line 184, in mmal_check
    raise PiCameraMMALError(status, prefix)
    picamera.exc.PiCameraMMALError: Failed to create MMAL component b’vc.ril.camera’: Out of memory

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 374, in
    with picamera.PiCamera() as camera:
    File « /usr/lib/python3/dist-packages/picamera/camera.py », line 431, in __init__
    self._init_camera(camera_num, stereo_mode, stereo_decimate)
    File « /usr/lib/python3/dist-packages/picamera/camera.py », line 459, in _init_camera
    raise PiCameraError(
    picamera.exc.PiCameraError: Camera is not enabled. Try running ‘sudo raspi-config’ and ensure that the camera has been enabled.

    Je vous remercie d’avance pour tout réponse, mon niveau de Linux et Raspberry pi reste très débutant.

    • Salut Aurélien B,
      Bienvenue dans la dure loi de l’informatique.
      Le matériel ou la solution ou le programme qui fonctionnait en 2019 ne fonctionne plus en 2022 …
      Je n’ai pas retesté ce script car j’en utilise un autre basé sur Borne Photos autonome avec galerie Web intégrée.
      Je l’ai fait tourner sur la dernière version de RaspberryPiOS en 32 bits la semaine dernière, mais c’est vrai que la gestion des caméras, pygame et d’autres subtilités ont changé (comme libcamera qui remplace raspistill et raspivid).
      Je n’utilise que des version V2 du module caméra pour Raspberry mais un ami internaute a changé son module pour utiliser une ArduCam 64 Mp et a connu des galères (alors qu’il est Ingénieur informatique et pas manchot du tout avec un clavier).
      J’essaye de voir si je peux te trouver des pistes.
      ++

  3. Superbe application! Merci pour le taf’
    Petite question, (j’ai essayé mais pas réussi, je suis une bille en programmation ;-))

    Dans la version initiale, lorsque le bouton restait appuyé plusieurs secondes, le programme s’arrêtait. Il ne coupe donc pas le pi mais arrête simplement l’app.

    Est-il possible de réintégrer cette option? Si oui, comment et où?

    Merci encore bcp!

    • Salut Benjamin,

      Désolé, j’étais en déplacement.

      Tu dois faire comme moi ; réussir à gérer ce que tu veux malgré l’incompétence en la matière ???
      Donc faut juste contourner le souci 😀
      Tu ne peux pas escalader le mur ? Apprends à fabriquer une échelle (ou inversement selon les connaissances/compétences initiales)

      Dans ton cas, on fait simple :
      Tu lances le script général avec l’astuce de l’autostart dispo sur l’article « Photomaton* ultime de la mort qui tue »
      Ensuite, tu ajoutes juste une fonction « _stop_script_ » qui fera un pkill lxterminal et tu « joueras » cette fonction avec un bouton caché afin de reprendre la main.
      Soit tu ajoute la fonction dans le script général soit tu fais un scrip additionnel qui sera lancé avec rc.local

      Bon courage,

      ++

  4. Bonjour Alban. Ton article même après quelques temps est toujours au goût du jour bravo ! J’avais une question, tout marche parfaitement pour moi mais j’aimerai seulement augmenter la qualité de la photo, mais dans le script il ne se lance même pas quand je change les paramètres de la taille de la photo, fait tu comment faire ?
    Merci d’avance
    A bientôt !

    • Salut Tristan,

      En mode rapide et sans Rpi ni ce script sous le coude (je suis à l’hôtel pour déplacements pro)

      Sur le mien (qui reste une évolution de ce script), j’ai cette modification (entre autres) :
      LARGEUR_ECRAN = 1280
      HAUTEUR_ECRAN = 1024
      LARGEUR_AFFICHAGE = 1280
      HAUTEUR_AFFICHAGE = 1024
      LARGEUR_PHOTO = 2700
      HAUTEUR_PHOTO = 2025
      LARGEUR_PHOTOx4 = 1190
      HAUTEUR_PHOTOx4 = 890
      LARGEUR_PHOTOx8 = 896
      HAUTEUR_PHOTOx8 = 671

      Et j’utilise
      background = pygame.transform.scale(background,(LARGEUR_AFFICHAGE, HAUTEUR_AFFICHAGE))
      screen.blit(background,(0,0),(0,0,LARGEUR_AFFICHAGE, HAUTEUR_AFFICHAGE))
      Dans la définition de l’affichage des images

      Sans oublier que je suis en 1280×1024 avec mon écran et que j’utilise donc des multiples de ces chiffres.
      Mon but étant d’avoir des images finales de 2700×2025

      ++

  5. Encore merci pour ce script et cette aide très précieuse : tout fonctionne « out of the box » en suivant le tuto !
    J’en ai fait une vidéo (sur la conception d’un photomaton, la partie 2 porte sur l’informatique avec le raspberry) : https://www.youtube.com/watch?v=iD0Ly8lbTig.

    Encore merci pour ce travail et cette mise à disposition des sources 🙂

    (publication faite avec l’autorisation de l’auteur de ce site 😉 )

    • Et un très grand merci à toi pour cette vidéo … qui … me relance dans le travail des scripts pour cabine photos (oui, j’en ai plusieurs sous le coude) !

  6. Super votre projet.
    Y a t il des photos de votre « borne photobooth » ?
    Tout ce qui est câblage sur le raspberry des boutons etc, avez-vous fait des photos, des explications ?
    Si nous n’installons pas d’imprimante, est-il possible de sauvegarder toutes les photos sur clé usb ?
    Encore merci pour votre partage.
    Tony

    • Bonsoir Tony,
      Je n’ai jamais construit de photomaton en réel.
      Je n’en ai jamais eu l’usage ; je ne fais ces tutoriels/scripts/essais que pour m’amuser et rendre service (là, je fais encore 2 versions différentes).
      Je peux montrer les câblages des boutons, mais, en gros, c’est ce qui est visible (en bas d’article) à la page Photomaton automatique à base de Raspberry Pi
      Pas de problème pour désactiver l’imprimante et sauvegarder sur clef USB ; on modifie à peine le code Python pour cela.
      A bientôt,

      • Bonjour Alban, je suis en fin de projet avec ton super boulot, cependant, j aimerais si possible mettre le flux video au moment de prendre la ou les photos en full screen et inverser le reflet horizontalement, ce qui est plus pratique pour se positionner a tu une piste pour me guider? je souhaiterai egalement supprimer l option d impression, je suis un peut perdu dans la partie du script à supprimer sans faire d erreur Sinon tout fonctionne super un grand bravo, j ai juste modifier le lancement au debut pour qu il passe par la console, comme ça un ptit pkill lxterminal en ssh et c est tout bon c est quoi ton paypal?

          • Hello,

            –> Pour modifier l’orientation de la caméra :

            Dans la partie
            def initCamera(camera):

            Tu trouves
            camera.hflip = False

            Tu changes False par True

            –> Pour supprimer l’impression :
            A chaque fois que tu trouves
            os.system(‘lpr -h -PSamsung_Samsung_CLX-3300_Serie…

            Tu ajoutes # devant pour que cela devienne
            #os.system(‘lpr -h -PSamsung_Samsung_CLX-3300_Serie

            Tu dois le faire dans
            – def play():
            – def play2():
            – def play3():

            –> Pour l’affichage en 1920*1080, c’est le partie BEAUCOUP plus galère ; je vais devoir faire des essais bien chiants qui prennent du temps donc … ça va te coûter très cher 😀

            ++

  7. bonjour , celà fait plusieurs jours que j’essai de comprendre pourquoi chez moi cela ne fonctionne pas … je lance le script depuis raspberry via python 3 et lancer le module …
    la fenetre se lance il prendre les photos et ensuite ecran noir plus rien …. voici les retours si qq1 pourrait m’aider.

    #j’utilise en OS :#

    distributor ID: Raspbian
    Description: Raspbian GNU/Linux 8.0 (jessie)
    Release: 8.0
    Codename: jessie

    #et le code defaut#
    2019-07-16 07:40:23,835 – INFO – Initialisation de la caméra.
    2019-07-16 07:40:24,103 – INFO – Démarrage de l’aperçu
    2019-07-16 07:40:24,315 – INFO – Démarrage de la boucle du programme
    2019-07-16 07:40:28,248 – INFO – Demande faite pour 1 image de 4 photos !
    Démarrage de la séquence ‘4 photos’
    Nom de fichier créé : 20190716-074028.jpg
    2019-07-16 07:40:30,243 – INFO – Image 1.jpg enregistrée.
    2019-07-16 07:40:33,234 – INFO – Image 2.jpg enregistrée.
    2019-07-16 07:40:36,267 – INFO – Image 3.jpg enregistrée.
    2019-07-16 07:40:39,265 – INFO – Image 4.jpg enregistrée.
    2019-07-16 07:40:40,426 – ERROR – Heu … Exception non gérée :
    Traceback (most recent call last):
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 391, in
    onButtonPress()
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 329, in onButtonPress
    play()
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 194, in play
    convertMergeImages(fileName)
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 82, in convertMergeImages
    fileName])
    File « /usr/lib/python2.7/subprocess.py », line 522, in call
    return Popen(*popenargs, **kwargs).wait()
    File « /usr/lib/python2.7/subprocess.py », line 710, in __init__
    errread, errwrite)
    File « /usr/lib/python2.7/subprocess.py », line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory
    2019-07-16 07:40:40,523 – INFO – Au revoir …

    Warning (from warnings module):
    File « /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py », line 129
    GPIO.cleanup()
    RuntimeWarning: No channels have been set up yet – nothing to clean up! Try cleaning up at the end of your program instead!
    >>>
    MERCI D’AVANCE 🙂

    • Bonjour Jérémy,
      Ce ne serait pas un souci lié à Jessie alors que je suis sous Stretch voire Buster ?
      Ta version est un peu vieille et ne fait peut-être pas tourner Python3.
      Tu peux installer Buster sur une autre carte (ou une clef USB si tu es sur un Rpi3B+) et tester ?
      @+

        • Re,
          Je viens de faire le test sur Buster = OK.
          Là, j’installe Jessie pour voir ; je te redis dès que je peux.
          Tu as bien fait un copier/coller de cette ligne ?
          sudo apt-get install cups cups-bsd python3-cups python3-picamera imagemagick python3-dev python3-rpi.gpio -y
          ++

        • donc voilà , la commande GPIO fonctionne , il prends le nombre de photos selon la commande GPIO , compte a rebours et une fois que les 2 , 4 ou 8 photos sont prises, nous avons un message 1/10 de seconde pour l’impression et paff écran noir … je n’ai pas d’imprimante de configurer dessus , peut etre le soucis est là , ou alors c’est au niveau de l’action « convertmergeimages »

          • Bon,
            Jessie installée.
            J’ai juste configuré la caméra et changé le mot de passe
            Ensuite :
            sudo apt-get update
            Puis
            sudo apt-get install python3-picamera imagemagick python3-dev python3-rpi.gpio -y
            (donc pas l’imprimante)
            Et là, ça vient de fonctionner.
            Je pense que ton souci vient du traitement par imagemagick.
            Tu peux essayer
            sudo apt-get update && sudo apt-get install imagemagick
            et me dire le résultat ?
            Tu as une image dans « /home/pi/Photomaton_x1x4x8/photos » ou tu as 4 photos dans « /home/pi/Photomaton_x1x4x8 » ?
            ++

            • ca l’air de fonctionner depuis la ligne de commande … je ne l’ai pas refait depuis l’installation de buster … oups ….
              fusion des images et impression ok ( enfin pas encore brancher l’imprimante ) un grand merci je vais pouvoir avancer …
              par contre qu’utilisez vous pour le « flash » , la pin 19 délivre 12V le temps de la prise de photo c’est bien çà ? il suffit de le relayer pour piloter ce que l’on souhaite ?
              merci encore

              • Pas de quoi 😉
                ça m’a occupé 30 minutes 🙂
                Je venais de te modifier le script, mais si tu veux imprimer par la suite, on peut laisser comme ça.

                Pour le flash …
                En fait, je n’utilise pas de Photomaton.
                J’ai essayé pour voir et pour aider une personne sur un forum pour mon premier essai de modification de script, ensuite, c’est pour aider une autre personne que j’ai essayé ce script et encore pour aider autrui que j’ai fait mon troisième tuto.
                De ce fait, je n’ai jamais construit le Photomaton ni mis en place de Flash.
                D’après ce que j’ai compris, le but est que la pin 19 active le flash lui même alimenté par du 12 volts (le Rpi ne peut pas délivrer 12V).
                En gros, j’ai compris que le GPIO faisait office d’interrupteur.
                Franchement, je n’ai pas de lampe en 12V et aucune envie de tester car incompétent en électronique, je ne voudrais pas griller mon Rpi 😉
                Je sais allumer des LED en GPIO, mais de là à éclairer 😀 …
                Tu pourrais aussi faire afficher une image blanche pour que l’écran fasse effet flash (tiens, je vais tester)
                ++

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

  9. Bonjour Alban. J’ai découvert ton site. J’ai suivi ton tuto 1.4.8 Photos ca marche à merveille.
    J’ai vu que tu as fais un script : 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.
    Je souhaiterai tester cette config avec 1 bouton d’arret et 1 bouton de démarrage.
    Pourrais tu mettre le script à dispo.
    Et encore félicitation pour ton travail, moi je découvre Python. Jusque là j’ai fais 2 bartop en raspberry.
    Merci à toi
    Fabrice

    • Bonjour Fabrice,
      Merci pour les encouragements.
      Mon niveau python n’est pas bon, mais le script est utilisable (celui qui fait « 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.« ).
      Il a été testé chez moi et chez Guillaume.
      Je me disais justement qu’il faudrait que je fasse un autre tuto pour partager le script « codé » pour Guillaume.
      Je vais tâcher de m’activer pour le mettre en ligne et ajouter (dans le script) la possibilité de rajouter 1 bouton d’arret et 1 bouton de redémarrage.
      A bientôt,

      • Merci Alban pour ta reponse . C’est top. je vais le tester ce soir. Si j abandonne l idée des boutons pense tu que je puisse néanmoins rajouter la commande pour qu il se lance automatiquement ?

        • Re,
          Le souci du script auto de lancement au démarrage, si tu colles le mode plein écran en sus, c’est que tu n’a plus la main.
          Que tu fasses les boutons « reboot » et « poweroff » ou pas, je conseille d’activer SSH et VNC pour reprendre la main d’une manière ou d’une autre.
          Je t’envoie le script dans un fichier zippé par courriel.

  10. Un grand merci Alban 🙂 J’avais déjà utilisé le code pybooth pour un projet de digiscopie et je suis hyper content d’être tombé sur ce nouveau code hyper bien documenté. Du coup, ça m’a remotivé pour refaire un photomaton ! En revanche, je n’ai pas réussi à sortir du script sans redémarrer le pi, tu aurais une idée ? Ps : je tente en parallèle d’installer un serveur web sur le pi qui permettra de présenter les photos sur un site web accessible par wifi sur un réseau local. Je mettrai évidemment ce travail à la disposition de la communauté 🙂 Encore bravo pour ce tuto et merci d’avance pour ta réponse. @bientôt – David (39 ans et papa un poil geek)

    • Bonsoir David,
      Merci 🙂
      Perso, je triche pour quitter le script.
      Un vrai fainéant est un bosseur et un chasseur de l’inutile (oui, poète parfois).
      Tu redimensionnes la fenêtre pygame (si tu ne l’as pas encore rendu totale) puis tu lances l’émulateur de terminal et tu tapes pkill lxterminal et « Entrée ».
      Sinon, en connexion VNC, tu peux reprendre le terminal en cours (si tu as lancé le script à la main) et taper « ctrl »+ »c » pour quitter le script.
      Évidemment, ces 2 solutions ne fonctionnent plus si tu as lancé pygame en plein écran et que tu as automatisé le photomaton.
      Là, un sudo reboot (vive le ssh) est indispensable (en l’état actuel de mes compétences, mais on pourrait (je pense) ajouter (encore) un bouton pour quitter le script).
      Au plaisir,

  11. Bonjour,

    En regardant le script j’ai vu une LED branchée sur le port 19. Pouvez-vous m’expliquer le branchement de celle-ci?

    Merci pour votre travail.

    • Bonjour Ugo,
      J’ai laissé la LED dans le script bien que je ne l’utilise pas … puisque le but de ce photomaton était de voir si je savais faire (et aussi d’aider un étudiant étranger situé à 4900 km de chez moi 🙂 )
      La LED était prévue par le concepteur d’origine.
      Je n’ai pas retravaillé cette partie, mais il me semble (en lisant de biais) que le but est que celle-ci fasse un effet flash au moment de la prise de photos.
      Et merci pour le merci 😉

      • Bonjour Alban,

        J’ai bien suivi toutes les étapes mais quand je lance le script j’ai une erreur sur pygame qui ne peut pas ouvrir un terminal. Sauriez-vous ce j’ai omis de faire.

        Je vais regarder si j’arrive à faire fonctionner la led comme un flash. Ça peut être pratique la nuit.

        Ugo

        • Bonjour Ugo,
          Il convient d’avoir un Raspbian Stretch avec interface graphique et pas une version Lite.
          L’erreur ne viendrait pas de là ?
          Je peux avoir la copie écran ou le [copier/coller] de l’erreur par courriel ?
          Merci,

          Edit : je viens d’y penser. Il ne faut pas passer par SSH pour lancer le script.
          C’est cette erreur ?
          pi@raspberrypi:~ $ python3 /home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py
          Traceback (most recent call last):
          File "/home/pi/Photomaton_x1x4x8/Photomaton_x1x4x8.py", line 62, in
          screen = pygame.display.set_mode((1920,1080),RESIZABLE)
          pygame.error: Unable to open a console terminal

          Ça ne veut pas dire que pygame ne peut lancer de console, mais (je crois) ne peut pas se lancer dans une console.
          Je viens de l’avoir en lançant la commande en SSH depuis un PC Linux
          Pour lancer manuellement le script depuis un autre ordinateur, il faut passer via VNC et pas par SSH.

          • Bonjour Alban,

            Merci pour votre retour. Effectivement je lançais le script en SSH. Après l’avoir lancé via VNC j’avais un autre message d’erreur. Je me suis donc reporté sur votre autre version du photomaton, plus simple je pense et qui a marché parfaitement. Malheureusement la technique m’a fait défaut et mon écran est tombé en panne au bout de 15min.

            En tout cas merci pour votre temps et vos réponses constructives.

            Ugo

  12. J’ai réalisé le 1-4 cela fonctionne très bien, j’ai une imprimante canon cp1300 installer en USB.
    J’aurais juste voulu faire un bouton sortie qui ferme le programme sans éteindre le raspberry, afin de visualiser les photos rapidement après. Bon travail Mr le technicien.

    • Merci pour ce retour Guillaume.
      Il semble que cette imprimante rencontre un vif succès pour les photomatons
      Pour le bouton « sortie », je vais y réfléchir 😉
      A bientôt,

    • Bonjour Stéphane,
      L’étape 8 est le téléchargement de mon archive contenant tout le nécessaire (un dossier avec script et sous-dossiers).
      Il te suffit de cliquer sur le lien “récupérez mon script” pour que ton navigateur lance le téléchargement.
      Ensuite, il faut dézipper cette archive à l’endroit voulu (je le dézippe dans /home/pi car je préfère).
      L’étape 9 est la modification du script python (avec Geany ou le programme de codage que tu souhaites utiliser) afin de changer le nom de l’imprimante (ce nom est donné par CUPS lors de l’installation ou par la commande lpstat -p).
      Pour que mes tests ne me coûtent pas trop cher, j’avais aussi passé l’impression en 25% (avec scaling=25)donc, après avoir testé que ton imprimante fonctionne, tu devras changer cette valeur en scaling=100 pour avoir une impression normale.
      @+

  13. Rétroliens : Photomaton automatique à base de Raspberry Pi – 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.