📹 UE LU1SXARE - CURIOUS
Atelier de Recherche Encadré CURIOUS-Info
- Contexte et objectifs de l'Atelier
- Projet -ScFo MOOREV_Timer-Camera
- Projet-ScFo MOOREV-Stéréovision_Calibration
- Projet-ScIn MOOREV-Stéréovision-Traitement_image
- Projet-ScIn MOOREV_ Trigger-Caméra Modulation Fréquence
- Projet-ScIn_MOOREV-Espèces-annotation
- Le projet de recherches participatives MOOREV
- Documentation MOOREV-Timer-Camera ScFo
- Journal de bord MOOREV-Timer-Camera ScFo
- Journal de bord MOOREV-Stéréovision_Calibration
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.
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
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
Projet-ScIn MOOREV_ Trigger-Caméra Modulation Fréquence
INTRODUCTION
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 être le pH de l’eau, la température etc. Cela appelle aussi à une adaptation de la caméra au milieu avec un processus d’éclairage la nuit, un potentiel 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. 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.
Objectif : 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.
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.
Matériel fourni :
1 Arduino Nano
1 carte support microSD
2 Cartes mesure SENSE0161 DFRobot avec electrodes pH
2 cartes mesures ADUCM355 WATER QUALITY SENSOR (T°C + pH ou REDOX(ORP)
2 sondes T°C long. 30 cm - thermistance (Thermocoax)
Code pour déterminer la température
/*
* 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);
}
Code de déclenchement de caméra
#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);
}
Code pour avoir le pH
/*
# 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
// 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 🥲🥲).
Mardi 11 Avril
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.
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)
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 .
BIBLIOGRAPHIE
-
Analog Input | Arduino Documentation. https://docs.arduino.cc/built-in-examples/analog/AnalogInput. Consulté le 30 mars 2023.
-
analogRead() - Arduino Reference. https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/. Consulté le 30 mars 2023.
-
Nano | Arduino Documentation. https://docs.arduino.cc/hardware/nano. Consulté le 30 mars 2023.
-
SPI - Arduino Reference. https://www.arduino.cc/reference/en/language/functions/communication/spi/. Consulté le 30 mars 2023.
-
WiFi101 - Arduino Reference. https://www.arduino.cc/reference/en/libraries/wifi101/. Consulté le 30 mars 2023.
-
« Arduino - Temperature Sensor | Arduino Tutorial ». Arduino Getting Started, https://arduinogetstarted.com/tutorials/arduino-temperature-sensor. Consulté le 30 mars 2023.
-
DS18B20 Temperature Sensor For Arduino - DFRobot Wiki. https://wiki.dfrobot.com/Gravity__DS18B20_Temperature_Sensor__Arduino_Compatible__V2_SKU__DFR0024. Consulté le 30 mars 2023.
- SKU SEN0161 PH Meter. https://wiki.dfrobot.com/PH_meter_SKU__SEN0161_. Consulté le 7 avril 2023.
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
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.
Matériel:
- GoPro Hero 3+S
- Adafruit ESP32 Feather [0]
- Arduino NANO
- Breadboard
- connecteur arrière de la caméra (connecteur herobus) modèle DD1P030MA1
- Carte SD 64 Go (ou 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 l’IDE Arduino (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
- Installer sur l’ordinateur le modèle du multimètre correspondant au modèle
- Connecter l’ordinateur et l’appareil grâce au câble fourni avec l‘appareil
- Régler le logiciel 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 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.
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).
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) !
Branchements et circuit réalisés
On récolte les données de consommation pour les deux cartes à l'aide du logiciel sur ordinateur.
Etape 3: analyse des données
Nous analysons ensuite les données en utilisant les bibliothèques python Pandas et Matplotlib avec Python.
Pour pouvoir exploiter le fichier Excel sous Python, il ne faut pas oublier de remplacer les «,»
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 4: soudure des fils
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.
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.
Brasure 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 rendre dans les paramètres. Chercher l’option «One Button» et la configurer sur OFF.
Configurer au passage la résolution souhaitée pour les photos et vidéos
Etape 2:
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»
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 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.
Taille en ko | 1 photo | vidéo (1 sec) |
GoPro Hero 3+S | 4000 | 5000 |
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:
(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) )
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 24 photos par jour, cela nous fait:
64000000/(24*40000 + 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 [9].
4.TUTO: Assemblage du prototype
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].
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.
Montage de la Gopro relié à l'Arduino Nano
5. Alternative: ESP32-Cam
ESP32-Cam
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é)
Programmation d’une séquence de test pour l’ESP32-CAM :
- Connexion de l’ESP32-CAM avec une cable usb-ttl à l’ordinateur :
o Broche rx sur u0t
o Broche tx sur u0r
o GND sur GND
o 5v sur 5v
o Relier les broches IO0 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 “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/
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://www.youtube.com/watch?v=mpPfk4sLb3I
Informations sur le port Hero Bus de la GoPro Hero:
https://wiki.logre.eu/index.php/GObotPRO
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.
- 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
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 -> focal fixe par défaut avec le capteur OV2640, à remplacer par un autre capteur plus adapté (lien vers le capteur).
- 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'.
(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
-On a pris des photos de l'échiquier dans plusieurs angles.
-On les a trier et séparer par photo droite et gauche,
-On a calibré les photos grâce a l'application "Stereo Camera Calibrator" de MatLab
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