Raspberry Pi : Time Lapse

Bonjour comment allez-vous? Quand je vous ai dit que j’avais plus de temps pour bricoler, réfléchir et rédiger ce n’était pas pour rien… En effet le projet que je présente aujourd’hui est un projet qui me tient particulièrement à cœur car il permet de travailler de façon automatique, partout et par tout temps… Je vais donc vous présenter ma RaspiCam, non ma RaspiCamBox euhh non ça va pas, ma RaspiCamBoxWifi et sa va encore pas je laisse tomber…

Le but de ce boitier est de pouvoir faire des timelapses. Un timelapse est en fait une vidéo composée de photos prises à intervalle de temps régulier. Comme j’avais envie de disposer d’un appareil capable de réaliser ce genre de choses, mais que je n’ai pas du tout les moyens d’en acheter un dans le commerce, j’ai regardé s’il n’était pas possible d’en construire un qui conviendrait parfaitement à mon utilisation…

Il s’est avéré après mes recherches sur le web que le Raspberry Pi couplé à la Pi Cam Board sont tout à fait capable de remplir ce genre d’opération pour une somme modique… Mais la technique pour récupérer et capturer les photos n’était vraiment pas pratique :

  • Difficultés pour récupérer les photos si vous n’avez pas de connexion internet, les photos sont piégées dans la partition /ext4 de la carte SD.
  • Pas de réelle solution pour une alimentation viable en extérieur. Comment améliorer au maximum l’autonomie quand je n’ai pas de prise de courant?
  • Je n’étais pas fan du programme fourni pour réaliser les photos

Du coup, j’ai commencé à voir s’il n’était pas possible de contourner ces problèmes et en fin de compte des solutions relativement simples ont émergé :

  • Lire les partitions /ext : si au pire la carte du Raspberry Pi venait à planter, on pourrait toujours essayer de récupérer les données dessus…
  • Lien Alléger Raspbian : L’optimisation d’une batterie passe par l’optimisation du code afin d’économiser des ressources matérielles et donc d’économiser de l’énergie dans la batterie…
  • Raspberry Pi Routeur : Comment récupérer ses photos au milieu de nulle part? En générant un réseau WiFi, un serveur DHCP qui nous permettent d’avoir un accès à la carte SD et à la console sans internet et sans écran? Grâce à un dongle WiFi qui consomme moins de 150mA…

Ehhh oui les précédents articles sont en réalité des fonctionnalités utilisée pour ma timelapse box…

1 – Description du boitier :

Le boitier est en réalité une grosse boîte de dérivation électrique qui offre une très bonne étanchéité… Bon bien sûr je l’ai un peu modifié :

Timelapse Vue Générale
Timelapse Vue Générale

J’ai également percé le fond pour pouvoir fixer le Raspberry Pi et la carte de gestion d’énergie :

Vue du dessous
Vue du dessous

J’ai découpé le couvercle à la Dremel pour intégrer le panneau solaire de 3W et coller le tout au pistolet à colle :

Panneau solaire vue extérieure
Panneau solaire vue extérieure
Panneau solaire vue intérieure
Panneau solaire vue intérieure

Au début, je n’ai pas pensé au froid ce qui n’empêchait pas la box de fonctionner, mais m’inquiétais pour les prises de vue extérieures en hiver :

Sans protection froid dans le fond
Sans protection froid dans le fond

J’ai donc récupéré un peu de protection thermique afin de protéger les composants du froid car je ne sais pas trop si le Raspberry Pi supporte bien les températures négatives :

Protection Froid sur le dessus
Protection Froid sur le dessus
Protection froid dans le fond
Protection froid dans le fond

Le Raspberry Pi Model A à juste l’essentiel : alimentation, carte SD, dongle WiFi et Pi Cam Board :

Timelapse Raspberry Pi
Timelapse Raspberry Pi

Il a été également difficile de trouver une solution pour fixer la Pi Cam Board et trouver un opercule parfaitement transparent. J’ai testé pas mal de choses : scotch, colle chaude, couvercle en plastique, papier cellophane. Mais comme l’ensemble doit être très robuste, très étanche, très transparent et supporter les contraintes exercées par la nappe de la caméra la meilleure solution reste encore deux petites vis et un morceau de verre taillé en rond grâce à une tenaille… Ah bah oui système D quand tu nous tiens…

