Skip to main content

Ateliers de développement de la station de mesure de l'eau (5 jours)

Mission Otez l’eau l’eau 

Depuis quelques mois, un changement soudain dans la qualitéqualité de l'eau a étéété signalésignalé dans plusieurs gions du monde, ce qui soulèsoulève des inquiéinquiétudes. Les premièpremières enquêenquêtes révèrévèlent une contamination progressive de l'eau, liéliée àà des faillances dans les systèsystèmes de traitement et de rejets des eaux uséusés par une usine. Face àà cette menace environnementale et sanitaire, l'association Savoirs Vivants, et l’l’IUT de Haguenau, ont étéété missionnémissionné par les services secrets françfrançais pour monter une ééquipe de roboticiens et de chercheurs pour identifier l’l’usine àà la source de ces contaminations.  

En tant que nouveaux membres de ce consortium de chercheurs votre premièpremière mission sera de vous trouver un nom d’éd’équipe pour ussir àà communiquer facilement avec le reste des autres chercheurs et votre chef d’éd’équipe.  

Votre mission consiste àà concevoir, assembler, et programmer la Station AquaLife pour qu'elle soit capable de tecter les contaminants dans l'eau avec préprécision et efficacitéefficacité. Pour cela, vous utiliserez des technologies de pointe en robotique, en informatique et en analyse chimique.

  

La Station AquaLife que vous allez concevoir pour collecter et analyser des ééchantillons d'eau en temps el, fournira des donnédonnées essentielles pour identifier les sources d’d’eau contaminécontaminé et ainsi trouver la source de ces contaminations.

roulement du projet :

  • Lundi : Conception 3D - Initiez-vous au design assistéassisté par ordinateur pour concevoir la pièpièce manquante de la Station AquaLife, permettant d’d’afficher les donnédonnées sur l’él’écran.
  • Mardi : Assemblage et Pratique - Construisez le prototype de votre Station AquaLife en assemblant les capteurs et les circuits cessaires.
  • Mercredi : Programmation Fonctionnelle - ImpléImplémentez le code informatique qui permettra àà la Station AquaLife de collecter et d'analyser les donnédonnées.
  • Jeudi : Tests chimiques - Testez votre Station AquaLife avec diffédifférents ééchantillons d'eau récoltérécoltés autours des usines cibléciblés.
  • Vendredi : Analyse et PréPrésentation - InterpréInterprétez les donnédonnées collectécollectées, identifiez les tendances et prépréparez une préprésentation de vos sultats. Cette éétape sera cruciale pour identifier la source de la contamination.

En participant àà la Mission Otez l’l’eau, vous apportez une contribution concrèconcrète àà la solution d'un problèproblème environnemental d’d’envergure. Vous acquerrez des compécompétences en robotique, en analyse de donnédonnées et en travail d'ééquipe, tout en aidant àà protéprotéger la ressource la plus préprécieuse de notre planèplanète : l'eau. PrêPrêts àà relever ce fi vital ?

PréPréparation des MatéMatériaux / Kits

Station de mesure de l'eau

Liste du matématériel de la station :  Liste_materiel.pdf

Connexion des capteurs sur la carte d'extension DRF0762 : connexion_capteurs_carte_DFR0762.pdf

Arduino

Installation de la carte ESP2 et des bibliothèbibliothèques pour la station d'eau dans l'IDE Arduino : Arduino_Installation_Cartes_Bibliotheques.pdf

Programme Arduino complet de la station d'eau :  2024_stage_collegiens_v5_Station_Eau.ino

Ci-dessous, le programme simplifiésimplifié :

/// CODE SIMPLIFIE SANS TDS ET TURBIDITE
// #include <Arduino.h>
#include <U8g2lib.h> // by oliver <olikraus@gmail.com> testétesté 2.34.22
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>

//****************************************************************************************//
//           Constante de temps et broches de connexion des capteurs                      //
//****************************************************************************************//

const int pause_affichage_ms = 100;      // temps de pause d'affichage en milliseconde

// #define TDS_Sensor_Pin_Num A2           // TDS sensor on Analog pin Ax
// #define Turbidity_Sensor_Pin_Num A3     // Turbidity sensor on Analog pin Ax
#define pH_Sensor_Pin_Num A4            // pH sensor on Analog pin Ax
#define DS18S20_Pin_Num_v2 D2           // DS18B20 sensor on digital pin Dx                      <======= Zone d'affectation des capteurs et actionneurs
#define DHT_Sensor_Pin_Num D6           // DHT on Digital pin Dx

//****************************************************************************************//

//DonnéDonnées et configuration pour le capteur DHT
#define ref_DHT DHT22                     // référéférence du DHT (DHT11, DHT22...)
char Hum_DHT[8], Temp_DHT[8];
DHT dht(DHT_Sensor_Pin_Num, ref_DHT);

// DonnéDonnées pour le capteur pH meter (v2) ==> site DFRobot
const int numMeasure = 10;
char pH_2[8];
float offset_pH2 = 0;    // valeur standard = -1.8 avec la carte pH alimentéalimentée en 3.3V et -2.5 avec carte alimentéalimentée en 5V

// DonnéDonnée TDS meter (v1)
// char TDS_1[8];
// float temperature = 25;

// DonnéDonnées pour le capteur de turbiditéturbidité
// char Turbi_volt[8], NTU_strg[8];
// float Turbi_val = 0;

