Documentation MOOREV-Timer-Camera ScFo
Information:
Groupe de projet: L1 - Science Formelles Maths-Info - (février - avril 2023)
- CHU Amélie amelie.chu@etu.sorbonne-universite.fr
- SAE LIM Thierry thierry.sae_lim@etu.sorbonne-universite.fr
- PERRIN DE BRICHAMBAUT Jules jules.perrin_de_brichambaut@etu.sorbonne-universite.fr
Contexte:
Dans le cadre de notre projet d'ARE, nous nous focalisons sur la récolte de données images et vidéos d'espÚces marines à l'aide de caméras et de capteurs.
Objectif:
Notre objectif est de concevoir un systÚme autonome qui permet d'enregistrer ces données en profondeur sur une longue durée (plusieurs semaines à plusieurs mois), à faible coût et à faible consommation d'énergie.
Le but de ce tuto est de mettre en place un systĂšme autonome sous marin qui permet de prendre des donnĂ©es photos et vidĂ©os dâespĂšces aquatiques sur une durĂ©e dĂ©terminĂ©e. Notre objectif est donc de finaliser un prototype peu coĂ»teux et ayant une consommation dâĂ©nergie minimale.
Materiel:Matériel:
- GoPro Hero 3+S
- Adafruit ESP32 Feather [0]
- Arduino NANO
- BreadbordBreadboard
- Caisson hermétique
- connecteur arriÚre de la caméra (connecteur herobus) modÚle DD1P030MA1
- Carte SD 64 GGo (ou 32G)32 Go)
- ESP32-Cam
- MultimÚtre (modÚle utilisé TENMA 72-14620)
Le tuto se découpera en plusieurs parties:
- IDE et programmation des microcontrĂŽleurs
- RĂ©alisation de tests de consommations
- Script de la GoPro
- Assemblage du prototype
- Alternative: ESP32-Cam
- Références
Machines utilisées:
- fer Ă souder
1.TUTO: IDE et programmation des microcontrĂŽleurs
Etape 1 :
On installe tout dâabord leslâIDE IDEArduino (Integrated Development Environment) pour pouvoir programmer les scripts des deux cartes: https://www.arduino.cc/en/software [1] (lien pour le tĂ©lĂ©chargement)
.
Interface du logiciel en question
Une fois tĂ©lĂ©chargĂ©, lancez lâapplication. En haut Ă gauche, choisir le microcontrĂŽleur adaptĂ© (dans notre cas, il sâagit dâun Adrafruit ESP32 Feather, dâun ESP32-CAM ou dâun Arduino Nano). Sur la gauche, cliquer sur la deuxiĂšme icĂŽne âBOARDS MANAGERâ et rechercher âesp32â. Installer la plus rĂ©cente version de la librairie âesp32â par Expressif Systems. Cela permettra dâavoir la gestion pour programmer les ESP32.
Etape 2:
Nous allons maintenant Ă©crire les scripts pour les deux cartes. Notre script va simuler une sĂ©quence oĂč la carte allume une LED toutes les minutes pendant 5 secondes.
Le lien vers notre GitHub contient les scripts des deux cartes dans les deux fichiers ESP32 et Arduino [2] :
https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera [3]
Pour transmettre les fichiers, relier la carte Ă lâordinateur, sĂ©lectionner le port COM de la carte, et cliquer en haut Ă gauche sur le bouton flĂšche âuploadâ. Pour chaque modification du script, il faudra rĂ©itĂ©rer cette opĂ©ration.
2.TUTO: RĂ©alisation de tests de consommations
On réalise maintenant les tests de consommations. Pour cela, nous allons utiliser le multimÚtre. Nous souhaitons récolter les données.
Etape :1: installation du logiciel
En fonction du multimĂštre utilisĂ©, la fonctionnalitĂ© peut ne pas ĂȘtre disponible. Il faudra alors noter manuellement les donnĂ©es. Dans le cas contraire, installer le logiciel associĂ©. Dans notre cas avec ce modĂšle, installer le logiciel Ă lâaide du CD fourni avec le manuel dâutilisation. Lancer le logiciel puis brancher lâordinateur au multimĂštre.
ModÚle du multimÚtre utilisé dans notre cas : TENMA 72-14620
- On rĂ©alise des mesures de consommationInstaller sur l'Arduinolâordinateur le modĂšle du multimĂštre correspondant au modĂšle
- Connecter lâordinateur et l'ESP32lâappareil pourgrĂące choisirau cĂąble fourni avec lâappareil
- RĂ©gler le mieuxlogiciel adaptĂ©sur la connexion via USB, lâenregistrement est prĂȘt Ă dĂ©marrer avec le bouton «DĂ©marrer».
- Différentes options sont disponibles une fois l'enregistrement terminé: enregistrer les données dans un fichier ou les imprimer.
Etape 2: Branchement
Nous allons rĂ©aliser un branchement pour alimenter les cartes et mesurer les consommations. On brancheenfiche les cartes sur unune breadboardbreadboard, puis on les deux microcontrĂŽleurs. On alimente en premier temps une des deux carte avec un courant de 5V pour lancer le script. Entre la carte et le gĂ©nĂ©rateur onrĂ©glĂ© insĂšresur 5V. On nâoublie pas le multimĂštre quidans estle debranchement.
On reliĂ©alimente Ă les uncartes ordinateuret pouron prendrerĂ©colte les donnĂ©es ensur tempsune rĂ©el.durĂ©e de 3 sĂ©quences, soit environ 3 minutes afin dâavoir une moyenne Ă la fin. On enregistre le fichier sous forme Excel (ou autre format).
Afin de dâalimenter les cartes pour rĂ©aliser les mesures de lâintensitĂ© utilisĂ©, on connecte une source en +5V sur le pin 5V et la masse sur le pin GND de lâarduino Nano [4].
Pour lâESP32 (avec une carte Adafruit HUZZAH32 - ESP32 Feather), connecter la broche USB au 5V et la masse Ă la broche GND [5].
Ne pas oublier de brancher le multimÚtre en série du microcontrÎleur et de ne pas utiliser le port USB des cartes arduino ou ESP32 lors des mesures (sous risques d'endommager l'appareil branché en USB) !
Branchement de l'Arduino (gauche)Branchements et decircuit l'ESP32 (droite).réalisés
On récolte les données de consommation pour les deux cartes à l'aide du logiciel sur ordinateur.
Etape :
- Comparer les résultats obtenus: faire une moyenneanalyse des données
Nous analysons ensuite les données en utilisant les bibliothÚques python Pandas et lesMatplotlib visualiseravec (utilisationPython.
Pour pouvoir exploiter le fichier Excel sous Python, il ne faut pas oublier de Numpy/Panda/Matplotlib)remplacer les «,»
Résultats obtenus:par des «.».
Le fichier qui nous a permis de faire le graphique est disponible sur le GitHub sous le nom de «plot_conso» [3].
On observe que l'Arduino Nano consomme moins que l'ESP32. Les pics de chaque lignes correspondent à l'allumage de la LED de chaque carte, et l'espace entre chaque pic correspond au mode veille. L'Arduino semble le mieux adapté en terme de consommation.
Arduino |
ESP32 | |
mean | 6.1727 mA | 10.5101 mA |
standard deviation | 4.6997 |
11.8473 |
total time | 5.0 min 18.0 s | 5.0 min 0.0 s |
total time consumption |
2981.44 mA |
4792.6 mA |
average consumption | 22.2219 mW/h | 37.8363 mW/h |
Etape:Etape 4: soudure des fils
OnNous souhaiteavons maintenantchoisi faire la mesure entre notre systÚme qui intÚgre la GoPro et l'Arduino, et l'ESP32-Cam qui est un ESP32 qui comprend déjà le microcontrÎleur et une caméra. On pourra comparer la consommation des deux systÚmes.
Composants du port Hero et assemblage:
C'est avec le port Hero que nous pourronsde contrĂŽler la GoPro.camĂ©ra Nousvia allonsle rĂ©aliserconnecteur arriĂšre [6] qui permet dâavoir accĂšs Ă une souduregrande avecpartie des fonctionnalitĂ©s. Pour utiliser notre connecteur, il nous faut souder des fils surdessus.
Les 30 fils de couleurs différentes Les pins du connecteur
afin que lâon puisse distinguer les pins
adjacentes
Nous allons souder les 30 pins. Il est possible pour plus de facilité de ne souder que les pins concernés, mais le tuto se reposera sur les 30 pins [7].
- Couper et dénuder 30 fils
- Chauffer les fers Ă souder Ă 350° (pas trop sinon lâĂ©tain fond mal)
- Prendre le fer Ă souder et plaquer fermement le fil au pin, puis approcher lâĂ©tain pour le faire fondre grĂące au flux.
OnBrasure de deux pins adjacentes
3.TUTO: Script de la GoPro
La GoPro Hero 3+S a pour avantage de pouvoir lancer un script présent sur la carte SD dÚs son allumage. Nous allons configurer la caméra et écrire le script.
Etape 1:
Allumer la camĂ©ra et se munierendre dedans 30les filsparamĂštres. Chercher lâoption «One Button» et la configurer sur OFF.
Configurer au passage la résolution souhaitée pour les souderphotos auxet 30 pins.vidéos
Etape:Etape 2:
OnPour souhaitele rĂ©aliserscript desde sĂ©quencesla vidĂ©os et/ou photos. En rĂ©alisant un systĂšme qui puisse aller en profondeur sur une longue durĂ©e,GoPro, il faut aussienregistrer le fichier sous extension â.ashâ . Il est disponible sur notre GitHub [4]. Le script que nous avons Ă©crit permet de prendre une vidĂ©o et trois photos avant de redĂ©marrer. Disposer de ce script dans la racine de la carte SD/crĂ©er un dossier AUTOEXEC qui contiendra le fichier [8]. Enregistrer le fichier sous le nom «autoexec.ash»
Commandes |
Utilisation |
sleep x |
Rendre la camĂ©ra inactive pendant x secondes. Temps dâattente |
t app appmode video |
Passage en mode vidéo de la caméra |
t app appmode photo |
Passage en mode photo |
t app button shutter PR |
Enclenchement du bouton dĂ©clencheur pour prendre une photo, prendre une vidĂ©o/arrĂȘter une vidĂ©o |
Il est intéressant de programmer les séquences en tenant en compte de la batterie et de la capacité de stockage de la caméra afin de pouvoir enregistrer les données sur toute la durée.
La camĂ©ra GoPro Hero 3+S possĂšde un port pour une carte SD. AvecPour notrela carteGoPro SDHero3+S, nous disposons de 64Gb,64G nouset calculantdâune batterie dâenviron 10 000A. En prenant en compte la taille moyenne d'dâune photo (12MPX) et celledâune d'uneseconde de vidĂ©o d'une(en seconde.1080p), on peut calculer combien de temps peut tenir notre prototype.
Taille en ko | 1 photo | vidéo (1 sec) |
GoPro Hero 3+S | 4000 | 5000 |
Il s'agit d'une approximation, la taille pouvant varier en fonction des photos.
Etape:
On testcalcule lesainsi pinspar duapproximation connecteurle afin d'ĂȘtre certainnombre de la fonctionnalitĂ© des ports. Avec un multimĂštre, on fait passer une tension entre deux pins. On recherche le pin qui permet d'allumer la camĂ©ra. Une fois la camĂ©ra allumĂ©, elle devra lancer son script automatiquement et s'Ă©teindre par la suite comme programmĂ©.
Etape:
Une foisjour que nous pouvons connectertenir l'Arduinosous Ă lâeau tout en enregistrant des donnĂ©es avec la GoPro,formule:
(CapacitĂ© de la carte unSD) fichier/ sous( le nom(nombre de 'autoexec.ash'photos par jour)*(taille dâune photo) + (temps de vidĂ©o en seconde par jour)*(taille dâune seconde de vidĂ©o) )
Le calcul peut se faire sur une durĂ©e dâun mois ou bien dâun an.
Par exemple, pour 10 secondes de vidĂ©os et qui24 contientphotos lespar instructions.jour, cela Pournous ĂȘtrefait:
64000000/(24*40000 que+ 10*5000) = 438,36 soit environ 438 jours, Ă©quivalent Ă environ 14 mois.
Il est aussi possible de calculer la durée en fonction de la consommation de la caméra lit[9].
4.TUTO: Assemblage du prototype
Maintenant que nous disposons de tous les Ă©lĂ©ments dont nous avons besoin, nous pouvons brancher le script,tout. nousOn crĂ©erons de mĂȘme un dossier du nom "AUTOEXEC" qui contiendra le mĂȘme fichier.
Ensuite, nous relions le toutbranche Ă lalâArduino GoPro et programmons l'arduino afin qu'il allument la camĂ©ra Ă des intervalles. Les scripts sont disponblesNANO sur le GitHub.pin A0 et le pin GND aux pins de la masse et du bouton dâalimentation (respectivement le pin 30 et le pin 19) [10].
GrĂące au programme Ă©crit pour lâArduino NANO, nous avons programmĂ© des sĂ©quences dâallumage de la camĂ©ra. Nous avons maintenant une camĂ©ra qui prend trois photos toutes les 30 secondes dix fois de suite.
Branchement finalMontage de notrela prototype.Gopro Larelié GoProà l'Arduino Nano
5. Alternative: ESP32-Cam
ESP32-Cam
Pour utiliser une carte SD avec un ESP32-CAM, il est alimentĂ©nĂ©cessaire de la formater en FAT32 (Attention, mĂȘme si la carte SD fait plus de 4Go, lâESP32-CAM ne sait pas gĂ©rer plus avec le port intĂ©grĂ©)
Programmation dâune sĂ©quence de test pour lâESP32-CAM :
- Connexion de lâESP32-CAM avec une cable usb-ttl Ă traverslâordinateur :
o Broche rx sur u0t
o Broche tx sur u0r
o GND sur GND
o 5v sur 5v
o Relier les pinsbroches (1IO0 et GND
Récupérer le code disponible pour prendre une photo:
ou un équivalent de vidéo, en réalité plusieurs photos par secondes:
AprĂšs cela, il ne reste plus quâĂ tĂ©lĂ©verser le code sur lâESP32-CAM, si la connexion ne sâeffectue pas directement, appuyer sur le bouton de reset du microcontrĂŽleur.
Afin dâafficher les messages envoyĂ©es par la carte en dĂ©bug, ouvrir la console sĂ©rie intĂ©grĂ©e de lâIDE et choisir une vitesse de transfert de 115200.
Le code pour photo rĂ©alise une photo Ă chaque allumage ou redĂ©marrage de la carte et celui-ci pour la tension).âvidĂ©oâ prend 10 images par secondes dans la configuration actuelle jusquâau dĂ©branchement de la carte.
Pour comprendre plus en dĂ©tail le fonctionnement des scripts, je vous conseille lâarticle sur lâESP32-CAM en rĂ©fĂ©rence [11].
6. Références:
RĂ©fĂ©rence de lâESP32:
[0] https://www.adafruit.com/product/3405
TĂ©lĂ©chargement de lâIDE:
[1] https://www.arduino.cc/en/software
RĂ©fĂ©rence sur les modes de lâESP32 pour le code:
[2] https://letmeknow.fr/fr/blog/142-tutoriel-les-sleep-modes-de-lesp32
Lien vers notre GitHub:
[3] https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera
Lien pour alimentation de lâArduino:
[4]https://idehack.com/alimenter-larduino-nano/
Lien pour branchement ESP32:
[5] https://learn.adafruit.com/adafruit-huzzah32-esp32-feather/power-management
Lien vers le modĂšle du connecteur Herobus:
[6] https://www.digikey.fr/en/products/detail/jae-electronics/DD1P030MA1/1283154
Lien vers les descriptions des pins du connecteur arriÚre de la caméra:
[7] https://mewpro.cc/en/2014/10/14/herobus-pinout-of-gopro-hero-3-black/
Référence autoexec scripts:
[8] https://github.com/KonradIT/autoexechack
Lien vers les informations concernant le connecteur herobus:
[10] https://github.com/KonradIT/gopro-herobus-sdk/blob/master/diyprojects.md
Lien vers le site de Camdo sur la batterie des caméras:
[9] https://cam-do.com/pages/power-consumption-by-gopro-camera-model
Lien vers lâarticle sur lâESP32-Cam :
[11] https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/