OcéanoBox
January to May 2020 - Sorbonne Université, Paris
The RoMarin course consisted of designing, from scratch, an underwater drone (or Remotely Operated Vehicle), equipped with sensors for exploring the sea. This project-based learning module was inspired by the SeaPearch project from MIT. The intent for out ROV, named OceanoBox, was for it to carry out several measurements directly in the marine environment, but also to take a water sample at a given depth in order to analyze the characteristics of the water. Examples of properties of seawater to analyze are turbidity, salinity, dissolved oxygen, pH, and conductivity, which could give us information about the types of organic or inorganic particles that inhabit the water, or on the amount of pollution. Given that our course was interrupted by the pandemic, the ROV was modeled and simulated remotely.






Étude et conception d’un robot léger pour l’exploration sous-marine
RoMarin 2020 – L2 Ingénierie mécanique Sorbonne Université*
Auteure : Emma Ricci-De Lucca
Le projet RoMarin est un module d’enseignement proposé en seconde année de Licence de Mécanique à la Faculté des Sciences et Ingénierie de Sorbonne Université. Chaque année, jusqu’à 16 équipes de 2 étudiants, doivent concevoir, en partant de zéro, un drone sous-marin de type ROV (Remotely Operated Vehicle) équipé de capteurs pour l’exploration de fonds marins. Ce module d’apprentissage par projet a été crée par Didier Lucor en 2008 en s’inspirant librement du projet SeaPearch du MIT. Ce projet permet de développer des connaissances et des compétences transversales en ingénierie, associant la mécanique des fluides, l’acoustique, la robotique et l’électronique.
Système de prélèvement d'eau
L’OcéanoBox est constituée d’un ensemble de boîtiers contenant différents capteurs destinés à effectuer plusieurs mesures directement en milieu marin, mais également à prélever un échantillon d’eau à une profondeur donnée dans le but d’analyser les caractéristiques de l’eau de mer. Ces propriétés de l’eau de mer que nous souhaitons analyser, par exemple la turbidité, la salinité, l'oxygène dissous, le pH et la conductivité, pourraient nous donner des informations sur le types de particules organiques ou inorganiques qui peuplent l’eau, ou sur le niveau de pollution de cette eau. Voici un tableau de différents tests qu'on pourrait conduire et la quantité d'eau correspondante requise, acquis via la base de données du gouvernement de l'Australie et d'Eurofins. Pour faire les cinq premières analyses, il faut prélever au moins 300 mL d'eau. Ce volume est important à garder pour les dimensions de la boîte de prélèvement d'eau.
N.B. Il faut prélever l'eau en montant et pas en descendant.

Systèmes existants (académiques et industriels)

Tableau d’analyse et de volume d’eau
Après avoir fait une étude bibliographique et une synthèse écrite, j'ai comparé les différents systèmes d'échantillonnage de l'eau, y compris le Van Dorn[1], Van Dorn Spin-Off par Kendall Thacker[2], le Niskin[3], le Kemmerer[4], la Rosette [5] et les Électrovannes [6] du groupe de l'année dernière. Les systèmes du Van Dorn, Niskin et Kemmerer sont composé d’un tuyau rigide avec deux bouchons réunis avec un élastique qui passe à travers le tube. Pour le déclenchement, chaque bouchon est attaché à la poignée avec un autre élastique, ce qui les libère lorsqu'il est pressé par un poids enfilé à travers la corde. Quand le poids frappe la manche, le mécanisme de déclenchement relâche les deux fils des bouchons et les bouchons se ferment, scellant le tube et capturant l'eau à l'intérieur. Le Van Dorn Spin-Off et la Rosette, d’autre part, sont des systèmes électroniques. Pour le Spin-Off, au lieu d'utiliser un poids pour déclencher les bouchons, un solénoïde est programmé avec Arduino pour les libérer. La Rosette est simplement un grand châssis avec plusieurs boîtes Niskin à grande échelle qui peuvent être déclenchées à la pression ou profondeur souhaitée. J’ai continué à travailler sur le modèle commencé par le groupe de l'année précédente (électrovannes) parce qu’il nécessite peu de matériaux, il peut être contrôler par l’Arduino et est facile à assembler. J'ai aussi choisi de concevoir le Van Dorn Spin-Off parce qu’il peut être facilement contrôler par l’Arduino, nécessite moins de composants électriques et il y a déjà un exemple de modèle fonctionnel.
1. Modèle Électrovannes
Le groupe de l’année dernière avait déjà commencé à envisager un boîtier. Elles ont proposé d’utiliser deux électrovannes. Il consiste d’un tuyau rigide qui sert à emprisonner l’eau pour le prélèvement et il est vissé entre les deux électrovannes. Le tuyau rond contiendrait les composants électriques et est vissé aux électrovannes aussi avec deux bouchons. Grâce à le capteur de pression, on peut calculer la profondeur du ROV et activer le prélèvement à la profondeur souhaitée. Contrôler par l'Arduino, la valve de l'un des deux électrovannes s'ouvre, laisse entrer l'eau et se referme. Le volume de 300 mL rend le système polyvalent et nous permet de faire une vingtaine d’analyses par exemple l’azote totale, le total des solides en suspension et la demande biochimique d’oxygène.