// Configuration pour le capteur de tempétempérature DS18B20 (v2)
OneWire ds(DS18S20_Pin_Num_v2);  //on digital pin 2
char Temp_DS_2[8];


// Configuration de l'afficheur SSD1315
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(/* rotation=*/ U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);    //Low spped I2C
/*
  U8g2lib Example Overview:
    Frame Buffer Examples: clearBuffer/sendBuffer. Fast, but may not work with all Arduino boards because of RAM consumption
    Page Buffer Examples: firstPage/nextPage. Less RAM usage, should work with all Arduino boards.
    U8x8 Text Only Example: No RAM usage, direct communication with display controller. No graphics, 8x8 Text only.   
*/

void get_DHT()
{
  float h = 0.0;
  float t = 0.0;

  h = dht.readHumidity();
  dtostrf(h, 5, 1, Hum_DHT);      // conversion digital to string 
  t = dht.readTemperature();
  dtostrf(t, 5, 1, Temp_DHT);

  Serial.print("DHT ==>    HumiditéHumidité : ");
  Serial.print(Hum_DHT);
  Serial.print("    TempéTempérature (°°C) : ");
  Serial.println(Temp_DHT);

}

void get_pH_2()
{
  int buf[10],temp;
  
  for(int i=0;i<numMeasure;i++)       //Get 10 sample value from the sensor for smooth the value
  { 
    buf[i]=analogRead(pH_Sensor_Pin_Num);
    delay(10);
  }
  
  for(int i=0;i<numMeasure-1;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<numMeasure;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }

  unsigned long int sumValue = 0;  //Store the average value of the sensor feedback
  
  for(int i=2;i<numMeasure-2;i++)                      //take the average value of 6 center sample
    sumValue+=buf[i];
  
  float phValue=(float)sumValue*5.0/4096/(numMeasure-4);    //convert the analog into millivolt
//  phValue=3.5*phValue + offset_pH2;                       //convert the millivolt into pH value avec carte pH alimentéalimentée en 5v
  phValue=5.3*phValue + offset_pH2;                         //convert the millivolt into pH value avec carte pH alimentéalimentée en 3.3v
  
  dtostrf(phValue, 5, 1, pH_2);
 
  Serial.print("pH_2 value: ");  
  Serial.println(phValue,2);

}

// void get_TDS_1()
// {
//   int TDS_ADC = 0;
//   float TDS_volt = 0;
//   float compensationCoefficient = 1.0+0.02*(temperature-25.0);    //temperature compensation formula: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));
//   float compensationVolatge = 0;  //temperature compensation
//   float TDS_val = 0;

//   TDS_ADC = analogRead(TDS_Sensor_Pin_Num);

//   TDS_volt = TDS_ADC/4096.0*5.0;
//   compensationVolatge = TDS_volt/compensationCoefficient;
//   TDS_val=(133.42*compensationVolatge*compensationVolatge*compensationVolatge - 255.86*compensationVolatge*compensationVolatge + 857.39*compensationVolatge)*0.5; //convert voltage value to tds value

//   dtostrf(TDS_val, 5, 1, TDS_1);  

//   Serial.print("TDS_1 valADC (0 àà 4095) : ");
//   Serial.print(TDS_ADC);
//   Serial.print("    voltage (V) : ");
//   Serial.print(TDS_volt);
//   Serial.print("    ppm : ");
//   Serial.println(TDS_val);

// }

// void get_Turbidity()
// {
//   int sensorValue = 0;
//   float voltage = 0, NTU = 0;

//   sensorValue = analogRead(Turbidity_Sensor_Pin_Num);   // read the input on analog pin
  
//   voltage = sensorValue * (5.0 / 4096);             // Convert the analog reading (which goes from 0 - 4095) to a voltage (0 - 5V)

//   dtostrf(voltage, 5, 1, Turbi_volt);

//   NTU = -1120.4*voltage*voltage + 5742.3*voltage - 4352.9;   //

//   dtostrf(NTU, 5, 0, NTU_strg);

//   Serial.print("Turbidity (volt) : "); // print out the value you read:
//   Serial.print(voltage); // print out the value you read:
//   Serial.print("    Turbidity (NTU) : "); // print out the value you read:
//   Serial.println(NTU); // print out the value you read: 

//   Turbi_val = voltage; 
// }

void get_TempDS_2()
{
  //returns the temperature from one DS18S20 in DEG Celsius
  
  byte data[12];
  byte addr[8];

  if (!ds.search(addr))
  {
    //no more sensors on chain,reset search
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
  }
  
  Serial.print("ROM =");
  for(int i = 0; i < 8; i++) 
  {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }
  Serial.println();

  if (OneWire::crc8(addr,7)!=addr[7])
  {
    Serial.println("CRC is not valid!");
  }
  
  // the first ROM byte indicates which chip
  byte type_s;
  switch (addr[0]) 
  {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      break;
  } 

  if (addr[0] != 0x10 && addr[0] != 0x28)
  {
    Serial.print("Device is not recognized");
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);   //start conversion, with parasite power on at the end
  
  byte present = ds.reset();
  ds.select(addr);
  ds.write(0xBE);     //ReadScratchpad
  
  for(int i=0; i<9; i++) //weneed9bytes
  {
    data[i]=ds.read();
  }
  ds.reset_search();

  byte MSB=data[1];
  byte LSB=data[0];

  float tempRead=((MSB<<8)|LSB);    //using two's compliment
  float TemperatureSum = tempRead/16;
  
//  return TemperatureSum;

  dtostrf(TemperatureSum, 5, 1, Temp_DS_2);
  Serial.print("Temperature DS (en °°C) : ");
  Serial.println(TemperatureSum);

}



