# 📹 UE LU1SXARE - CURIOUS

Atelier de Recherche Encadré CURIOUS-Info

# Jour 1 23.02.2023



# Contexte et objectifs de l'Atelier

Des recherches sont nécessaires pour répondre aux nombreuses questions posées sur les réponses des écosystèmes et espèces des fonds marins au changement climatique et aux impacts d’activités humaines. Ces recherches font appel au développement de nouveaux outils d’observation in situ miniaturisés, autonomes et à coûts limités pour pouvoir être largement partagés. Des caméras et des capteurs intégrés à des caissons étanches permettent notamment d’étudier les fluctuations microclimatiques et de décrire comment les espèces font face aux évènements les plus extrêmes. Des dispositifs déployés lors d'expéditions récentes en grande profondeur sont transférés pour les milieux littoraux dans le cadre du projet de recherche participative MOOREV (CNRS-MITI et Fondation de France).

L'atelier de Recherche Encadré CURIOUS se déroule sous forme projets dédiés à l’analyse d’images sous-marines acquises sur le littoral, ou au développement des méthodes d'acquisition pour les rendre plus accessibles. Les groupes de projet peuvent choisir d'explorer au FabLab les possibilités offertes par les technologies actuelles open source, notamment le pilotage de caméras reconditionnées par une interface de type Arduino nano ou ESP32 pour une autonomie de plusieurs jours à plusieurs semaines. Les groupes de projet utiliseront différents logiciels pour calibrer et analyser des vidéos et photos sous-marines, construire une base de donnée de reconnaissance d’espèces, et élaborer des tutos pour permettre à d’autres utilisateurs de contribuer à ces recherches.

# New Page



# New Page



# Projet -ScFo MOOREV_Timer-Camera

Objectif : Définition, évaluation et test d'une interface programmable et de l'alimentation pour l'acquisition de séquences photos et vidéo en autonome avec GoProHero3+ et LED Cree sur de longues durées (plusieurs semaines à mois) avec ESP32et/ou Arduino Nano.

Matériel fourni :

2 Arduino Nano   
1 GoPro HERO3+  
Carte interface CamDo TTL004  
BLINK CamDo Time Lapse Controller  
1 Carte mesure SENSE0161 DFRobot avec electrode pH  
3 LED CREE

# Projet-ScFo MOOREV-Stéréovision_Calibration

Objectif : Etablir un protocole d'acquisition d'image sous-marines en stéréovision.  
 Réalisation du banc de calibration pour deux caméras GoProHero3+ et tests pour application en imagerie sous-marine.

Matériel fourni :

2 GoPro HERO3+ reconditionnées 2022A et 2022B  
2 caissons 30m pour essai dans l'eau au FabLab  
1 Caisson GoBenthic GroupBinc avec Extension et Connecteur (pour mesures de taille, distance entre caméras)  
Echiquier ou mire à fabriquer au FabLab

# Projet-ScIn MOOREV-Stéréovision-Traitement_image

<main class="content-wrap card" id="bkmrk-objectif-%3A-etablir-u">Objectif : Etablir un protocole d'analyse d'image en stéréovision pour application en imagerie sous-marine

Traitement des images avec correction de distorsion - voir GitHub UnderSea (PFE Master SPI-ISI)

Tests cartes et caméra Raspberry : comparaison de différentes stratégies (Raspberry-Pi avec traitement embarqué versus GoPro Hero3+ et traitement différé).

Matériel fourni :

2 GoPro HERO3+ reconditionnées 2022A et 2022B + exemple de vidéos in situ

</main>

# Projet-ScIn MOOREV_ Trigger-Caméra Modulation Fréquence

<span style="text-decoration: underline; color: #000000; background-color: #ffffff;">**INTRODUCTION**</span>

<span style="color: #000000; background-color: #ffffff;">Le but de notre projet ARE est de déclencher une caméra Go Pro à l’aide d’une carte électronique Arduino dans le but de récolter des données. Les données qui seront les causes du déclenchement pourront <span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;">être le pH de l’eau, la température etc. Cela appelle aussi à une adaptation de la caméra au milieu </span><span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;">avec un processus d’éclairage</span><span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;"> la nuit, </span><span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;">un potentiel</span><span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;"> processus de détection des espèces. Le cœur du sujet résidera donc dans le fait de déclencher la caméra sous l’action de certaines conditions nécessaires. </span><span style="background-position: 0% 0%; background-repeat: repeat; background-attachment: scroll; background-image: none; background-size: auto; background-origin: padding-box; background-clip: border-box;">Le dessein final serait de mettre le système dans des conditions réelles en milieu extérieur, ce pendant plusieurs jours, afin d’en observer les résultats.</span></span>

<span style="color: #000000; background-color: #ffffff;"><span style="text-decoration: underline;">Objectif :</span> Intégration d'une carte mesures de pH + température et d'une Arduino pour la programmation du déclenchement d'une caméra Go Pro autonome.</span>

<span style="color: #000000; background-color: #ffffff;">Il s'agit d'interfaçage de l'Arduino avec les cartes de mesures de pH SENSE0161 (ou ADCM355), avec enregistrement des mesures sur carte microSD, pour pouvoir réveiller la caméra sur un seuil de mesure de température ou de pH.</span>

<span style="color: #000000; background-color: #ffffff;">Matériel fourni :</span>