Composants




Arduino Code électrovannes
// code pour le commande des électrovannes
#include <SD.h>
#include <SD.h>
File myFile;
const int relay_enable = 2; // changer le numéro du port analogique
const float water_density = 997; // (kg/m^3)
const float sea_density = 1020; // la densité de l'eau de mer de surface varie de 1020 à 1029 (kg/m^3)
const float ocean_density = 1027; // (kg/m^3)
const float gravity = 9.08665; // (m/s^2)
const float Patm = 101.325; // pression atmosphérique (kPa)
float d = 0; // profondeur (m)
const int pressureSensor = A1; // changer le pin
float pressure_read = 0;
float pressure = 0;
const float water_density = 997; // (kg/m^3)
const float sea_density = 1020; // la densité de l'eau de mer de surface varie de 1020 à 1029 (kg/m^3)
const float ocean_density = 1027; // (kg/m^3)
const float gravity = 9.08665; // (m/s^2)
const float Patm = 101.325; // pression atmosphérique (kPa)
float d = 0; // profondeur (m)
const int pressureSensor = A1; // changer le pin
float pressure_read = 0;
float pressure = 0;
void setup() {
// électrovannes
pinMode(relay_enable, OUTPUT); // définir le pin à la sortie
Serial.begin(9600);
// électrovannes
pinMode(relay_enable, OUTPUT); // définir le pin à la sortie
Serial.begin(9600);
// carte SD
if (SD.begin(10)) {
Serial.println("Initialisation de la carte SD");
}
else {
Serial.println("Echec lors de l'initialisation de la carte SD");
return;
}
// Ecriture
myFile = SD.open("data.txt", FILE_WRITE);
myFile.println("L'ecriture du fichier commence maintenant: ");
myFile.close();
}
if (SD.begin(10)) {
Serial.println("Initialisation de la carte SD");
}
else {
Serial.println("Echec lors de l'initialisation de la carte SD");
return;
}
// Ecriture
myFile = SD.open("data.txt", FILE_WRITE);
myFile.println("L'ecriture du fichier commence maintenant: ");
myFile.close();
}
void loop() {
// capteur de pression absolue MPX4250AP
// Affichage ecran
pressure_read = analogRead(pressureSensor);
delay (1000);
Serial.print("Pressure (mbar): ");
pressure = ((2.6733 * pressure_read) + 890.66) / 10; // conversion à kPa (1mbar=0.1kPa)
Serial.println(pressure);
// Ecriture dans un fichier txt
myFile = SD.open("data.txt", FILE_WRITE);
myFile.print("Pression (mbar): ");
myFile.println(pressure);
myFile.close();
// calculer la profondeur
d = (pressure - Patm)/(sea_density*gravity); // pression=Patm+(densité*pesanteur*profondeur)
// capteur de pression absolue MPX4250AP
// Affichage ecran
pressure_read = analogRead(pressureSensor);
delay (1000);
Serial.print("Pressure (mbar): ");
pressure = ((2.6733 * pressure_read) + 890.66) / 10; // conversion à kPa (1mbar=0.1kPa)
Serial.println(pressure);
// Ecriture dans un fichier txt
myFile = SD.open("data.txt", FILE_WRITE);
myFile.print("Pression (mbar): ");
myFile.println(pressure);
myFile.close();
// calculer la profondeur
d = (pressure - Patm)/(sea_density*gravity); // pression=Patm+(densité*pesanteur*profondeur)
// l'électrovanne s'ouvre lorsqu'elle atteint une certaine profondeur puis se referme
if (d == 3) {
Serial.print("Relay ON");
digitalWrite(relay_enable,LOW); // le relais est actif bas, il s'allume donc lorsque nous mettons le pin sur LOW
delay (1000);
}
else {
Serial.print("Relay OFF");
digitalWrite(relay_enable,HIGH);
delay(1000);
}
}
if (d == 3) {
Serial.print("Relay ON");
digitalWrite(relay_enable,LOW); // le relais est actif bas, il s'allume donc lorsque nous mettons le pin sur LOW
delay (1000);
}
else {
Serial.print("Relay OFF");
digitalWrite(relay_enable,HIGH);
delay(1000);
}
}
Montage
1. Pour aider avec l'assemblage, suivez l'animation et le CAO illustrés ci-dessus.
2. Les deux ouvertures des électrovannes étant parallèles, vissez le tuyau rigide en PVC entre les deux. Ce tuyau en PVC rigide contiendra l'échantillon d'eau.
3. Suivez le diagramme Fritzing et branchez l'Arduino Uno, le capteur de pression, le relais à 4 canaux et les piles 9V aux deux électrovannes.
4. Testez le code Arduino, ajustez le nombre du pin et assurez-vous que le système se déclenche à la pression souhaitée.
5. Insérez les composants électriques dans le tuyau souple.
6. Mettez les deux bouchons d'un diamètre extérieur de 55 mm et avec un trou de 31,8 mm (le même diamètre qu'en bas des électrovannes) sur les extrémités du tuyau souple et connectez le tuyau souple, avec les bouchons, sur le fond des électrovannes, en s'assurant que cette connexion est étanche.
7. Pour monter le système sur le ROV Nouvelle Génération regardez la figure ci-dessous. Vous pouvez monter ce système sur l'un des côtés les plus courts du ROV sur le côté opposé des hélices.
2. Modèle Solénoïde
Le modèle avec le solénoïde, qui était inspiré par le Van Dorn Spin-Off, consiste d’un tuyau rigide qui sert à emprisonner l’eau avec deux bouchons réunis avec un élastique qui passe à travers le tube. Chaque bouchon a aussi un autre élastique qui est lié autour la goupille de poussée du solénoïde. Contrôler par l'Arduino, la goupille se rétracte et lâche les deux élastiques et les bouchons se ferment, scellant le tube et capturant l'eau à l'intérieur. Encore une fois, le capteur de pression permet de calculer la profondeur et activer le prélèvement à la profondeur souhaitée.