void setup()
{
  // put your setup code here, to run once:
  
  Serial.begin(115200);
  
  Serial.println("**********************************************");
  Serial.println("Setup Serial monitor OK");

  u8g2.begin();
  Serial.println("Setup éécran OLED OK");

  dht.begin();

  pinMode(pH_Sensor_Pin_Num,INPUT);             // Set pH sensor pin to input mode
  // pinMode(Turbidity_Sensor_Pin_Num, INPUT);     // Set the turbidity sensor pin to input mode

  Serial.println("End of setup");
  Serial.println("**********************************************");
}

void loop()
{
  // put your main code here, to run repeatedly:   
 
  get_DHT();
  get_pH_2();

  // affichage des donnédonnées

  u8g2.setFont(u8g2_font_ncenB08_tr);   // choose a suitable font

//****************************************************************************************//
// éécran OLED SSD1315 :
// fonction U8g2.drawStr(colonne,ligne,string)

  u8g2.clearBuffer();                     // clear the internal memory
  u8g2.drawStr(0,10,"Station eau");       // write something to the internal memory  
  u8g2.drawStr(0,25,"Humidity DHT :");    // affichage du texte "Humidity DHT:"
  u8g2.drawStr(92,25,Hum_DHT);            // affichage de la valeur de l'humiditéhumidité
  u8g2.drawStr(0,30,"Temp DHT :");        // affichage du texte "Temp DHT :"
  u8g2.drawStr(68,30,Temp_DHT);           // affichage de la valeur de tempétempérature fournie par le capteur DHT            <== zone àà modifier (remplacer xx par des valeurs)
  u8g2.drawStr(0,35,"pH :");              // affichage du texte "pH :"
  u8g2.drawStr(20,35,pH_2);               // affichage de la valeur du pH
  u8g2.sendBuffer();                      // transfer internal memory to the display

  delay(pause_affichage_ms);

//****************************************************************************************//
  
  // get_TDS_1();
  // get_Turbidity();
  get_TempDS_2();

//****************************************************************************************//

  u8g2.clearBuffer();                       // clear the internal memory
  // u8g2.drawStr(0,25,"TDS :");               // affichage du texte "TDS :" 
  // u8g2.drawStr(35,25,TDS_1);                // affichage de la valeur de conductivitéconductivité TDS
  // u8g2.drawStr(0,37,"Turbidity (V) :");     // affichage du texte "Turbidity (V) :"
  // u8g2.drawStr(80,37,Turbi_volt);           // affichage de la valeur de turbiditéturbidité en volt                 <== zone àà modifier
  u8g2.drawStr(0,49,"Temp DS :");           // affichage du texte "Temp_DS :" àà la position
  u8g2.drawStr(57,49,Temp_DS_2);            // affichage de la valeur de tempétempérature du DS18B20
  u8g2.sendBuffer();

//****************************************************************************************//


//****************************************************************************************//
//                              Code pour rer une LED                                   //
//****************************************************************************************//

// Affciher un message d'alerte selon la valeur de la turbiditéturbidité 

/*
  float seuil = x;                    // valeur du seuil

  if (Turbi_val > seuil)              // comparaison par rapport au seuil
  {
    u8g2.drawStr(0,62,"Eau limpide !");
    u8g2.sendBuffer();
  }
  else
  {
    u8g2.drawStr(0,62,"Eau trouble !");
    u8g2.sendBuffer();
  }
*/


  delay(pause_affichage_ms);


  Serial.println();

}

Calibration du capteur pH

Programme Arduino pour la calibration du capteur pH : 2024_calibration_materiel_capteur_pH.ino

ProcéProcédure de calibration matématériel du capteur pH : Procedure_Calibration_Materiel_Capteur_pH.pdf

Jour 1 - Conception 3D

Mission Mission :

Une dernièdernière pièpièce est manquante pour la alisation de la station. Vous allez devoir la concevoir et la produire sur mesure en utilisant un logiciel de conception 3D (TINKERCAD), ce qui permettra d'obtenir le boitier de la station AquaLife.

Conception Tinkercad    T78-12G-PM4

TINKERCAD est un logiciel de conception 3D simple et efficace. Ce tutoriel vous aidera àà l’l’utiliser : https://innovation.iha.unistra.fr/books/2-fablab-activites-logiciels/page/initiation-3d-tinkercad

Ouvrir Tinkercad àà partir de la barre de recherche Windows de votre ordinateur.  

Dans l'onglet 3, prenez l'outil nomménommé «« boîboîtes »», ensuite faites-le glisser sur le plan de construction.

Une fenêfenêtre apparaîapparaîtra, vous permettant de gler diffédifférents paramèparamètres de cette fenêfenêtre (rayon, éétapes, longueur, largeur et hauteur) pour voir ce qui se passe.

Vous êêtes sormais prêprêt(e) àà conceptualiser les pièpièces cessaires pour finaliser notre station AquaLife. Celle-ci doit àà la fin ressembler àà la photo ci-dessous.

image.png    image.png

CréCréation de la dernièdernière pièpièce de la station : Pour commencer, il vous faut un rectangle avec les mesures suivantes : Longueur = 126 mm ; Largeur = 54 mm ; Hauteur = 3 mm.

image.png