<span style="color: #000000; background-color: #ffffff;">1 Arduino Nano</span>  
<span style="color: #000000; background-color: #ffffff;">1 carte support microSD </span>  
<span style="color: #000000; background-color: #ffffff;">2 Cartes mesure SENSE0161 DFRobot avec electrodes pH</span>  
<span style="color: #000000; background-color: #ffffff;">2 cartes mesures ADUCM355 WATER QUALITY SENSOR (T°C + pH ou REDOX(ORP)</span>  
<span style="color: #000000; background-color: #ffffff;">2 sondes T°C long. 30 cm - thermistance (Thermocoax)</span>

**<span style="text-decoration: underline;"><span style="color: #000000; background-color: #ffffff; text-decoration: underline;">Code pour déterminer la température</span></span>**

```C
/*
 * Created by ArduinoGetStarted.com
 *
 * This example code is in the public domain
 *
 * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-temperature-sensor
 */

#include <OneWire.h>
#include <DallasTemperature.h>

const int SENSOR_PIN = 13; // Arduino pin connected to DS18B20 sensor's DQ pin

OneWire oneWire(SENSOR_PIN);         // setup a oneWire instance
DallasTemperature tempSensor(&oneWire); // pass oneWire to DallasTemperature library

float tempCelsius;    // temperature in Celsius
float tempFahrenheit; // temperature in Fahrenheit

void setup()
{
  Serial.begin(9600); // initialize serial
  tempSensor.begin();    // initialize the sensor
}

void loop()
{
  tempSensor.requestTemperatures();             // send the command to get temperatures
  tempCelsius = tempSensor.getTempCByIndex(0);  // read temperature in Celsius
  tempFahrenheit = tempCelsius * 9 / 5 + 32; // convert Celsius to Fahrenheit

  Serial.print("Temperature: ");
  Serial.print(tempCelsius);    // print the temperature in Celsius
  Serial.print("°C");
  Serial.print("  ~  ");        // separator between Celsius and Fahrenheit
  Serial.print(tempFahrenheit); // print the temperature in Fahrenheit
  Serial.println("°F");

  delay(500);
}

```

<span style="text-decoration: underline; color: #000000; background-color: #ffffff;">**Code de déclenchement de caméra**</span>

```C++
#include <OneWire.h>

// Définir la broche de données pour le capteur DS18B20
#define ONE_WIRE_BUS 2

// Initialiser l'objet OneWire
OneWire oneWire(ONE_WIRE_BUS);

void setup() {
  // Ouvrir une communication série à 9600 bauds
  Serial.begin(9600);
}

void loop() {
  // Initialiser le capteur
  byte addr[8];
  if (!oneWire.search(addr)) {
    // Si aucun capteur n'est détecté, attendre
    delay(1000);
    return;
  }

  // Vérifier que le capteur est bien un DS18B20
  if (addr[0] != 0x28) {
    // Si ce n'est pas un DS18B20, attendre
    delay(1000);
    return;
  }

  // Initialiser la communication avec le capteur
  oneWire.reset();
  oneWire.select(addr);
  oneWire.write(0x44); // Lancer la conversion de température

  // Attendre la fin de la conversion
  delay(1000);

  // Lire la température
  oneWire.reset();
  oneWire.select(addr);
  oneWire.write(0xBE); // Demander la lecture de la température
  byte data[9];
  for (byte i = 0; i < 9; i++) {
    data[i] = oneWire.read();
  }
  int temp_raw = (data[1] << 8) | data[0];
  float temp_celsius = (float) temp_raw / 16.0;

  // Afficher la température
  Serial.print("Température: ");
  Serial.print(temp_celsius);
  Serial.println(" °C");

  // Attendre avant de recommencer
  delay(1000);
}

```

<span style="text-decoration: underline; color: #000000; background-color: #ffffff;">**Code pour avoir le pH**</span>

```C++
/*
 # This sample code is used to test the pH meter V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter
 # SKU    : SEN0161
*/
#define SensorPin A0            //pH meter Analog output to Arduino Analog Input 0
#define Offset 0.00            //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth  40    //times of collection
int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
int pHArrayIndex=0;
void setup(void)
{
  pinMode(LED,OUTPUT);
  Serial.begin(9600);
  Serial.println("pH meter experiment!");    //Test the serial monitor
}
void loop(void)
{
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval)
  {
      pHArray[pHArrayIndex++]=analogRead(SensorPin);
      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
      pHValue = 3.5*voltage+Offset;
      samplingTime=millis();
  }
  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
  {
    Serial.print("Voltage:");
        Serial.print(voltage,2);
        Serial.print("    pH value: ");
    Serial.println(pHValue,2);
        digitalWrite(LED,digitalRead(LED)^1);
        printTime=millis();
  }
}
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<5){   //less than 5, calculated directly statistics
    for(i=0;i<number;i++){
      amount+=arr[i];
    }
    avg = amount/number;
    return avg;
  }else{
    if(arr[0]<arr[1]){
      min = arr[0];max=arr[1];
    }
    else{
      min=arr[1];max=arr[0];
    }
    for(i=2;i<number;i++){
      if(arr[i]<min){
        amount+=min;        //arr<min
        min=arr[i];
      }else {
        if(arr[i]>max){
          amount+=max;    //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
        }
      }//if
    }//for
    avg = (double)amount/(number-2);
  }//if
  return avg;
}
```

Code de déclenchement avec pH

```C++
// Inclure la bibliothèque pour la communication série
#include <SoftwareSerial.h>

// Définir les broches de communication série
SoftwareSerial pHSerial(2, 3); // RX, TX

// Définir la broche de commande de la caméra
const int cameraPin = 4;

// Définir les constantes pour la calibration du capteur de pH
const float pH7Voltage = 2.5;
const float pH4Voltage = 1.98;
const float pH10Voltage = 3.07;

// Fonction pour convertir la tension en pH
float convertToPH(float voltage) {
  float pH = 7 - (voltage - pH7Voltage) / (pH7Voltage - pH4Voltage) * 3;
  return pH;
}

void setup() {
  // Ouvrir la communication série pour le débogage
  Serial.begin(9600);
  // Configurer la communication série pour le capteur de pH
  pHSerial.begin(9600);
  // Définir la broche de commande de la caméra en mode sortie
  pinMode(cameraPin, OUTPUT);
}

void loop() {
  // Lire la tension du capteur de pH
  pHSerial.write('R'); // Envoyer la commande pour lire la tension
  delay(1000); // Attendre la réponse
  while (pHSerial.available() < 4) {} // Attendre la réponse complète
  float voltage = (float)pHSerial.parseFloat() / 1000.0; // Convertir la réponse en voltage
  // Convertir la tension en pH
  float pH = convertToPH(voltage);
  // Afficher les résultats
  Serial.print("Voltage = ");
  Serial.print(voltage, 2);
  Serial.print(" V, pH = ");
  Serial.print(pH, 2);
  Serial.println();
  // Déclencher la caméra si le pH est inférieur à 7
  if (pH < 7) {
    digitalWrite(cameraPin, HIGH);
    delay(500);
    digitalWrite(cameraPin, LOW);
  }
  // Attendre une seconde avant de recommencer
  delay(1000);
}

```

⚠Les codes ci-dessus restent à tester, aucune manipulation n'a été faites (On n'a pas eu accès à notre boite ouin ouin <span style="color: #000000; background-color: #ffffff;">*🥲*</span><span style="color: #000000; background-color: #ffffff;">*🥲*</span><span style="color: #000000; background-color: #ffffff;">*).*</span>

