Dans ce projet on va voir comment afficher et calculer le pourcentage de remplissage de votre cuve d’eau. Ceci peut-être très utile si vous avez une cuve pour récupérer de l’eau de gouttière ou bien si vous avez une cuve immergé et que vous ne pouvez pas voir la hauteur d’eau.

Difficulté :

Matériel nécessaire

On va maintenant le matériel nécessaire pour le projet :

Comment fonctionne le système de remplissage ?

Il y a deux parties dans ce projet :

  • La détection du taux de remplissage de la cuve
  • L’arrosage avec de l’eau de la cuve

Pour la détection du taux de remplissage, on utilise une capteur de distance en direction du fond de la cuve. L’eau dans le fond de la cuve va faire rebondir le signal envoyé par le capteur dans le sens inverse et donc retourner une distance. On affiche ensuite le taux de remplissage en donnant dans la taille initiale de la cuve.

 

Pour pouvoir arroser votre jardin, nous utilisons une pompe à eau. Celle-ci se contrôle avec du 9V, on a donc besoin d’utiliser une alimentation externe car la carte Arduino ne peut fournir que 5V au maximum. Pour cela on utilise un relais qui va permettre de contrôler la pompe à eau depuis la carte Arduino.

De plus nous avons ajouté un interrupteur ce qui permet de couper le fonctionnement de la pompe quand vous avez finit d’arroser. C’est un interrupteur que pour la pompe ce qui vous permet de continuer à voir le taux de remplissage même quand la pompe est éteinte.

Attention à l'humidité !

Le projet de remplissage d’une cuve d’eau est potentiollement un projet d’extérieur. Il faut donc faire très attention à ce que l’électronique comme la carte Arduino ou l’écran LCD ne touche pas l’eau de la cuve ou la pluie. Vous pouvez par exemple les protéger dans une boite.

Schéma du projet

A quoi sert le potentiomètre ?

Le potentiomètre permet de régler la luminosité de l’écran. Vous pouvez vous en passer en branchant directement du 5V sur le fil marron et le GND qui va du potentiomètre à l’écran vous pouvez le relier directement sur la carte Arduino.

Programme du projet

#include <LiquidCrystal.h> // On inclut la librairie pour l'écran.

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // On initialise les pins de l'écran LCD
int cm = 0; // On initialise le nombre de centimetre à 0
int pompe = 8; // Pin de la pompe
bool  Off_pompe = HIGH ; // booléen pour démarrage pompe
bool  On_pompe = LOW ; // booléen pour éteindre la pompe

void setup() {
  pinMode(pompe,OUTPUT); // On met la pompe en sortie 
  lcd.begin(16, 2); // On initialise l'écran avec la bonne taille 
  digitalWrite(pompe,On_pompe); // On démarre initialement la pompe

}

void loop() {
  cm = 0.01723 * readUltrasonicDistance(7, 7); // Conversion de la valeur obtenue en centimètre
  int level = map(cm, 400 , 10, 0 , 100); // Conversion de la valeur en centimètre en pourcentage par rapport à la taille de la cuve
  lcd.setCursor(0, 0); // On place le curseur en haut à gauche
  lcd.print( "Remplissage :"); // On affiche Remplissage
  lcd.setCursor(0, 1); // On écrit le porucentage sur la ligne du dessous.
  lcd.print(level);
  lcd.setCursor(3, 1);
   lcd.print("%"); 
    
  if( level >=99) { // Si le remplissage est supérieur ou égale à 99% on éteint la pompe
   digitalWrite(pompe,Off_pompe);
    
  }
  else if( level <95)  {  // Si le remplissage est inférieur ou égale à 95% on allume la pompe
    digitalWrite(pompe,On_pompe);
  }
  
  else {
   digitalWrite(pompe,Off_pompe); // On éteint la pompe si on n'arrive pas à mesurer le remplissage de la cuve
  } 
}


long readUltrasonicDistance(int triggerPin, int echoPin) { // Calcul de la distance par le capteur
  pinMode(triggerPin, OUTPUT);  
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);
  return pulseIn(echoPin, HIGH);
}

Modifier le programme en fonction de la taille de la cuve !

Le programme ici fonctionne pour une cuve faisant 400 cm de hauteur. Néanmoins vous devrez sûrement modifier cette valeur en fonction de la taille de votre cuve.

Pour cela vous devez modifier la ligne 18 du programme :

  int level = map(cm, 400 , 10, 0 , 100); 

Sur cette ligne il suffit de changer le 400 par la hauteur de votre cuve.

Simulation du projet

Voici la simulation du projet sur tinkercard :