Nous devons crécréer un emplacement pour l’l’afficheur. Pour ce faire, nous avons besoin d’d’un rectangle de perçperçage. Donnez-lui les dimensions suivantes : Longueur = 25 mm ; Largeur = 18 mm ; Hauteur = 4 mm.

image.png

placez-le sur votre rectangle rouge.

image.png

Pour assembler les deux, utilisez les raccourcis clavier : Ctrl+A puis Ctrl+G

Voici le rendu que vous devriez avoir avoir :

image.png

Par la suite, crécréez l’l’emplacement pour la vis qui maintiendra votre afficheur.

Pour ce faire, crécréez un cylindre de perçperçage.

Voici ses dimensions : DiamèDiamètre = 8 mm ; Hauteur = 5 mm.

image.png

placez-le pour le mettre au bon endroit.

L’L’outil «« gle »» sera votre meilleur ami pour placer correctement le cylindre.

image.png

Placez cet outil dans le coin inféinférieur droit de l’l’emplacement de l’l’afficheur. Une fois placéplacé, des cotes apparaîapparaîtront, comme sur l'image suivante :

image.png

Modifiez seulement les cotes en vert. La cote de gauche sera de 5 mm et celle du bas de 8 mm. Ensuite, assemblez les deux en faisant : Ctrl+A puis Ctrl+G.
image.png

Votre support pour l’l’afficheur est maintenant prêprêt !

Jour 2 - Assemblage canique et éélectronique

Mission Mission :

Aujourd’Aujourd’hui, votre objectif est d’d’assembler les capteurs de votre station AquaLife. Pour aliser l’l’assemblage et le montage, vous allez d’d’abord couvrir les diffédifférents capteurs, les fixer àà votre station et les bler àà la carte ESP32 en fonction des recommandations de connexion. Ci-dessous une image du montage final :

image.png

Tutoriel des capteurs :  

image.png

image.png

L'ESP32 (et son extension) est une carte microcontrômicrocontrôleur trètrès performante qui permet de crécréer des projets éélectroniques connectéconnectés. GrâGrâce àà ses nombreux ports, tu peux y connecter des capteurs, des moteurs, ou d'autres composants pour aliser des gadgets intelligents, des systèsystèmes de domotique, ou des robots.

Un afficheur est un éécran qui permet de montrer des informations ou des donnédonnées provenant du microcontrômicrocontrôleur. On peut l'utiliser pour afficher des textes, des chiffres... C'est trètrès utile pour voir ce que fait le microcontrômicrocontrôleur en temps el, comme la tempétempérature d'une pièpièce, le score d'un jeu, ou l'éétat d'un systèsystème.

image.png

image.png

Un conductimèconductimètre est un instrument qui mesure la capacitécapacité de l'eau àà conduire l'électricitéélectricité, ce qui nous informe sur la quantitéquantité de sels ou d'autres substances dissoutes dans l'eau. Plus l'eau contient de substances dissoutes, mieux elle conduit l'électricitéélectricité. Cette mesure est trètrès utile pour rifier la puretépureté de l'eau.

Un turbidimèturbidimètre, permet de mesurer la turbiditéturbidité, qui sert àà éévaluer la clartéclarté de l'eau en tectant combien de petites particules sont suspendues dans celle-ci. Plus l'eau contient de particules comme de la terre, des micro-organismes, ou des substances chimiques, plus elle apparaîapparaît trouble.

image.png


image.png

Un pH-tre est un instrument utiliséutilisé pour mesurer l'aciditéacidité ou la basicitébasicité d'une solution. Il donne une valeur appeléappelée "pH", qui varie génégénéralement de 0 àà 14. Un pH de 7 est neutre, des valeurs inféinférieures àà 7 indiquent une aciditéacidité, et des valeurs supésupérieures àà 7 révèrévèlent une basicitébasicité. Le pH-tre est essentiel, car il aide àà comprendre l'ééquilibre chimique des solutions.


Un thermomèthermomètre est un instrument qui permet de mesurer la tempétempérature de l'eau. En mesurant la tempétempérature, on peut s'assurer que l'eau est dans les conditions optimales, que ce soit pour assurer la santésanté des organismes aquatiques, garantir la sécuritésécurité des baigneurs, ou maintenir l'efficacitéefficacité des processus industriels.

  image.png

Le DHT22 est un capteur qui mesure àà la fois la tempétempérature et l'humiditéhumidité de l'air ambiant. Il fournit des informations préprécieuses pour contrôcontrôler les conditions environnementales. En mesurant l'humiditéhumidité, le DHT22 aide àà surveiller la quantitéquantité de vapeur d'eau dans l'air, ce qui est crucial pour maintenir une bonne qualitéqualité de l'air. Pour la tempétempérature, il assure que les conditions soient confortables et res.

Avec ces informations vous êêtes prêprêts àà assembler votre station.

ÉÉtape 1 : Aller chercher les composants auprèauprès de l'animateur
  • Un afficheur, avec des bles femelle-femelle de toutes les couleurs.
  • Un conductimèconductimètre avec sa carte d’d’interface, ainsi qu’qu’un ble correspondant.
  • Un turbidimèturbidimètre, avec sa carte d’d’interface, ainsi qu’qu’un ble correspondant.
  • Un pH-tre, avec sa carte d’d’interface, ainsi qu’qu’un ble correspondant.
  • Un thermomèthermomètre, avec sa carte d’d’interface, ainsi qu’qu’un ble correspondant.
  • Un DHT22, avec sa carte d’d’interface, ainsi qu’qu’un ble correspondant.Un ESP32 et son extension, ainsi qu’qu’un ble USB/USB-C pour alimenter votre station àà l’l’ordinateur.
