Création d’une Cabine photo (« photomaton » ou Photobooth) avec un Raspberry Pi

Le but est de créer une cabine photo (photobooth en anglais) avec un Raspberry Pi.

Cette cabine photo doit être le plus autonome possible et demander une maintenance minimum une fois en marche. Les seules opérations physiques seront la mise en route, l’arrêt et le changement de clef usb lorsque celle-ci est pleine.

Pour agrémenter l’objet, j’ai décidé de lui ajouter une matrice LCD. Cette matrice va permettre d’indiquer qu’une photo va être prise et va aussi afficher des animations d’attente entre les déclenchements.

Je pars du principe qu’une version de Raspbian a déjà été installée. Si ce n’est pas le cas, on trouve des tutoriaux partout, en particulier celui-ci.

Configuration matérielle et budget

Raspberry Pi B+(ou version supérieure, Pi zéro inclus) + Raspbian entre 5 € et 40 €
Camera (v1 ou v2)v1 : 20 € 

v2 : 30 €

pHat Pimoroni 10 €
Un bouton1,5 € pour un bouton type « arcade » 

10,5 € pour le gros bouton rouge

Clef usb  Dépend de la taille

 

Le budget minimum est inférieur à 40 €. Auquel il faut rajouter l’habillage de la cabine.

Configuration Raspbian

Un des moyens pour effectuer les opérations suivantes est d’accéder au Raspberry via ssh. Cette méthode est bien documentée (voir par exemple), je ne vais pas entrer dans les détails.

Personnellement, j’utilise MobaXterm.

Pour activer la caméra, une fois connecté au Rapsberry Pi, dans une console, taper la ligne de commande suivante :
[cc lang= »bash »]sudo raspi-config
[/cc]

Puis choisir d’activer la camera (« Enable Camera »).

Il faut aussi charger le module SPI : « Interfacing Options » puis « P4 SPI         Enable/Disable automatic loading of SPI kernel module (needed for e.g. PiFace) ».

Montage auto de la clef usb

Il faut pouvoir changer de clef usb lorsque celle utilisée est pleine (ou a atteint un certain seuil de remplissage) sans devoir se connecter au Raspberry Pi. Les clefs usb doivent être détectées et montées automatiquement.

Création d’un répertoire /media/usb

Les clefs usb seront montées dans le répertoire /media/usb. Cela peut être n’importe quel répertoire, il faudra juste modifier le fichier « main.py » à la ligne [cc lang= »python »]usbPath = « /media/usb/taface »[/cc]

Dans une console, taper les lignes de commande :
[cc lang= »bash »]sudo mkdir /media/usb
chown -R pi:pi /media/usb[/cc]

Récupérer l’uuid de la clef puis ajouter une entrée dans fstab

Il faut répéter les actions suivantes autant de fois qu’il y aura de clefs.

Taper la commande suivante et noter l’identifiant de la clef usb.
[cc lang= »bash »]sudo blkid -o list[/cc]
Puis éditer le fichier fstab pour lui ajouter la ligne suivante. Il faut modifier « YOUR_UUID » par l’identifiant de la clef.
[cc lang= »bash »]sudo nano /etc/fstab[/cc]
Puis ajouter la ligne suivante
[cc lang= »bash »]UUID=[YOUR_UUID] /media/usb vfat auto,nofail,noatime,users,rw,uid=pi,gid=pi 0 0[/cc]
Ainsi, les clefs usb référencées seront montées dès le démarrage. Il ne faut pas brancher toutes les clefs en même temps.

Code Python3

Le code source est écrit en Python3.

Il faut charger les librairies pour la caméra et le pHat :
[cc lang= »bash »]sudo apt-get install python3-picamera
sudo apt-get install python3-pip python3-dev
sudo pip3 install unicornhat[/cc]
Le code pour la cabine photo est disponible sur GitLab: Taface

Il suffit de récupérer la dernière version et de copier l’ensemble dans un répertoire.

Exécution au démarrage

Toujours dans le but d’avoir le moins de manipulations à devoir effectuer lors de l’utilisation, l’application doit se lancer dès le démarrage du Raspberry Pi.

Si besoin, modifier le fichier « taface.service » pour prendre en compte le chemin vers le code (il faut modifier ce qui se trouve derrière les balises « ExecStart » et « WorkingDirectory »).

Puis
[cc lang= »bash »]sudo cp taface.service /etc/systemd/system
sudo chmod u+rw /etc/systemd/system/taface.service
sudo systemctl enable taface[/cc]

Rédamarrer le Raspberry puis vérifier que le service est lancé avec la commande suivante (si la matrice lcd est correctement branchée, elle devrait s’illuminer) :

[cc lang= »bash »]sudo systemctl is-active taface.service[/cc]

Si « inactive » s’affiche, c’est qu’il y a un problème de configuration.

Branchements

Caméra

Il n’y a rien de particulier à faire, pas besoin de long discours.

pHat

Seules 3 pins sont utiles pour le pHat (pin 2, pin 12 et pin 6), voir les indications.

Branchements pHat

Bouton de déclenchement

Pour le moment, j’ai juste deux fils branchés sur les pins 14 et 16.

Avec un Pi Zero

Le Pi Zero a la particularité d’être tout petit, mais aussi de n’avoir aucune connexion réseau. A moins de rajouter une clef wifi. Se pose alors le problème de configurer Raspbian pour se connecter au réseau.

PiBakery

PiBakery répond à ce problème. Ce logiciel permet de configurer, entre autre, la configuration de connexion au wifi. Tout se fait simplement, à la manière du logiciel Scratch.

Une fois la configuration faite, il suffit de lancer l’écriture sur une carte SD.

Pour la suite, rien de particulier. Tout fonctionne comme avec un Raspberry Pi classique.

Autre méthode

Créer un fichier « wpa_supplicant.conf » à la racine de la partition boot.

[cc lang= »bash »]

country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid= »wifi_ssid »
psk= »wifi_password »
}

[/cc]

Utilisation

La mise en place et l’utilisation de la cabine est très simple. Il suffit de brancher une clef usb (qu’on aura auparavant déclarée, voir le paragraphe expliquant comment faire) et de démarrer le Raspberry Pi en le branchant à l’alimentation.

Lorsque la clef usb est pleine, le pHat affiche un signal lumineux et il n’est plus possible de prendre de photos. Il faut alors débrancher le Raspberry Pi, changer de clef usb et re-brancher le Raspberry Pi.

Améliorations possibles