Skip to main content

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:

  1. IDE et programmation des microcontrĂŽleurs
  2. RĂ©alisation de tests de consommations
  3. Script de la GoPro
  4. Assemblage du prototype
  5. Alternative: ESP32-Cam
  6. 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)

.

image-1684429458385.pngimage-1684429458385.png

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.

branchement.jpgimage-1684429581795.png

Inteface du logiciel

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.

mĂȘme

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) !

                                                 arduinof.jpg   esp32f.jpgbranchement.jpg

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 :

3:

- Comparer les résultats obtenus: faire une moyenneanalyse des données

récolté

 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].

graphe.pnggraphe.png

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:

composants.jpg

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.

chacun des pins du port.



fils.jpgimage-1684430450355.jpg             image-1684430506024.jpg

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.

 

   soudage.jpg

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.

GoPro.jpg

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:

nous devons nous assurer que la GoPro lit bien le script présent sur la carte SD dÚs l'allumage. Pour cela, nous allons déposer dans la racine

(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:

sûr

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].

bien

 

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.

branchementfinal.jpg 

Branchement finalMontage de notrela prototype.Gopro Larelié GoProà l'Arduino Nano

 

5. Alternative: ESP32-Cam

esp32cam.jpg

         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

Dans le menu de sĂ©lection de la masse,carte, 19choisir la carte “AI-Thinker ESP32-CAM” et le port COM sur lequel est connectĂ© l’ESP32.

Récupérer le code disponible pour prendre une photo:

https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_photo/ESP32_CAM_test_photo.ino 

ou un équivalent de vidéo, en réalité plusieurs photos par secondes:

https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_video/ESP32_CAM_test_video.ino 


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/