ÉÉtape 2 : Fixer les interfaces des capteurs àà la station.  

Fixer avec des vis adaptéadaptées, les interfaces des capteurs dans la boite de la station comme indiquéindiqué ci-dessous.image.png

ÉÉtape : Brancher l’l’afficheur et les capteurs àà l’l’ESP32 via la carte d’d’extension présentéprésentée ci-dessous.

Observer l’l’organisation de la carte d’d’extension et repérepérer les diffédifférents signaux.

image.png

Connecter les capteurs et l'afficheur sur la carte d'extension DFR0762 selon les indications ci-dessous :

image.png

image.png

image.png

image.png image.png

Jour 3 - Programmation Arduino

Mission :

Aujourd’Aujourd’hui, votre objectif est de programmer la station AquaLife. Vous allez éécrire, modifier et tester le code cessaire pour contrôcontrôler les diffédifférents capteurs selon les instructions crites ci-dessous. Bonne chance.

ÉÉtape 1 : Lancement de l'IDE Arduino et configuration de l'application
  • Ouvrez l'application Arduino IDE image.png

  • Charger le fichier : 2024_stage_collegiens_v5.ino

  • Connectez votre station ESP32 àà votre ordinateur via un ble USB-A/USB-C.

  • rifiez le port de connexion de votre ESP32 (CH340K), en consultant le gestionnaire de périphépériphériques de votre ordinateur pour identifier le port de communication (dans notre exemple ci-dessous : COM10).

image.png

  • lectionnez ce port de communication dans l'environnement Arduino en utilisant le menu roulant situésitué en haut àà gauche, comme indiquéindiqué dans l'exemple (indiquéindiqué comme "Unknown COM10" dans cet exemple).

image.png

  • Choisissez le modèmodèle de carte appropriéapproprié pour votre ESP32 dans les options de carte disponibles. Pour cet exemple, lectionnez "FireBeetle 2 ESP32-E" (voir dans l’l’exemple ci-dessous).

image.png

ÉÉtape 2 : Assignation des pins des capteurs dans le code
  • Dans le code, de la ligne 13 àà 17, remplacez les marqueurs "Ax" et "Dx" par les numénuméros de pin correspondants àà votre blage sur la carte d'extension de l'ESP32. Par exemple, si le pin analogique pour le capteur de TDS est 9, remplacez "TDS_Sensor_Pin_Num Ax" par "TDS_Sensor_Pin_Num A9".

image.png

ÉÉtape 3 : Compiler et charger le code dans l’ESP32 l’ESP32 

image.png

  • Un message d’d’erreur apparaîapparaît, notez les numénuméros des lignes de code mentionnémentionnés.

image.png

  • Remplacez les chaîchaînes de caractècaractères "xxxxx", "yyyyy" et "zzzzz" mentionnémentionnées dans les lignes d'erreur par l'identifiant du capteur spécifiéspécifié. Ces identifiants, comme "TDS_Sensor_Pin_Num" pour le turbidimèturbidimètre, sont indiquéindiqués en orange dans les lignes de code de 13 àà 17.
  • Assurez-vous que le capteur concernéconcerné par l'erreur est correctement crit dans une fonction dont le nom est en adéadéquation avec ce capteur, situésituée dans les lignes précéprécédant l’l’erreur.
  • Recompilez le code pour rifier que les erreurs ont étéété corrigécorrigées.
    Une fois le code compilécompilé sans erreurs, chargez-le dans l'ESP32 en cliquant de nouveau sur le bouton encadréencadré en rouge.
image.png
ÉÉtape 4 : Correction de l'affichage pour une lecture claire des informations des capteurs
  • Modifiez la durédurée de pause entre chaque quence d'affichage, qui se trouve àà la ligne 11. Changez la valeur actuelle de 0,1 seconde àà 2 secondes. Notez que cette valeur doit êêtre saisie en millisecondes dans le code.
  • Le code pour la premièpremière quence d'affichage est situésitué entre les lignes 275 et 291. Vous remarquerez que les lignes de texte se superposent, rendant difficile la lecture des informations.
  • Corrigez ce problèproblème en ajustant le deuxièdeuxième paramèparamètre (x) dans la fonction d'affichage u8g2.drawStr(x, y, "texte"); pour bien parer les informations relatives aux capteurs "Humidity DHT", "Temp DHT", et "pH" sur l'afficheur.

image.png

ÉÉtape 5 : Activation d’d’un message d’d’alerte sur l’l’afficheur
  • Identifiez dans le code les lignes 309 àà 328 qui permettront d'afficher un message d'alerte en lien avec le capteur de turbiditéturbidité.
  • Actuellement, ces lignes sont en commentaire et ne sont pas prises en compte lors de la compilation. Pour les activer, supprimez les marqueurs de commentaire /* et */ qui se trouvent respectivement aux lignes 315 et 328.
  • Relevez la valeur de turbiditéturbidité affichéaffichée sur votre appareil et finissez un seuil inféinférieur àà cette valeur. Modifiez la valeur dans la claration (float seuil = x;) pour y placer votre seuil (supésupérieur àà 0 et inféinférieur àà votre valeur d’d’affichage).
  • Compilez et télétéléchargez àà nouveau le programme dans votre ESP32.
  • Testez le fonctionnement du message d’d’alerte en plaçplaçant une feuille de papier devant le turbidimèturbidimètre pour simuler une turbiditéturbidité élevéélevée.