Caméra vue intérieure
Caméra vue intérieure
Caméra vue intérieure zoom
Caméra vue intérieure zoom
Caméra vue extérieur
Caméra vue extérieur

Sur les photos, on ne voit pas le rond de verre, mais il est bien là et remplit parfaitement son office… La gestion de l’énergie aurait pt être problématique, mais grâce à quelques petits éléments de chez http://www.seeedstudio.com tout se fait automatiquement (MERCI JACK 🙂 ). J’ai en fait une carte qui gère toute seule l’alimentation du secteur, de la batterie ou du panneau solaire :

Lipo Rider Pro : Carte gestion énergie
Lipo Rider Pro : Carte gestion énergie

En partant du haut à gauche, la première prise JST 2.0 est pour le branchement de la batterie, le port USB juste en dessous vient de la prise secteur et la dernière prise JST 2.0 en bas à gauche sert à brancher le panneau solaire. Sur la droite la prise USB est celle qui alimente le Raspberry Pi. Si vous appuyez sur le bouton volume les diodes P1, P2, P3 et P4 vous indiquent le niveau de charge de la batterie. Le bouton on/off (sw1) risque d’être déporté sur la boîte de dérivation afin de ne pas avoir à l’ouvrir pour l’actionner. Enfin au niveau de C8 et U2 (en dessous du bouton volume) deux diodes (ok et ch) indiquent si la prise secteur est branchée ou non et si la batterie est en charge ou non.

Timelapse prise secteur extérieur
Timelapse prise secteur extérieur
Timelapse Batterie 2A
Timelapse Batterie 2A
Timelapse Câblage 1
Timelapse Câblage 1
Timelapse Câblage 2
Timelapse Câblage 2

Comme on ne voit pas bien le câblage sur les photos j’ai réalisé un petit schéma pour faciliter la compréhension :

Schéma Timelapse
Schéma Timelapse

Le Couplage du panneau solaire de 3W, de la batterie de 2A et en réduisant l’installation de Raspbian j’ai pour le moment 8 à 10h d’autonomie si l’ensoleillement est bon avec bien entendu le WiFi allumé et la box qui fait une photo toutes les minutes. Sans panneau solaire la batterie seule tient environ 5h,il y a donc un réel intérêt à avoir un panneau solaire…Il faut que je trouve quelque chose de parfaitement transparent et qui casse moins facilement que le verre afin de réduire les poussières et les chocs sur le panneau solaire… Le prix pour ces petits bijoux?

Avec la Pi Cam Board : 29,90$ il ne manque que le Raspberry Pi Model A (environ 20 euros), le dongle WiFi (environ 15 euros), la boîte de dérivation (15 euros) et l’adaptateur secteur (8 euros) ainsi que la carte SD 16Go classe 10 (15 euros) pour vous faire la même…

Pour la carte SD j’ai mis une classe 10 de 16Gopoure d’avoir de l’espace de stockage…À raison d’une photo par minute en qualité HD (1920x1080px) un jour de photo occupe 1,1Go…

Que faire pour améliorer ma box? Ajouter une plus grosse batterie pour augmenter de façon drastique l’autonomie :

Schéma Timelapse Batterie en plus
Schéma Timelapse Batterie en plus

Quel genre de batterie branché dans ce cas? Oh rien de bien méchant juste une en 10.000mAh : Exemple de batterie envisageable chez matériel.net

Il est également possible d’ajouter un shield 3G pour envoyer les photos à distance, un module RTC et un module BMP085 pour afficher l’heure, la température et la pression atmosphérique automatiquement sur les photos.

Mais on perd et pas qu’un peu : apparemment cela réduit de moitié l’autonomie même avec le panneau solaire… (Je n’ai pas testé, c’est ce que j’ai lu sur internet)

Voici deux petits timelapses pour vous montrer le rendu final de ma box. Le premier a été réalisé chez moi sur deux jours afin de tester la stabilité du code. Le second a été réalisé dans le Doubs pour tester la résistance au froid…

