Appareil photo autonome avec un ESP32 CAM
Pendant mes vacances je me suis donné un petit objectif. Une sorte de défi à coder en moins de 2 jours.
Faire une caméra sur batterie fonctionnant pendant au moins 2 jours. Ensuite, trouver un endroit où la cacher pour faire un timelapse.
Le lieu
Il existe à Grenoble 2 bâtiments abandonnés et bien connus des grenoblois : l’Institut Dolomieu et l’Institut de Géologie Alpine. Ces bâtiments feront peut-être l’objet d’un article un jour mais en quelques mots : ils sont abandonnés depuis des dizaines d’années mais un promoteur a racheté l’Institut Dolomieu. Cependant, le second bâtiment n’a pas de projet de réhabilitation en cours et est encore énormément visité par de nombreuses personnes (dont moi et mes amis).
Le matériel
Je me fais à l’idée que je peux me faire voler tout mon matériel donc je veille à ce que ce ne soit pas une grosse perte niveau argent au cas où.
Le cerveau
Tout comme dans ce projet, je vais utiliser un ESP32-CAM qui est une carte avec un microcontrôleur et une caméra. Elle incorpore également un lecteur de carte micro SD ce qui est parfait !
Dans mon lot de cartes micro SD, j’en ai une de 16 Go qui est une contrefaçon qu’on m’a gentiment remboursé et donc que j’ai eu gratuitement ! Aucun regret pour elle si jamais on me la vole 🙂
La batterie
On m’a offert une toute petite power-bank de 3000 mAh. Elle a une faible capacité pour charger un téléphone d’aujourd’hui et un courant max de 800 mA qui est peu pour une charge rapide. Malgré-ça, elle est parfaite pour mon usage !
La consommation de l’ESP32 est de 150 mA en moyenne pendant une prise de photo. En veille, elle est autour de 10 mA. Si on estime de manière parfaite* la durée de vie de la batterie on a environs 90 heures d’autonomie pour une photo toutes les 60 secondes.
Durée de vie théorique
Capacité de la batterie Ib = 3000 mAh
Temps "en marche" Tm : 10 secondes
Intensité "en marche" Im : 150 mA
Temps "en veille" Tv : 50 secondes
Intensité "en veille" Iv : 10 mA
Courant moyen consommé Ia : (Im * Tm + Iv * Tv) / (Tm + Tv) = 33 mA
Heures théorique : Ib / Ia = 90 heures
*Ce que donne les constructeurs comme capacité pour une batterie n’est jamais complètement vrai. En effet, il faut prendre en compte qu’elle ne doit pas descendre en dessous d’une certaine tension (au risque de sa vie).
Il faut également penser qu’on ne l’utilise jamais « directement » : il y a un régulateur et quelques composants pour avoir la tension voulue et qui font que le rendement n’est jamais de 100% à la sortie.
Power-bank et mise en veille
Beaucoup de power-bank se mettent en veille si on leur demande moins de 80 mA environ. Cette fonction est gérée par la carte électronique intercalée entre les bornes de la batterie et le port USB.
Pour contourner ce problème en mode veille de l’ESP (< 10 mA je rappelle), j’ai dû souder 2 fils sur les bornes de la batterie en amont de la carte afin d’avoir la batterie en direct. Ces 2 fils sont ensuite branchés sur l’alimentation de l’ESP qui a un régulateur en entré. Il me permet de ne pas me soucier des variations de tensions.
La boîte
La boite doit être assez petite, compacte et surtout transparente. J’utilise une vielle boîte d’appareil photo à pellicule jetable reçu en cadeau il y a longtemps.
Comme camouflage, j’ai utilisé le seul papier marron que j’avais sous la main : un emballage d’essuie-mains que les restaurant fournissent…
Mise en place
Le jour J est arrivé, je monte avec Erwan à L’institut de Géologie un mercredi soir. Je souhaitais avoir un endroit peu visible mais avec du passage pour avoir quelque chose d’intéressant à photographier. Au bout de quelques recherches, on trouve finalement un trou dans un moellon qui est pile en face des escaliers d’entrés !
Le « piège photo » est posé à 19 heure.
Le vendredi soir on retourne voir si notre installation est toujours en place et si elle a bien fonctionné ! Heureuse nouvelle, l’ESP est encore là et sa carte SD a un peu plus de 2000 photos ! La dernière prise s’arrête au vendredi matin, 8 heure.
Les résultats
Au final, la batterie a tenue 38 heures (soit 52 de moins que prévue…). Sa tension est de 1.5 V (ce qui est en dessous des 2 V recommandés). Je pense donc que les 3000 mAh sont bien surestimés et/ou ma consommation mesurée n’est pas correcte. Je ferais d’autres tests pour en avoir le cœur net.
Le Timelapse
Voici un petit timelapse généré avec cette commande :
ffmpeg -framerate 25 -pattern_type glob -i "*.jpg" -vcodec libx264 -crf 35 -preset veryfast timelapse.mp4
Les améliorations
Plusieurs points ont été améliorés depuis la fin de cette expérience :
- Un mode nuit a été ajouté. Il fait dormir l’ESP pendant 1 heure, prend une photo puis se rendort pendant une heure
- Un serveur Web a été ajoutée et accessible quand l’ESP se met en mode point d’accès à certaines heures de la journée. Il permet de récupérer les photos sans avoir besoin de récupérer la carte SD physiquement ainsi que de modifier toute la configuration dans l’EEPROM
- Mise en place d’une sauvegarde des 10 dernières photos dans la mémoire interne de l’ESP même sans carte SD
- La suppression de la LED qui faisait office de flash (elle n’était pas très discrète :D)
Le code source est disponible ici : https://github.com/valentintintin/esp32-cam-autonom