Jour 4 - Tests Tests 

Mission :

Aujourd’Aujourd’hui, votre objectif est de tester les diffédifférents ééchantillons d’d’eau qui nous sont parvenu de trois pays diffédifférents avec votre station AquaLife. Vous avez un ééchantillon d’d’un cours d’d’eau de l’l’Australie (noténoté A), la Bsil (noténoté B), le Canada (noténoté C) et un cours d’d’eau en Alsace qui sera le moin (noténoté T), faites les analyses et complécompléter le tableau proposéproposé dans le document.

ÉÉtape 1 : Collecte et prépréparation des ééchantillons d’d’eau
  • Notez et remplissez àà moitiémoitié quatre gobelets avec des ééchantillons d'eau provenant de diffédifférents pays : Australie (noténoté A), Bsil (noténoté B), Canada (noténoté C) et le cours d’d’eau en Alsace qui servira de Téémoin (noténoté T).
  • Avant de verser l'eau dans les gobelets, agitez bien les bouteilles pour homogénéhomogénéiser les ééchantillons.
  • Utilisez un cinquiècinquième gobelet pour rincer vos capteurs aprèaprès chaque analyse. Remplissez ce gobelet avec de l'eau du robinet. Assurez-vous de changer l'eau de rinçrinçage dans ce gobelet entre chaque type d’d’eau analyséanalysé (A, B, C, et T).

image.png

ÉÉtape 2 : Analyses physique des ééchantillons d’d’eau A, B, C et T
  • Pour analyser un ééchantillon, par exemple l'ééchantillon A, plongez les capteurs dans le gobelet correspondant. HomogénéHomogénéisez la solution en remuant doucement le gobelet ou en déplaçdéplaçant lentement les capteurs dans l'eau.
  • Notez les sultats de l'analyse dans le tableau préprévu àà cet effet (Voir me partie : CompléCompléter le tableau avec vos analyses).  
  • AprèAprès chaque analyse, rincez les capteurs dans le gobelet de rinçrinçage. RépéRépétez la mesure jusqu'àà obtenir trois sultats pour chaque capteur et pour chaque ééchantillon. Ce processus, appeléappelé "tripliquas", est expliquéexpliqué plus en tail un peu plus loin.
  • Pensez àà changer l'eau du gobelet de rinçrinçage entre chaque type d’d’eau analyséanalysé (A, B, C et T).

image.png

ÉÉtape 3 : Analyses chimiques des ééchantillons d’d’eau A, B, C et T
  • alisez l’l’analyse chimique du Nitrate, àà l’l’aide du photomèphotomètre. C'est un appareil qui permet de mesurer la concentration en polluants. Celui-ci mesure la diffédifférence entre l’él’échantillon et la solution (Echantillon avec le actif), grâgrâce au changement de couleur.  
  • Pour cela, suivez le protocole illustréillustré dans le schéschéma ci-dessous.
  • Notez les sultats de l'analyse dans le tableau préprévu àà cet effet un peu plus loin.

image.png

Protocole du Photomètre Photomètre :

1.      PrélèPrélèvement : ÀÀ l'aide d'une pipette jaugéjaugée, préprélevez 10 ml de l’él’échantillon àà analyser.

2.     Transfert : Versez l’l’eau de la pipette jaugéjaugée dans une cuvette propre.

3.     Calibration : alisez un éétalonnage en faisant le blanc (ro) pour ajuster le photomèphotomètre avant l'analyse proprement dite.

4.     Ajout du actif : Introduisez le actif appropriéapproprié dans l’él’échantillon.

5.     lange : Agitez doucement la solution pour bien langer le actif avec l'ééchantillon.

6.     Mesure : Placez la cuvette dans le photomèphotomètre et lancez la mesure en appuyant sur le bouton "start".

image.png

SchéSchéma d’d’utilisation du photomèphotomètre

ÉÉtape 4 : CompléCompléter le tableau avec vos analyses

Echantillon

moin (T)

Australie (A)

BréBrésil (B)

Canada (C)

pH

  

  

  

  

  

  

  

  

  

  

  

  

TurbiditéTurbidité

  

  

  

  

  

  

  

  

  

  

  

  

Conductivitéonductivité

  

  

  

  

  

  

  

  

  

  

  

  

TempéTempérature

  

  

  

  

  

  

  

  

  

  

  

  

Nitrate

  

  

  

  

Tableau des analyses des ééchantillons des diffédifférents pays pays 

image.png

Les chercheurs font aussi des analyses en tripliquas, pourquoi ?

Lorsqu'on alise des analyses en tripliquas, cela signifie qu'on fait la me expéexpérience trois fois. Cela peut sembler répérépétitif, mais c’c’est trètrès important, surtout dans la recherche scientifique.

Confirmer les sultats : Imagine que tu essaies une nouvelle recette de cookies avec tes amis. Si tu ne fais qu'un seul cookie et qu'il est parfait, c'est nial, mais tu ne sais pas si c'est parce que tu as suivi la recette àà la lettre ou si tu as juste eu de la chance. Si tu fais trois fournéfournées de cookies et qu'elles sont toutes licieuses, alors tu peux êêtre r que la recette est bonne.