Composants




Arduino Code solénoïde
// code pour le commande du système solénoïde
File myFile;
const float water_density = 997; // (kg/m^3)
const float sea_density = 1020; // la densité de l'eau de mer de surface varie de 1020 à 1029 (kg/m^3)
const float ocean_density = 1027; // (kg/m^3)
const float gravity = 9.08665; // (m/s^2)
const float Patm = 101.325; // pression atmosphérique (kPa)
float d = 0; // depth (m)
const int pressureSensor = A1; // changer le pin
float pressure_read = 0;
float pressure = 0;
const int solenoid = 9; // changer le pin
const float sea_density = 1020; // la densité de l'eau de mer de surface varie de 1020 à 1029 (kg/m^3)
const float ocean_density = 1027; // (kg/m^3)
const float gravity = 9.08665; // (m/s^2)
const float Patm = 101.325; // pression atmosphérique (kPa)
float d = 0; // depth (m)
const int pressureSensor = A1; // changer le pin
float pressure_read = 0;
float pressure = 0;
const int solenoid = 9; // changer le pin
void setup() {
// carte SD
if (SD.begin(10)) {
Serial.println("Initialisation de la carte SD");
}
else {
Serial.println("Echec lors de l'initialisation de la carte SD");
return;
}
// Ecriture
myFile = SD.open("data.txt", FILE_WRITE);
myFile.println("L'ecriture du fichier commence maintenant: ");
myFile.close();
// carte SD
if (SD.begin(10)) {
Serial.println("Initialisation de la carte SD");
}
else {
Serial.println("Echec lors de l'initialisation de la carte SD");
return;
}
// Ecriture
myFile = SD.open("data.txt", FILE_WRITE);
myFile.println("L'ecriture du fichier commence maintenant: ");
myFile.close();
// solénoïde
pinMode(solenoid, OUTPUT); // définir le pin à la sortie
pinMode(solenoid, OUTPUT); // définir le pin à la sortie
}
void loop() {
// capteur de pression absolue MPX4250AP
// Affichage ecran
pressure_read = analogRead(pressureSensor);
delay (1000);
Serial.print("Pressure (mbar): ");
pressure = ((2.6733 * pressure_read) + 890.66) / 10; // conversion à kPa (1mbar=0.1kPa)
Serial.println(pressure);
// Ecriture dans un fichier txt
myFile = SD.open("data.txt", FILE_WRITE);
myFile.print("Pression (mbar): ");
myFile.println(pressure);
myFile.close();
// calculer la profondeur
d = (pressure - Patm)/(sea_density*gravity); // pression=Patm+(densité*pesanteur*profondeur)
// capteur de pression absolue MPX4250AP
// Affichage ecran
pressure_read = analogRead(pressureSensor);
delay (1000);
Serial.print("Pressure (mbar): ");
pressure = ((2.6733 * pressure_read) + 890.66) / 10; // conversion à kPa (1mbar=0.1kPa)
Serial.println(pressure);
// Ecriture dans un fichier txt
myFile = SD.open("data.txt", FILE_WRITE);
myFile.print("Pression (mbar): ");
myFile.println(pressure);
myFile.close();
// calculer la profondeur
d = (pressure - Patm)/(sea_density*gravity); // pression=Patm+(densité*pesanteur*profondeur)
// le solénoïde se déclenche lorsqu'il atteint une certaine profondeur
if (d == 3) {
digitalWrite(solenoid, HIGH); // solénoïde ON
delay(1000); // attendez 1 seconde
}
else {
digitalWrite(solenoid, LOW); // solénoïde OFF
delay(1000); // attendez 1 seconde
}
}
if (d == 3) {
digitalWrite(solenoid, HIGH); // solénoïde ON
delay(1000); // attendez 1 seconde
}
else {
digitalWrite(solenoid, LOW); // solénoïde OFF
delay(1000); // attendez 1 seconde
}
}
Montage
1. Ce système a été inspiré par Kendall Thacker « Water Sampling Device for your SeaPearch ROV. »
2. Pour faciliter l'assemblage, suivez l'animation et le CAO illustrés ci-dessus.
3. Avec le capuchon en caoutchouc, vissez une vis à crochet au centre au dessus (large) et au dessous (étroit). Répétez l'opération pour le deuxième capuchon en caoutchouc.
4. Connectez un élastique entre en bas des deux vis à crochet à l'intérieur du tuyau en PVC rigide de sorte que l'extrémité la plus large des bouchons (au dessus) se trouve à l'extérieur du tuyau rigide en PVC et les deux extrémités plus étroites (au dessous) des bouchons sont à l'intérieur du tuyau rigide.
5. Ensuite, assemblez le support en aluminium au centre du tuyau rigide en PVC et fixez-le avec deux colliers.
6. Suivez le diagramme Fritzing et connectez l'Arduino Uno, la pile 9V, le transistor de puissance, la diode et la résistance au solénoïde pousser-tirer.
7. Testez le code Arduino, ajustez le nombre du pin et assurez-vous que le système se déclenche à la pression souhaitée.
8. Insérez le solénoïde dans l'un des trous du support en aluminium et placez les composants électriques dans une boîte étanche.
9. Fixez une extrémité d'une ficelle au sommet du crochet à vis en haut du capuchon en caoutchouc et fixez l'autre extrémité de la même ficelle à la goupille de poussée du solénoïde pousser-tirer qui ressort du trou de support en aluminium. Répétez cette étape avec l'autre ficelle et fixez-la du deuxième capuchon en caoutchouc à la même tige de poussée.
10. Pour monter le système sur le ROV Nouvelle Génération, regardez la figure ci-dessous. Vous pouvez monter ce système sur l'un des côtés les plus courts du véhicule sur le côté opposé des hélices.
11. Pour une version mécanique dans laquelle le système est plongé dans l'eau à la main, attachez simplement une corde au tuyau rigide en PVC et modifiez le code de telle sorte que l'échantillon soit prélevé après un certain temps, au lieu d'une pression souhaitée.
Conclusion & Perspectives
Ce semestre, mon partenaire et moi avons construit la structure de base du ROV Nouvelle Génération et également ajouter les capteurs de base. Cependant, avant de pouvoir continuer à développer le dispositif, nous avons été obligés de rentrer et de rester à la maison en raison de l'épidémie. Depuis lors, nous avons travaillé sur deux projets distincts, tout en gardant les objectifs de l'OcéanoBox.
J'ai choisi le Van Dorn Spin-Off (modèle à solénoïde), les électrovannes (modèle commencé par le groupe l'année précédente) et le Rosette Water Sampler (plusieurs échantillons d'eau). J'ai pu concevoir avec succès une conception CAO, un diagramme de composants électroniques Fritzing, le code Arduino, une animation d'assemblage et toutes les dimensions et instructions nécessaires à sa construction pour les deux premiers modèles mentionnés. Les deux systèmes sont prêts à être construit.
Cependant, je n'ai pas pu terminer le modèle du Rosette Water Sampler car le développement d'un système pour plusieurs échantillons était trop lourd étant donné la petite taille du ROV. De plus, les matériaux nécessaires au système de déclenchement, tels que le servomoteur linéaire et la carte LAC, sont trop chers. Si j'avais la chance de continuer à travailler et à tester ce projet, j'aimerais certainement continuer à travailler sur ce système, peut-être en tant que projet propre, séparé du ROV NG. Le châssis pourrait être personnalisé pour s'adapter aux bouteilles d'échantillonnage d'eau et pourrait également être construit dans une plus grande taille. Le système complet pourrait être envisagé tel un ROV et être équipé d'hélices et d'un système télécommandé.
Je n'ai pas non plus été en mesure de construire et de tester physiquement les modèles de solénoïde et d'électrovannes en personne, compte tenu des conditions particulière dans lesquelles a été mené le projet (crise sanitaire COVID-19). Néanmoins, les conceptions et les graphiques virtuels devraient donner une bonne idée de la façon de procéder.
Une autre difficulté consistait à déterminer à quelle profondeur le ROV pouvait descendre. En collaboration avec ma partenaire, Juliette Smal, elle a développé un boîtier de capteurs. Les capteurs inclus mesurent la turbidité, la salinité, l'oxygène dissous, le pH et la conductivité. Ces capteurs sont très sensibles et ne peuvent donc fonctionner que jusqu'à une certaine profondeur, ce qui à son tour limite la profondeur à laquelle le système de prélèvement d'eau peut prélever de l'eau. En fin de compte, nous avons supposé que le ROV NG avec le boîtier de capteurs pouvait descendre à environ 5 m et programmé le code Arduino de telle sorte que le système se déclenche et prélève un échantillon d'eau à environ 3 m de profondeur.
Si j'avais plus de temps, j'introduirais une fonctionnalité WiFi ou bluetooth pour que l'on puisse soit le contrôler sans fil, soit visualiser les données des capteurs en temps réel pendant que le ROV fonctionne de manière autonome. Cette dernière option implique une interface dans laquelle les données sont traitées et affichées en direct.
En ce qui concerne l'acquisition des données, il pourrait également être intéressant de profiter de l'eau qui serait échantillonnée et de l'utiliser pour mener des recherches sur le volume d'eau ainsi que sur les organismes dont elle proviendrait.
Bibliographie
[1] Van Dorn
[2] Van Dorn Spin-Off
[3] Niskin
[4] Kemmerer
[5] Rosette
[6] Idée originale RoMarin 2019 Électrovannes