Le capteur de niveau d’eau est un module simple et compact doté d’une série de pistes conductrices parallèles tracées sur son circuit imprimé. Lorsque le capteur est plongé dans un liquide, l’eau relie ces pistes métalliques entre elles, ce qui modifie la conductivité du circuit. Plus le niveau de l’eau est haut (plus la surface immergée est grande), plus le courant passe facilement et plus la résistance diminue. La carte microcontrôleur traduit cette variation électrique en une mesure exploitable. [1, 2, 3, 4]
2. Pourquoi choisir ce capteur ?
- Idéal pour la gestion des liquides : C’est le composant parfait pour concevoir des systèmes de surveillance de réservoirs, des alertes contre les inondations ou le débordement d’une cuve de récupération d’eau de pluie. [1, 2, 3]
- Détection graduée et précise : Contrairement à un simple interrupteur à flotteur (qui indique uniquement si le niveau est haut ou bas), ce capteur fournit une valeur analogique progressive permettant d’estimer la hauteur de l’eau sur toute la longueur de sa surface sensible. [1, 2]
- Très économique et léger : Sa simplicité de conception en fait un capteur extrêmement abordable, robuste et facile à intégrer dans n’importe quel récipient. [1, 2, 3]
#include <ESP32Servo.h> Servo monServo; const int brocheCapteurEau = 34; // Sortie analogique du capteur sur la broche ADC GPIO 34 de l’ESP32 const int brocheServo = 13; // Fil de signal du servo connecté sur la broche GPIO 13 // Seuil de détection (0 à 4095 sur l’ADC de l’ESP32) à ajuster selon la conductivité de votre eau // Plus le capteur est immergé, plus la valeur lue augmente. const int SEUIL_DEBORDEMENT = 1800; void setup() { Serial.begin(115200); // Initialisation du moniteur série pour suivre les niveaux // Configuration du servomoteur pour l’ESP32 ESP32PWM::allocateTimer(0); monServo.setPeriodHertz(50); monServo.attach(brocheServo, 500, 2400); monServo.write(0); // Vanne fermée par défaut (0 degré) } void loop() { // Lecture du signal analogique du capteur d’eau int niveauEau = analogRead(brocheCapteurEau); // Affichage de la valeur mesurée sur l’ordinateur Serial.print(« Niveau d’eau actuel : « ); Serial.println(niveauEau); // Si l’eau dépasse le seuil de sécurité if (niveauEau > SEUIL_DEBORDEMENT) { Serial.println(« ATTENTION : Niveau d’eau trop élevé ! Ouverture de la vanne. »); monServo.write(90); // Le servomoteur s’ouvre à 90 degrés pour évacuer l’eau } // Si le niveau est redescendu à la normale else { monServo.write(0); // Le servomoteur se referme / revient à sa position initiale } delay(1000); // Pause d’une seconde entre chaque mesure pour éviter les fluctuations de vagues }







Avis
Il n’y a pas encore d’avis.