Trouver les erreurs : Parfois, une erreur peut se glisser dans une expéexpérience. Si tu ne fais l'expéexpérience qu'une seule fois et qu'il y a une erreur, tu ne le sauras jamais. Mais si tu fais l'expéexpérience trois fois et que les sultats de l'une sont diffédifférents des autres, cela peut te signaler qu'il y a eu un problèproblème quelque part. Cela aide àà êêtre plus préprécis.

Moyenne des sultats : Lorsqu’Lorsqu’on fait une expéexpérience plusieurs fois, on peut calculer la moyenne des sultats. Cela permet d'avoir une idéidée plus claire de ce qui se passe ellement. Par exemple, si un jour il fait 25°25°C, un autre 28°28°C et un autre 26°26°C, la tempétempérature moyenne te donne une idéidée plus stable du temps qu'il fait ellement.

En faisant des analyses en tripliquas, les scientifiques s’s’assurent que leurs couvertes sont solides et fiables. C’C’est comme rifier ton travail en mathémathématiques ; plus tu rifies, plus tu es r de ton sultat !

Jour 5 - Analyse et PréPrésentation

Mission :

Aujourd’Aujourd’hui, votre objectif est de traiter les donnédonnées des diffédifférents ééchantillons prélevéprélevés dans les cours d’d’eau de l’l’Australie (noténoté A), la Bsil (noténoté B), le Canada (noténoté C) et le Téémoin Alsace (noténoté T). Pour cela, vous devez traiter vos donnédonnées àà l’l’aide d’d’un fichier Excel, interpréinterpréter vos sultats pour apporter vos conclusions et enfin complécompléter un PowerPoint pour préprésenter vos sultats.

ÉÉtape 1 : Traitement des donnédonnées àà l’l’aide d’d’un fichier Excel
  • CompléComplétez le tableau Excel àà votre disposition avec les donnédonnées récoltérécoltées la veille par votre station AquaLife.
  • Calculer la moyenne de vos tripliquas en utilisant la formule entre crochet [=MOYENNE(Cellule1; Cellule2; Cellule3)]
    Rappel : une Cellule = Colonne + Ligne
    Exemple : Cellule1 pour le premier ééchantillon de pH du moin est B2 qui contient la valeur 7,6 dans l’l’exemple. image.png
  • Les graphiques pour le pH, la conductivitéconductivité, la turbiditéturbidité et la concentration en Nitrate apparaissent. Attention plusieurs erreurs se sont glisséglissées àà l’intél’intérieur et il faut les corriger. Le graphique pour le pH est correct. Utilisez ce format comme modèmodèle pour corriger les autres graphiques, en suivant les instructions ci-dessous :

    o   Pour le graphique de la turbiditéturbidité, il manque l’él’échantillon moin. Pour l’l’ajouter, faites un clic droit sur le graphique et allez dans "lectionner les donnes…donnes…  " et cochez la case correspondant au moin (T).


    ikNimage.png

  • ATTENTION  si vous êêtes sur open office cliquer sur le graphique jusqu'àà ce que vous ayez ces 8 points verts, puis faites un clic droit.

    image.png

  •   Cliquez sur "plage de donnédonnées" et remplacer chacun des deux "C" par un "B" .

    image.png

    image.png

      

      

    o   Pour le graphique de la conductivitéconductivité, il manque les éétiquettes des valeurs de vos ééchantillons. Pour les ajouter, faites un clic gauche sur le graphique et allez dans "EléEléments de graphique" en haut àà droite du graphique pour cocher la case "éétiquette de donnédonnées" pour les ajouter.

    image.png

  • ATTENTION  si vous êêtes sur open office cliquer sur le graphique jusqu'àà ce que vous ayez ces 4 points verts, puis faites un clic droit.
  • image.png

  • Cliquez sur "InséInsérer des éétiquettes de donnédonnées".
  •   

    o   Le Le graphique de la concentration en Nitrates est au format pourcentage (%), ce qui ne permet pas de distinguer les diffédifférences entre les ééchantillons. Faites un clic droit sur le graphique pour aller dans "Modifier le type de graphique" et choisissez "Histogramme groupégroupé".

image.png

  • ATTENTION  si vous êêtes sur open office cliquer sur le graphique jusqu'àà ce que vous ayez ces 8 points verts, puis faites un clic droit.
  • image.png

  • Cliquez sur "Type de diagramme" et lectionner le premier qui se nomme "Normal".
  • image.png

ÉÉtape 2 : InterpréInterprétation et conclusion
  • CompléCompléter le tableau ci-dessous, pour cela ajouter des - / + /++   dans chaque ligne en fonction des informations présentéprésentées par la suite sur le pH, la turbiditéturbidité, la conductivitéconductivité et la concentration en nitrate de vos ééchantillons.
    Allez lire l’l’Exemple dans la section pH en bas de la page.
  • Faite le le Bilan en comptant le nombre de + pour chaque ééchantillon. Celui qui en a le plus est probablement le cours d’d’eau le plus contaminécontaminé.   

Attention, il n’n’y a pas de bonnes ou mauvaises ponses, c’c’est àà vous d’interpréd’interpréter vos résultats résultats !

Echantillon

Australie (A)

BréBrésil (B)

Canada (C)

pH

  

  

  

TurbiditéTurbidité

  

  

  

Conductivitéonductivité

  

  

  

Nitrate

  

  

  

