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 :
- Allumer un Raspberry Pi connecté à un écran et une imprimante
- 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 »)
- 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)
- Retourner automatiquement sur l’écran de choix de 1 ou 4 ou 8 photos
- 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.
- 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
- Vous connectez le module caméra (ou RaspiCam) au port CSI avant de démarrer le projet.
- Vous installez les boutons type « poussoir » sur les GPIO 18, 24 et 26 (+ 1 sur le GPIO 13)
- Vous installez Raspbian en suivant ce (superbe) tuto détaillé en images.
-
Vous activez la Caméra et le SSH (et VNC si besoin) :
Menu Framboise –> Préférences –> “Configuration du Raspberry Pi”. - Vous testez la caméra avec :
raspistill -o test.jpg
(Vous devez obtenir une photo « test.jpg » dans le dossier « pi ») - Vous installez les dépendances avec :
sudo apt-get install cups cups-bsd python3-cups python3-picamera imagemagick python3-dev python3-rpi.gpio -y
- 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)
- 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 »)
- 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+' »‘) - Vous mettez en place le script pour éteindre le Raspberry avec 1 simple bouton.
Vous éditez le fichier rc.local avecsudo nano /etc/rc.local
Vous y insérezsudo 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()
enpygame.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 😉
Si je prend un raspberry 4 en 2go est ce que cela suffit ou faut-il plus? (je prendrais pour le stockage une carte SD de 128go 🙂
Hello,
J’ai un Rpi3 avec une SD de 16 Go pour une version plus aboutie et ça passe nickel donc « T’es large » 😀
++
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 😉 )
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.
++
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,
++
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
++
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) !
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,
Merci beaucoup pour votre réponse 🙂
Je vais acheter le matériel et me lancer 🙂
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 Greg,
Le tuto « Borne à Selfies – Borne Photos autonome avec galerie Web intégrée (Raspberry Pi) » répond à ces demandes 😉
Cependant, je te contacte en direct pour juste faire les modif dans le script que tu utilises.
A bientôt,
(PS : pour le PayPal, tu as le lien direct en bas de page du site ou directement en cliquant pour mon PayPal perso)
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 😀
++
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 ?
@+
Merci de ta réponse, en attendant j’ai déja basculer justement sur Buster, çà ne fonctionne toujours pas mais je continue de chercher ….
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)
++
Rétroliens : Photomaton avec prévisualisation (sous Raspberry Pi) – TREVILLY.COM
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.
Merci bcp pour ton aide je t enverrai une photo de mon projet quand il sera terminé.
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,
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
Bonsoir Ugo,
Un autre script à tester : Photomaton avec prévisualisation (sous Raspberry Pi)
C’est un mixte entre les 2 autres tutos.
Sinon, pour le message d’erreur du « 1-4-8 », on peut voir ça ensemble via courriel ; aucun souci.
—
Alban
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,
Bonsoir… Je ne comprends pas l’étape 8 et 9
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 enscaling=100
pour avoir une impression normale.@+
Rétroliens : Photomaton automatique à base de Raspberry Pi – TREVILLY.COM