#### **<span style="text-decoration: underline;"><span style="color: #000000; background-color: #ffffff;">*Mardi 11 Avril*</span></span>**

Nous avons eu accès à notre boîte et avons put effectuer quelques manipulations.

Nous avons testé le code pour la mesure du pH que l'on à trouvé sur le wiki de dfrobot; à l'aide d'une sonde de pH, de notre carte Arduino Nano, d'un Mac et de quelques branchements.

[![1D3193BA-DB60-4173-9485-CAAFD5338D89.JPG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/1d3193ba-db60-4173-9485-caafd5338d89.JPG)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/1d3193ba-db60-4173-9485-caafd5338d89.JPG):[![63A324D4-9473-4796-94C0-EBE80CA12DC8.JPG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/63a324d4-9473-4796-94c0-ebe80ca12dc8.JPG)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/63a324d4-9473-4796-94c0-ebe80ca12dc8.JPG)

<span style="color: #000000; background-color: #ffffff;">Comme les images ci-dessus l'indique, le code a fonctionner et la sonde est en capacité de prélever le pH d'un liquide. ( L'eau étant prélevée du robinet il est normal que le pH ne soit pas exactement équivalent à 7, mais qu'il s'en approche)</span>

<span style="color: #000000; background-color: #ffffff;">Nous avons aussi testé le code de prélèvement de température écrit précédemment, le code semble bien fonctionné, on reçoit bien des valeurs de Température dans le Serial Monitor cependant les valeurs ne semblent pas cohérentes probablement dût à un problème de conversion .</span>

<span style="color: #000000; background-color: #ffffff;">*![ED32A337-9236-4F4E-82E3-73069D604830.JPG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/ed32a337-9236-4f4e-82e3-73069d604830.JPG)*</span>

<span style="text-decoration: underline; color: #000000; background-color: #ffffff;">**BIBLIOGRAPHIE**</span>

1. <span style="color: #000000; background-color: #ffffff;">*Analog Input | Arduino Documentation*. [https://docs.arduino.cc/built-in-examples/analog/AnalogInput](https://docs.arduino.cc/built-in-examples/analog/AnalogInput). Consulté le 30 mars 2023.</span>
2. <span style="color: #000000; background-color: #ffffff;">*analogRead() - Arduino Reference*. *[https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/](https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/). Consulté le 30 mars 2023.*</span>
3. <span style="color: #000000; background-color: #ffffff;">*Nano | Arduino Documentation*. [https://docs.arduino.cc/hardware/nano](https://docs.arduino.cc/hardware/nano). Consulté le 30 mars 2023.</span>
4. <span style="color: #000000; background-color: #ffffff;">*SPI - Arduino Reference*. [https://www.arduino.cc/reference/en/language/functions/communication/spi/](https://www.arduino.cc/reference/en/language/functions/communication/spi/)</span><span style="color: #000000; background-color: #ffffff;">. Consulté le 30 mars 2023.</span>
5. <span style="color: #000000; background-color: #ffffff;">*WiFi101 - Arduino Reference*. [https://www.arduino.cc/reference/en/libraries/wifi101/](https://www.arduino.cc/reference/en/libraries/wifi101/). Consulté le 30 mars 2023.</span>
6. <span style="color: #000000; background-color: #ffffff;">« Arduino - Temperature Sensor | Arduino Tutorial ». *Arduino Getting Started*, [https://arduinogetstarted.com/tutorials/arduino-temperature-sensor](https://arduinogetstarted.com/tutorials/arduino-temperature-sensor). Consulté le 30 mars 2023.</span>
7. <span style="color: #000000; background-color: #ffffff;">*DS18B20 Temperature Sensor For Arduino - DFRobot Wiki*. [https://wiki.dfrobot.com/Gravity\_\_DS18B20\_Temperature\_Sensor\_\_Arduino\_Compatible\_\_V2\_SKU\_\_DFR0024](https://wiki.dfrobot.com/Gravity__DS18B20_Temperature_Sensor__Arduino_Compatible__V2_SKU__DFR0024). Consulté le 30 mars 2023.</span>
8. <span style="color: #000000; background-color: #ffffff;">SKU SEN0161 PH Meter. [https://wiki.dfrobot.com/PH\_meter\_SKU\_\_SEN0161\_](https://wiki.dfrobot.com/PH_meter_SKU__SEN0161_). Consulté le 7 avril 2023.</span>

# Projet-ScIn_MOOREV-Espèces-annotation

Objectif : Réaliser un tutoriel pour la construction d'une banque d'images sous-marines pour la reconnaissance d'espèces communes des habitats littoraux de Atlantique.  
  
Comparaison des images extraites des séries acquises par le projet MOOREV avec les bases de données biodiversité. Tests des logiciels d'annotation d'images (Roboflow ou autres logiciels Open Source).

# Le projet de recherches participatives MOOREV

Le projet MOOREV-Microclimats et nouveau Outils d’Observation des Réponses du Vivant sur les fonds marins est soutenu par la Mission Interdisciplinaire et des Initiatives Transverses du CNRS et également par la Fondation de France.

Le projet s’inspire d'instruments développés pour les recherches sur les fonds marins en grande profondeur pour construire des instruments pouvant être utilisés par un plus large public. Notre objectif est de permettre la co-conception et l’appropriation de modules d'observation miniaturisés et autonomes, dans un cadre de recherches participatives, pour partager les connaissances sur le rôle d'espèces constructrices d'habitats et la sensibilité aux perturbations climatiques.

L’intégration de caméras et de capteurs et l’adaptation de méthodes d’analyse d’image et des outils de l’IA sont développées avec le FabLab SU dans le cadre des Ateliers de Recherche Encadrés CURIOUS (Licence 1 Sorbonne Université).  
Le déploiement des équipements sur le terrain, puis l’analyse des données acquises, participent aux supports pédagogiques développés à la Station Marine de Concarneau dans le cadre des ateliers des Aires Marines Educatives animés par Esprit Nat'ure.

# 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](mailto: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.

**<u>Matériel:</u>**

<span style="font-weight: 400;">- GoPro Hero 3+S</span>

<span style="font-weight: 400;">- Adafruit ESP32 Feather \[0\]</span>

<span style="font-weight: 400;">- Arduino NANO</span>

<span style="font-weight: 400;">- Breadboard</span>

<span style="font-weight: 400;">- connecteur arrière de la caméra (connecteur herobus) modèle </span><span style="font-weight: 400;">DD1P030MA1</span>

<span style="font-weight: 400;">- Carte SD 64 Go (ou 32 Go)</span>

<span style="font-weight: 400;">- ESP32-Cam</span>

<span style="font-weight: 400;">- Multimètre (modèle utilisé TENMA 72-14620)</span>

**Le tuto se découpera en plusieurs parties:**

1. <span style="font-weight: 400;">IDE et programmation des microcontrôleurs</span>
2. <span style="font-weight: 400;">Réalisation de tests de consommations</span>
3. <span style="font-weight: 400;">Script de la GoPro</span>
4. <span style="font-weight: 400;">Assemblage du prototype</span>
5. <span style="font-weight: 400;">Alternative: ESP32-Cam</span>
6. <span style="font-weight: 400;">Références</span>

**Machines utilisées:**

**-** fer à souder

##### **1.TUTO: IDE et programmation des microcontrôleurs**

**Etape 1 :**

<span style="font-weight: 400;">On installe tout d’abord l’IDE Arduino (Integrated Development Environment) pour pouvoir programmer les scripts des deux cartes: </span>[<span style="font-weight: 400;">https://www.arduino.cc/en/software</span>](https://www.arduino.cc/en/software)<span style="font-weight: 400;"> \[1\] (lien pour le téléchargement).</span>

[![image-1684429458385.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/image-1684429458385.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/image-1684429458385.png)

*Interface du logiciel en question*

<span style="font-weight: 400;">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.</span>

**Etape 2:**

<span style="font-weight: 400;"> </span><span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">Le lien vers notre GitHub contient les scripts des deux cartes dans les deux fichiers ESP32 et Arduino \[2\] :</span>

[<span style="font-weight: 400;">https://github.com/ursusnocte/ARE\_Curious\_Info-Moorev-Timer-Camera</span>](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera)<span style="font-weight: 400;"> \[3\]</span>

<span style="font-weight: 400;">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.</span>

#####  

##### **2.TUTO: Réalisation de tests de consommations**

#####   


<span style="font-weight: 400;">On réalise maintenant les tests de consommations. Pour cela, nous allons utiliser le multimètre. Nous souhaitons récolter les données.</span>

**Etape 1: installation du logiciel**

 <span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">Modèle du multimètre utilisé dans notre cas : TENMA 72-14620</span>

<span style="font-weight: 400;">- Installer sur l’ordinateur le modèle du multimètre correspondant au modèle</span>

<span style="font-weight: 400;">- Connecter l’ordinateur et l’appareil grâce au câble fourni avec l‘appareil</span>

<span style="font-weight: 400;">- Régler le logiciel sur la connexion via USB, l’enregistrement est prêt à démarrer avec le bouton «Démarrer».</span>

<span style="font-weight: 400;">- Différentes options sont disponibles une fois l'enregistrement terminé: enregistrer les données dans un fichier ou les imprimer.</span>

[![image-1684429581795.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/image-1684429581795.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/image-1684429581795.png)

[<span style="color: #000000;">*Inteface du logiciel*</span>](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/image-1684429581795.png)

**Etape 2: Branchement**

 <span style="font-weight: 400;">Nous allons réaliser un branchement pour alimenter les cartes et mesurer les consommations. On enfiche les cartes sur une breadboard, puis on les alimente avec un générateur réglé sur 5V. On n’oublie pas le multimètre dans le branchement.</span>

<span style="font-weight: 400;">On alimente les cartes et on récolte les données sur une 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).</span>

<span style="font-weight: 400;">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\].</span>

<span style="font-weight: 400;">Pour l’ESP32 (avec une carte Adafruit HUZZAH32 - ESP32 Feather), connecter la broche USB au 5V et la masse à la broche GND \[5\].</span>

<span style="font-weight: 400;">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) !</span>

 [![arduinof.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/scaled-1680-/hR7arduinof.jpg) ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/hR7arduinof.jpg) [![branchement.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/scaled-1680-/Zg3branchement.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/Zg3branchement.jpg)

*<span style="font-weight: 400;">Branchements et circuit réalisés</span>*

On récolte les données de consommation pour les deux cartes à l'aide du logiciel sur ordinateur.

**Etape 3: analyse des données**

 <span style="font-weight: 400;">Nous analysons ensuite les données en utilisant les bibliothèques python Pandas et Matplotlib avec Python. </span>

<span style="font-weight: 400;">Pour pouvoir exploiter le fichier Excel sous Python, il ne faut pas oublier de remplacer les «,»</span>

<span style="font-weight: 400;"> par des «.».</span>

<span style="font-weight: 400;">Le fichier qui nous a permis de faire le graphique est disponible sur le GitHub sous le nom de «plot\_conso» \[3\].</span>

[![graphe.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/scaled-1680-/4FIgraphe.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-03/4FIgraphe.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.

<table border="1" id="bkmrk-%C2%A0-arduino-esp32-mean" style="border-collapse: collapse; width: 103.086%; height: 270.729px;"><tbody><tr style="height: 29.4583px;"><td style="width: 27.1829%; height: 29.4583px;">  
</td><td style="width: 40.2801%; height: 29.4583px;">**Arduino**  
</td><td style="width: 32.4959%; height: 29.4583px;">**ESP32**</td></tr><tr style="height: 29.4583px;"><td style="width: 27.1829%; height: 29.4583px;">**mean**</td><td style="width: 40.2801%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">6.1727 mA</span></td><td style="width: 32.4959%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">10.5101 mA</span></td></tr><tr style="height: 29.4583px;"><td style="width: 27.1829%; height: 29.4583px;">**standard deviation**</td><td style="width: 40.2801%; height: 29.4583px;">4.6997<span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">  
</span></td><td style="width: 32.4959%; height: 29.4583px;">11.8473 <span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">  
</span></td></tr><tr style="height: 29.4583px;"><td style="width: 27.1829%; height: 29.4583px;">**total time**</td><td style="width: 40.2801%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">5.0 min 18.0 s</span></td><td style="width: 32.4959%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">5.0 min 0.0 s</span></td></tr><tr style="height: 35.0625px;"><td style="width: 27.1829%; height: 35.0625px;">**total time consumption**</td><td style="width: 40.2801%; height: 35.0625px;">2981.44 mA

</td><td style="width: 32.4959%; height: 35.0625px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">4792.6 mA</span></td></tr><tr style="height: 29.4583px;"><td style="width: 27.1829%; height: 29.4583px;">**average consumption**</td><td style="width: 40.2801%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">22.2219 mW/h</span></td><td style="width: 32.4959%; height: 29.4583px;"><span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">37.8363 mW/h</span></td></tr></tbody></table>

**Etape 4: soudure des fils**

<span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Nous avons choisi de contrôler la caméra via le connecteur arrière \[6\] qui permet d’avoir accès à une grande partie des fonctionnalités. Pour utiliser notre connecteur, il nous faut souder des fils dessus.</span>

**[![image-1684430450355.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/image-1684430450355.jpg) ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/image-1684430450355.jpg)** [![image-1684430506024.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/image-1684430506024.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/image-1684430506024.jpg)

<span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Les 30 fils de couleurs différentes</span><span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Les pins du connecteur</span>

<span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">afin que l’on puisse distinguer les pins</span>

<span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="font-size: 11pt; font-family: Calibri,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">adjacentes </span>

 <span style="font-weight: 400;">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\]. </span>

<span style="font-weight: 400;">- Couper et dénuder 30 fils</span>

<span style="font-weight: 400;">- Chauffer les fers à souder à 350° (pas trop sinon l’étain fond mal)</span>

<span style="font-weight: 400;">- Prendre le fer à souder et plaquer fermement le fil au pin, puis approcher l’étain pour le faire fondre grâce au flux.</span>

[ ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/fils.jpg)[ ![soudage.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/soudage.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/soudage.jpg)

*Brasure de deux pins adjacentes*

##### **3.TUTO: Script de la GoPro**

<span style="font-weight: 400;"> </span><span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">[![GoPro.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/gopro.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/gopro.jpg)</span>

**Etape 1:**

 <span style="font-weight: 400;">Allumer la caméra et se rendre dans les paramètres. Chercher l’option «One Button» et la configurer sur OFF. </span>

<span style="font-weight: 400;">Configurer au passage la résolution souhaitée pour les photos et vidéos</span>

**Etape 2:**

<span style="font-weight: 400;">Pour le script de la GoPro, il faut enregistrer 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»</span>

<table id="bkmrk-commandes-utilisatio" style="width: 100%; height: 242.5px;"><tbody><tr style="height: 35.0625px;"><td style="width: 20.6179%; height: 35.0625px;"><span style="font-weight: 400;">Commandes</span>

</td><td style="width: 79.2792%; height: 35.0625px;"><span style="font-weight: 400;">Utilisation</span>

</td></tr><tr style="height: 35.0625px;"><td style="width: 20.6179%; height: 35.0625px;"><span style="font-weight: 400;">sleep x</span>

</td><td style="width: 79.2792%; height: 35.0625px;"><span style="font-weight: 400;">Rendre la caméra inactive pendant x secondes. Temps d’attente</span>

</td></tr><tr style="height: 57.4583px;"><td style="width: 20.6179%; height: 57.4583px;"><span style="font-weight: 400;">t app appmode video</span>

</td><td style="width: 79.2792%; height: 57.4583px;"><span style="font-weight: 400;">Passage en mode vidéo de la caméra</span>

</td></tr><tr style="height: 57.4583px;"><td style="width: 20.6179%; height: 57.4583px;"><span style="font-weight: 400;">t app appmode photo</span>

</td><td style="width: 79.2792%; height: 57.4583px;"><span style="font-weight: 400;">Passage en mode photo</span>

</td></tr><tr style="height: 57.4583px;"><td style="width: 20.6179%; height: 57.4583px;"><span style="font-weight: 400;">t app button shutter PR</span>

</td><td style="width: 79.2792%; height: 57.4583px;"><span style="font-weight: 400;">Enclenchement du bouton déclencheur pour prendre une photo, prendre une vidéo/arrêter une vidéo</span>

</td></tr></tbody></table>

<span style="font-weight: 400;">Il est intéressant de programmer les séquences en tenant en compte de la batterie et de la capacité de stockage de la carte SD. Pour la GoPro Hero3+S, nous disposons de 64G et d’une batterie d’environ 10 000A. En prenant en compte la taille d’une photo (12MPX) et d’une seconde de vidéo (en 1080p), on peut calculer combien de temps peut tenir notre prototype.</span>

<table border="1" id="bkmrk-taille-en-ko-1-photo" style="border-collapse: collapse; width: 100%; height: 58.9166px;"><tbody><tr style="height: 29.4583px;"><td style="width: 33.3051%; height: 29.4583px;">Taille en ko</td><td style="width: 33.3051%; height: 29.4583px;">1 photo </td><td style="width: 33.3077%; height: 29.4583px;">vidéo (1 sec)</td></tr><tr style="height: 29.4583px;"><td style="width: 33.3051%; height: 29.4583px;">GoPro Hero 3+S</td><td style="width: 33.3051%; height: 29.4583px;">4000</td><td style="width: 33.3077%; height: 29.4583px;">5000</td></tr></tbody></table>

<span style="font-weight: 400;">On calcule ainsi par approximation le nombre de jour que nous pouvons tenir sous l’eau tout en enregistrant des données avec la formule:</span>

<span style="font-weight: 400;">(Capacité de la carte SD) / ( (nombre de photos par jour)\*(taille d’une photo) + (temps de vidéo en seconde par jour)\*(taille d’une seconde de vidéo) )</span>

<span style="font-weight: 400;">Le calcul peut se faire sur une durée d’un mois ou bien d’un an.</span>

<span style="font-weight: 400;">Par exemple, pour 10 secondes de vidéos et 24 photos par jour, cela nous fait:</span>

<span style="font-weight: 400;">64000000/(24\*40000 + 10\*5000) = 438,36 soit environ 438 jours, équivalent à environ 14 mois.</span>

<span style="font-weight: 400;">Il est aussi possible de calculer la durée en fonction de la consommation de la caméra \[9\].</span>

##### **4.TUTO: Assemblage du prototype**

 <span style="font-weight: 400;">Maintenant que nous disposons de tous les éléments dont nous avons besoin, nous pouvons brancher le tout. On branche à l’Arduino NANO sur le 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\].</span>

<span style="font-weight: 400;">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.</span>

[![branchementfinal.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/branchementfinal.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/branchementfinal.jpg)

*Montage de la Gopro relié à l'Arduino Nano*

##### **5. Alternative: ESP32-Cam** 

**[![esp32cam.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/esp32cam.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/esp32cam.jpg)**

 *ESP32-Cam*

<span style="font-weight: 400;">Pour utiliser une carte SD avec un ESP32-CAM, il est 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é)</span>

<span style="font-weight: 400;">Programmation d’une séquence de test pour l’ESP32-CAM : </span>

<span style="font-weight: 400;">- Connexion de l’ESP32-CAM avec une cable usb-ttl à l’ordinateur :</span>

<span style="font-weight: 400;">o Broche rx sur u0t</span>

<span style="font-weight: 400;">o Broche tx sur u0r</span>

<span style="font-weight: 400;">o GND sur GND</span>

<span style="font-weight: 400;">o 5v sur 5v</span>

<span style="font-weight: 400;">o Relier les broches IO0 et GND</span>

<span style="font-weight: 400;">Dans le menu de sélection de la carte, choisir la carte “AI-Thinker ESP32-CAM” et le </span><span style="font-weight: 400;">port COM sur lequel est connecté l’ESP32.</span>

<span style="font-weight: 400;">Récupérer le code disponible pour prendre une photo:</span>

[<span style="font-weight: 400;">https://github.com/ursusnocte/ARE\_Curious\_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32\_CAM\_test\_photo/ESP32\_CAM\_test\_photo.ino</span>](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_photo/ESP32_CAM_test_photo.ino)<span style="font-weight: 400;"> </span>

<span style="font-weight: 400;">ou un équivalent de vidéo, en réalité plusieurs photos par secondes:</span>

[<span style="font-weight: 400;">https://github.com/ursusnocte/ARE\_Curious\_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32\_CAM\_test\_video/ESP32\_CAM\_test\_video.ino</span>](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera/blob/main/ESP32/ESP32_CAM_test_video/ESP32_CAM_test_video.ino)<span style="font-weight: 400;"> </span>

<span style="font-weight: 400;">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.</span>

<span style="font-weight: 400;">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. </span>

<span style="font-weight: 400;">Le code pour photo réalise une photo à chaque allumage ou redémarrage de la carte et celui-ci pour la “vidéo” prend 10 images par secondes dans la configuration actuelle jusqu’au débranchement de la carte.</span>

<span style="font-weight: 400;">Pour comprendre plus en détail le fonctionnement des scripts, je vous conseille l’article sur l’ESP32-CAM en référence \[11\]. </span>

##### **6. Références:**

<span style="font-weight: 400;">Référence de l’ESP32:</span>

<span style="font-weight: 400;">\[0\] </span>[<span style="font-weight: 400;">https://www.adafruit.com/product/3405</span>](https://www.adafruit.com/product/3405)

<span style="font-weight: 400;">Téléchargement de l’IDE:</span>

<span style="font-weight: 400;">\[1\] </span>[<span style="font-weight: 400;">https://www.arduino.cc/en/software</span>](https://www.arduino.cc/en/software)

<span style="font-weight: 400;">Référence sur les modes de l’ESP32 pour le code:</span>

<span style="font-weight: 400;">\[2\] </span>[<span style="font-weight: 400;">https://letmeknow.fr/fr/blog/142-tutoriel-les-sleep-modes-de-lesp32</span>](https://letmeknow.fr/fr/blog/142-tutoriel-les-sleep-modes-de-lesp32)

<span style="font-weight: 400;">Lien vers notre GitHub:</span>

<span style="font-weight: 400;">\[3\] </span>[<span style="font-weight: 400;">https://github.com/ursusnocte/ARE\_Curious\_Info-Moorev-Timer-Camera</span>](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera)<span style="font-weight: 400;"> </span>

<span style="font-weight: 400;">Lien pour alimentation de l’Arduino:</span>

<span style="font-weight: 400;">\[4\]</span>[<span style="font-weight: 400;">https://idehack.com/alimenter-larduino-nano/</span>](https://idehack.com/alimenter-larduino-nano/)

<span style="font-weight: 400;">Lien pour branchement ESP32:</span>

<span style="font-weight: 400;">\[5\] </span>[<span style="font-weight: 400;">https://learn.adafruit.com/adafruit-huzzah32-esp32-feather/power-management</span>](https://learn.adafruit.com/adafruit-huzzah32-esp32-feather/power-management)

<span style="font-weight: 400;">Lien vers le modèle du connecteur Herobus:</span>

<span style="font-weight: 400;">\[6\] </span>[<span style="font-weight: 400;">https://www.digikey.fr/en/products/detail/jae-electronics/DD1P030MA1/1283154</span>](https://www.digikey.fr/en/products/detail/jae-electronics/DD1P030MA1/1283154)

<span style="font-weight: 400;">Lien vers les descriptions des pins du connecteur arrière de la caméra:</span>

<span style="font-weight: 400;">\[7\] </span>[<span style="font-weight: 400;">https://mewpro.cc/en/2014/10/14/herobus-pinout-of-gopro-hero-3-black/</span>](https://mewpro.cc/en/2014/10/14/herobus-pinout-of-gopro-hero-3-black/)

<span style="font-weight: 400;">Référence autoexec scripts:</span>

<span style="font-weight: 400;">\[8\] </span>[<span style="font-weight: 400;">https://github.com/KonradIT/autoexechack</span>](https://github.com/KonradIT/autoexechack)

<span style="font-weight: 400;">Lien vers les informations concernant le connecteur herobus:</span>

<span style="font-weight: 400;">\[10\] </span>[<span style="font-weight: 400;">https://github.com/KonradIT/gopro-herobus-sdk/blob/master/diyprojects.md</span>](https://github.com/KonradIT/gopro-herobus-sdk/blob/master/diyprojects.md)

<span style="font-weight: 400;">Lien vers le site de Camdo sur la batterie des caméras:</span>

<span style="font-weight: 400;">\[9\] </span>[<span style="font-weight: 400;">https://cam-do.com/pages/power-consumption-by-gopro-camera-model</span>](https://cam-do.com/pages/power-consumption-by-gopro-camera-model)

<span style="font-weight: 400;">Lien vers l’article sur l’ESP32-Cam :</span>

**<span style="font-weight: 400;">\[11\] </span>[<span style="font-weight: 400;">https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/</span>](https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/))**

# Journal de bord MOOREV-Timer-Camera ScFo

##### **Journal de bord:**

**06/03:**

\- Pour notre système il faut que l'on choisisse entre l'Arduino NANO et l'ESP32 en se basant sur leur consommation en énergie. Il faut que l'on puisse mesurer la consommation en énergie sur différentes séquences et différentes durée.

**09/03: \[séance Fablab\]**

\- Durant la séance nous avons discuté du projet et en quoi le Fablab peut nous aider. Réflexion sur les tests et les protocoles à réaliser pour la consommation de la batterie avec les deux cartes, avec recherches sur la mise en veille des cartes. Recherches sur les aspects de la GoPro Hero3+ et comment la manipuler avec un programme implanté. Réflexion sur les durées et les séquences d'enregistrements pour la caméra.

\- Visite de l'atelier Fablab partie électronique, avec présentation du matériel mis à disposition. Préparation du matériel pour la prochaine séance au Fablab.

**10/03: \[séance Fablab\]**

\- Point et vu d'ensemble sur tout le matériel que nous possédons.

\- Point sur la façon de relier le micro processeur à la GoPro. Recherches sur le port Hero de la GoPro Hero 3+ qui nous permet de conclure sur l'utilisation du port Hero pour contrôler de manière filaire la caméra. Recherche de références afin de pouvoir trouver et se procurer un branchement compatible au port Hero.

**Liens:**

Autre possibilité pensée de connecter la GoPro qui nécessite la modification de la caméra (idée mise de côté):

[https://hackaday.io/project/12108-gopro-hero-4-wired-control](https://hackaday.io/project/12108-gopro-hero-4-wired-control)

[https://www.youtube.com/watch?v=mpPfk4sLb3I](https://www.youtube.com/watch?v=mpPfk4sLb3I)

Informations sur le port Hero Bus de la GoPro Hero:

[https://wiki.logre.eu/index.php/GObotPRO](https://wiki.logre.eu/index.php/GObotPRO "Port Hero de la GoPro")

**17/03: \[séance Fablab\]**

\- Réunion afin de préparer les tests de consommation d'énergie entre l'Arduino Nano et l'ESP32. Acquisition du matériel nécessaire, et codage des cartes.

\- Tests (code) du nombre de cycles par minutes possible sur l'Arduino qui va permettre d'allumer et d'éteindre la caméra.

\- Emprunt d'un ESP32 qu'on a du souder au labo électronique.

\- Création d'une page GitHub afin de déposer notre code et recherches sur le mode hibernation de l'esp32 ainsi que la façon de récupérer les données d'un multimètre sur l'ordinateur afin d'enregistrer les données.

**24/03: \[séance Fablab\]**

\- Prise de mesures des consommations.

\- Programmation de l'ESP32 en mode basse consommation, mise à disposition du code sur Github. Réalisation d'un montage sur planche de prototypage pour mesurer la consommation des microcontrôleurs avec un multimètre.

([Lien vers le GitHub](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera))

\- Téléchargement d'un logiciel lié au multimètre afin de le connecter à ce dernier pour récolter en temps réel les données mesurées.

\- Réalisation des tableaux Excel avec les résultats.

**31/03: \[Séance Fablab\]**

\- Réception du matériel nécessaire (ESP32-CAM et port Hero) pour connecter le microcontrôleur à la GoPro.

\- On procède ensuite à la soudure de fils sur le port de chaque pins afin de pouvoir accéder aux pins

\- Réflexion sur la programmation de l'ESP32-Cam

\- Calcul sur tableau Excel des différentes séquences possible en prenant en compte la capacité de stockage de la carte SD et de la taille d'une vidéo/photo.

Tableau de séquence dans le répertoire GitHub: [Lien vers le GitHub](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera)

**04/04: \[Séance Fablab\]**

\- Continuation de la soudure des pins sur le connecteur

\- Programmation de l'ESP32 Cam et test des photos. Mesure de leur capacité de stockage photos et vidéos. Rencontre d'un problème: ESP32 cam -&gt; focal fixe par défaut avec le capteur OV2640, à remplacer par un autre capteur plus adapté ([lien vers le capteur](https://www.amazon.fr/Waveshare-Resolution-OV5640-Camera-Board/dp/B078MLFDSL?th=1)).

\- Test des pins du connecteur et confirmations des ports (port 19 pour allumage de la caméra). Test lancer un script sur carte SD en allumant la GoPro.

**07/04: \[Séance Fablab\]**

**-** Nous avons constaté que la soudure n'a pas tenue et que des broches ont été cassé lors de la manipulation. Nous réfléchissons donc à un autre moyen de souder des fils moins rigides, ou bien à une alternative.

\- Le but de la séance était d'allumer la GoPro à l'aide de l'arduino et du port Hero, et de vérifier que le script se lançait à l'allumage de la caméra. Nous rencontrons toutefois un problème concernant la lecture du script, que la caméra ne détecte pas.

**14/04: \[Séance Fablab\]**

-Tests du fonctionnement du script sur la GoPro. Préparation de la présentation à l'oral et des comptes rendus concernant l'UE.

Le script lancé est disponible sur le répertoire GitHub sous le nom de 'autoexec.ash'.

([Lien vers le GitHub](https://github.com/ursusnocte/ARE_Curious_Info-Moorev-Timer-Camera))

(Une fois que nous pouvons connecter l'Arduino à la GoPro, 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 de la carte un fichier sous le nom de 'autoexec.ash' et qui contient les instructions. )

**18/04: \[Séance Fablab\]**

Dernière séance avant le rendu des travaux. Nous avons testé une dernière fois le lancement du script sur la GoPro en branchant le tout sur l'Arduino. Nous avons fait face à quelques problème au niveau des branchements qui n'allumait pas la caméra. Le problème a été résolu à la fin grâce à l'aide d'un chercheur présent au Fablab.

Le prototype fonctionne, il ne reste qu'a programmer la bonne séquence sur le script de la GoPro.

# Journal de bord MOOREV-Stéréovision_Calibration

### **Journal de bord:**

#### Vendredi 7 avril:

-On a imprimer préalablement des échiquier pour la calibration.

-On a utiliser les 2 Gopros Heroes 3+ pour prendre des photos.

-On a placé les caméras et l'échiquier à une distance de 20cm

[![image-1680882422696.jpeg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/image-1680882422696.jpeg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/image-1680882422696.jpeg)

-On a pris des photos de l'échiquier dans plusieurs angles.

-On les a trier et séparer par photo droite et gauche,

[![image-1680882237015.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/image-1680882237015.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/image-1680882237015.png)[![image-1680882252619.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/image-1680882252619.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/image-1680882252619.png)

-On a calibré les photos grâce a l'application "Stereo Camera Calibrator" de MatLab

[![Capture d’écran 2023-04-09 à 16.55.30.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/capture-decran-2023-04-09-a-16-55-30.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/capture-decran-2023-04-09-a-16-55-30.png)

#### Mardi 11 avril:

-On refait de la calibration, on réduit la marge d'erreur de la reprojection pour être environ en dessous de 10 pixel[![Capture d’écran 2023-04-11 à 16.32.46.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/capture-decran-2023-04-11-a-16-32-46.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/capture-decran-2023-04-11-a-16-32-46.png)[![IMG_4527.JPG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/img-4527.JPG)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/img-4527.JPG)