Bilan

  

  

  


  • ··       Le pH, c'est comme une ééchelle qui nous dit si l'eau est acide, neutre ou basique. Pour les rivièrivières et les lacs, le mieux, c'est que leur pH soit entre 6,5 et 8,5. C'est comme êêtre juste au milieu, ni trop acide, ni trop basique, ce qui est parfait pour les plantes et les animaux qui vivent dans l'eau.

    o   Si le pH est en dessous de 6,5, l'eau est trop acide, çça peut êêtre difficile pour les poissons et d'autres crécréatures aquatiques de vivre, grandir et se reproduire normalement. Cela peut arriver àà cause de la pollution de l'air qui tombe avec la pluie.

    o   Si le pH est au-dessus de 8,5, l'eau est trop basique, çça peut aussi causer des problèproblèmes aux poissons et àà leur environnement, comme irriter leur peau ou changer la façfaçon dont certains nutriments et toxines se comportent dans l'eau. Cela peut êêtre àà des rejets d'usines.

    Exemple Exemple : Si j’j’ai un pH compris entre 6,5 et 8,5 alors je vais noter dans mon tableau tableau ; en revanche, si j’j’ai un pH compris entre 8,5 et 10, alors je vais noter +, car celui-ci s’és’éloigne un peu de la normal, mais si j’j’ai un pH > 10 alors ++, car celui-ci s’és’éloigne fortement de la normal.

    Enfin, si j’j’ai un pH compris entre 5 et 6,5, alors je vais noter +, car celui-ci s’és’éloigne un peu de la normal, mais si j’j’ai un pH < 5 alors ++, car celui-ci s’és’éloigne fortement de la normal.

  • La turbiditéturbidité, correspond au trouble préprésent dans l'eau.

o   Si la turbiditéturbidité est au-dessus du niveau normal (moin), cela signifie génégénéralement que l'eau est trètrès claire. Cela peut êêtre bon pour la pénépénétration de la lumièlumière et aide àà maintenir un écosystèécosystème sain pour la photosynthèphotosynthèse des plantes aquatiques.

o   Si la turbiditéturbidité est en dessous du niveau normal (moin), l'eau devient plus trouble. Cela peut êêtre causécausé par des activitéactivités humaines comme le frichement des terres ou la construction, qui placent beaucoup de terre. Une eau trouble peut crécréer plusieurs problèproblèmes pour les animaux aquatiques comme des difficultédifficultés respiratoires (Les particules fines dans l'eau peuvent bloquer ou endommager les branchies des poissons, rendant difficile pour eux de respirer).    

  • La conductivitéconductivité, est une mesure qui nous dit combien l'eau peut conduire l'électricitéélectricité. Pour les rivièrivières et les lacs, une conductivitéconductivité normale peut varier entre 50 et 1500 microsiemens par centimècentimètre (µµS/cm).

o   Si la conductivitéconductivité est en dessous du niveau normal (50-1500), cela peut signifier que l'eau est trètrès pure. Bien que cela puisse sembler positif, une faible conductivitéconductivité peut parfois limiter la disponibilitédisponibilité de certains nutriments essentiels pour la vie aquatique, affectant ainsi les organismes qui pendent de ces nutriments.

o   Si la conductivitéconductivité est au-dessus du niveau normal (50-1500), cela peut êêtre àà des activitéactivités humaines telles que l'agriculture, des fertilisants riches en minéminéraux sont utiliséutilisés, ou des effluents industriels. Une conductivitéconductivité élevéélevée peut poser des problèproblèmes pour les espèespèces aquatiques.

  • La concentration en nitrate, est un indicateur important de la santésanté d'un cours d'eau, car les nitrates sont une forme de nutriment essentiel pour la croissance des plantes, mais peuvent êêtre probléproblématiques en grande quantitéquantité. Normalement, une concentration en nitrate dans un cours d'eau devrait êêtre inféinférieure àà 1000 microgramme par litre (µµg/L) pour êêtre considéréconsidérée comme re pour la plupart des écosystèécosystèmes aquatiques.

o   Si la concentration en nitrate est en dessous du niveau normal, cela peut signifier qu'il y a peu de sources de pollution par les nitrates àà proximitéproximité.

o   Si la concentration en nitrate est au-dessus du niveau normal, cela peut êêtre un signe de pollution comme les chets agricoles ou les eaux uséusées non traitétraitées. Des niveaux élevéélevés de nitrates peuvent entraîentraîner plusieurs problèproblèmes éécologiques, notamment des effets sur la santésanté des organismes aquatiques et risque pour la santésanté humaine.

ÉÉtape 3 : Mise en forme des sultats sur PowerPoint
  • Vous devez complécompléter la préprésentation PowerPoint en ajoutant vos graphiques dans les emplacements préprévus : pH, turbiditéturbidité, conductivitéconductivité et concentration en nitrate. Pour cela faite un copier-coller de vos graphiques que vous avez créécréé de votre fichier Excel. Attention pour garder le bon code couleur, vous devez faire copier Ctrl+C et un collage spéspécial image avec le raccourci Ctrl+Alt+V.
  • Pour finir, remplacer les XXX par le nom du Pays qui a le cours d’d’eau le plus polluépollué d’aprèd’après vos sultats.

licitation vous avez ussi votre mission et
identifiéidentifié le cours d’d’eau le plus polluépollué parmi les ééchantillons d’eau d’eau !!

Vous devez avoir obtenu une préprésentation qui ressemble àà celle ci-dessous dessous :

image.png