Comme vous pouvez le constater aucun problème de netteté où de buée sur les photos grâce à une étanchéité sans faille… Maintenant que vous savez ce qu’il vous faut on va passer au code.

2 – Le Code :

2 – 1 Rendre La Pi Cam Board opérationnelle :

Vous allez voir rien de bien dur… On se connecte à son Pi sur Raspbian, et on met à jours les sources :

sudo apt-get update
sudo apt-get upgrade

On va mettre à jour le kernel afin d’être sûr que Raspistill est bien installé :

sudo rpi-update
Timelapse rpi-update
Timelapse rpi-update
Timelapse rpi-update en cours
Timelapse rpi-update en cours

Dernière version en date 3.10.28+. Pour connaître votre version :

uname -r

Puis il faut faire un petit reboot :

sudo reboot
Timelapse rpi-update reboot
Timelapse rpi-update reboot

Au redémarrage on va activer la caméra dans les réglages :

sudo raspi-config
Timelapse raspi-config
Timelapse raspi-config

Puis choisir Enable Camera et l’activer :

Timelapse enable camera
Timelapse enable camera

On fait un petit reboot lorsque l’on sort de raspi-config comme demandé :

Timelapse raspi-config reboot
Timelapse raspi-config reboot

Normalement après ce second redémarrage lorsque vous tapez :

sudo raspistill

Vous devriez voir apparaître les différentes commandes disponibles dans le programme raspistill :

Timelapse raspistill début
Timelapse raspistill début
Timelapse raspistill fin
Timelapse raspistill fin

 

2 -2 Obtenir le code pour prendre les photos :

On peut vérifier que tout fonctionne bien avec :

raspistill -v -o -test.jpg

Effectivement, je n’ai pas écris le code en python qui prend automatiquement les photos, ce sont nos amis de fotosyn.com qui l’ont écrit… Pour l’installer il faut faire :

cd /home
sudo mkdir timelapse
sudo chmod 777 timelapse
sudo wget https://bitbucket.org/fotosyn/fotosynlabs/raw/9304ee9262638efebdd66d543b844a3075401782/RaspiLapseCam/raspiLapseCam.py

La première ligne nous places dans le dossier home, la seconde crée un dossier timelapse dans le dossier home (/home/timelapse). La troisième ligne donne les bonnes permissions au dossier. Enfin la dernière ligne télécharge le script python dans le dossier /home/.

Timelapse test rasptill
Timelapse test rasptill

Maintenant on va lancer le script automatiquement au démarrage du Pi en utilisant cron :

sudo crontab -e

et ajouter à la fin :

@reboot sudo python /home/raspiLapseCam.py &
Timelapse crontab
Timelapse crontab

Puis Ctrl+X pour quitter, Y pour enregistrer les changement et Entrée pour valider. Enfin après un dernier:

 sudo reboot

Vous devriez voir la LED sur la caméra s’allumer et des photos apparaître dans votre dossier /home/timelapse. Si votre Raspberry Pi est branché à un écran vous avez une preview qui s’affiche…

2 – 3 Régler le code :

Si vous voulez modifier le code qui prend les photos il vous faut taper :

sudo nano /home/raspiLapseCam.py

Puis toujours pareil Ctrl+X pour quitter, Y pour enregistrer les changement et Entrée pour valider.

Timelapse RaspiLaspeCam 1
Timelapse RaspiLaspeCam 1
Timelapse RaspiLaspeCam 2
Timelapse RaspiLaspeCam 2
Timelapse RaspiLaspeCam 3
Timelapse RaspiLaspeCam 3
Timelapse RaspiLaspeCam 4
Timelapse RaspiLaspeCam 4

Enfin si vous voulez désactiver la led présente sur la Pi Cam Board il faut aller ici :

sudo nano /boot/config.txt

et ajouter :

disable_camera_led=1
Timelapse Disable Camera Led
Timelapse Disable Camera Led

Puis Ctrl+X pour quitter, Y pour enregistrer les changement et Entrée pour valider.

Petites informations complémentaires, je vais vous laisser jouer avec le code pour les réglages de vos photos, si vous voulez connaître les différents options que raspistill offre vous pouvez vous rendre ici :

http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf

2 – 4 Compiler les photos en vidéo :

Personnellement, j’utilise un logiciel tiers d’édition vidéo, mais il est très facile de le faire grâce au Raspberry Pi…

En premier lieu, il faut installer l’encodeur :

sudo apt-get install mencoder

Puis on se rend dans le dossier où se trouve les photos :

cd /<le_chemin_du_dossier_vers_les_photos>

On liste le nom de toutes les photos dans un dossier *.txt :

ls *.jpg > list.txt

Enfin on lance l’encodage avec mencoder sans sons, en mp4, avec un ratio de 16/9, un bitrate de 8000000, une dimension de 1920×1080, le fichier avi sera nommé timelapse.avi et enfin on indique où prendre les images, à quelle cadence les compiler…

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt

3 – Conclusion :

J’espère que l’article vous aura plu et que vous prendrez autant de plaisir à construire votre TimeLapse box que moi pour la mienne. Les possibilités sont vraiment infinies une fois que l’on met quelques éléments électroniques ensembles ne l’oubliez surtout pas!!!

11 réponses sur “Raspberry Pi : Time Lapse”

  1. Bonjour,
    Merci beaucoup pour cet article vraiment super !
    J’ai une petite question : tu parles d’ajouter des infos sur les photos comme l’heure, la température, etc…
    Or, je cherche justement à ajouter l’heure sur ma vidéo mais je n’ai pas trouvé comment faire. Pour l’instant j’utilise uniquement raspistill.
    Aurais-tu une idée de la manière de procéder ?
    Merci d’avance

    Mathieu

  2. Pas mal, je voulais faire la même chose mais… en 360° 🙂 ou tout du moins en vue très élargie en utilisant soit plusieurs webcam à allumer l’une après l’autre pour ne pas consommer trop d’énergie, soit monter la RaspiCam sur un moteur pas-à-pas pour prendre plusieurs photos en faisant rouner la caméra et assembler ensuite chacune pour faire un film panoramique.

    1. Une chose à la fois 😉 Le 360° viendra sûrement mais pour le moment on y va mollo… La meilleure solution reste à mon avis un moteur pas à pas qui fait tourner la caméra… Plusieurs caméra doivent être un cauchemar à gérer…

      1. En fait pas tant que ça l’idée étant de contrôler l’alimentation USB de chaque caméra de façon à n’en avoir qu’une seule allumée à la fois juste au moment de la prise de vue, ce qui permet aussi de ne pas trop consommer (mais pas sûr que le système RasBian sache gérer plus de deux caméras à la fois /dev/video0 et /dev/video1), mais l’idée du moteur pas-à-pas me semble plus sexy 😉

          1. J’ai également un doute sur ce point… Mais je me dis que avec la nouvelle proto board qui est sortie il y a peut être des chances grâce à ses deux connecteurs pour caméras que ce soit possible nativement. Pour le moment je ne sais pas… Une usb et une native à la limite, deux usb consommeront trop et deux caméras native il n’y a pas assez de connecteurs…

            PS : Si vous avez aimé cet article le prochain que je suis sûr le point de rédiger devrait vous plaire également et l’utilisation d’un servo serait totalement justifié…

  3. Très bien fait votre site et très utile, merci ! Néanmoins je cherche la solution pour faire des prises de vue uniquement en journée (7h-19h) tous les jours. Avez-vous une petite idée comment faire ?
    Merci d’avance pour votre aide.
    Pierre

    1. Bonjour Pierre, j’espère que vous allez bien.

      Merci pour vos compliments, cela m’incite à continuer à rédiger des articles 😉 . Je n’utilise plus trop ce script lorsque j’ai besoin de faire un timelapse…

      Vous pouvez toutefois conserver le même hardware, j’ai juste changé le software que j’utilise. Je suis passé à RPI Cam Web Interface que j’ai présenté ici : https://anderson69s.com/2016/05/22/rpi-cam-web-interface/

      Si vous désirez programmer des timelapse avec cette solution, le wiki du projet est très bien documenté : http://elinux.org/RPi-Cam-Web-Interface#Scheduler

      @Bientôt Anders

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 la façon dont les données de vos commentaires sont traitées.

Traduction :