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 :Une carte Arduino UnoUn Ecran LCD 16×2 à Liquide CrystalUne pompe à eauCapteur de distanceUn potentiomètreUn relaisUne résistance 220 ohmsUne alimentation externe (pile 9V)Fils de liaisons (une quinzaine environ !) Comment fonctionne le système de remplissage ? Il y a deux parties dans ce projet :La détection du taux de remplissage de la cuveL’arrosage avec de l’eau de la cuvePour 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 :