ESP32 - Capteur d'eau

Ce tutoriel vous explique comment utiliser l'ESP32 et un capteur d'eau pour détecter les précipitations, les fuites d'eau, le débordement de réservoir et mesurer le niveau d'eau.

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Water level sensor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur de niveau d'eau

Brochage du capteur de niveau d'eau

Le capteur de niveau d'eau comprend 3 broches :

  • Broche S (Signal) : Cette broche émet une tension analogique proportionnelle au niveau de l'eau. Cette broche doit être connectée à une broche d'entrée analogique de l'ESP32.
  • Broche + (VCC) : connectez cette broche à 3,3V ou 5V.
  • Broche - (GND) : connectez cette broche à GND.
brochage du capteur d'eau

Fonctionnement du capteur de niveau d'eau

Plus le capteur est immergé dans l'eau, plus la tension de sortie sur la broche S est élevée. En mesurant cette tension, nous pouvons connaître le niveau d'eau.

Diagramme de câblage

En théorie, nous pouvons alimenter le capteur d'eau en connectant les broches VCC et GND du capteur aux broches 3.3V et GND de l'ESP32, respectivement.

Cependant, cette méthode n'est pas recommandée en pratique. Si nous alimentons en continu le capteur d'eau, celui-ci se corrode plus rapidement par électrochimie à cause de l'environnement humide ⇒ Il est préférable d'alimenter le capteur d'eau uniquement lors de la lecture de la valeur du capteur. Pour ce faire, nous pouvons connecter la broche VCC du capteur à une broche numérique de l'ESP32, et programmer la broche de l'ESP32 en HAUT avant la lecture et en BAS après la lecture.

Schéma de câblage du capteur d'eau ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32 - Lecture de la valeur provenant du capteur d'eau

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-water-sensor */ #define POWER_PIN 17 // Broche GPIO17 de l'ESP32 connectée à la broche VCC du capteur #define SIGNAL_PIN 36 // Broche GPIO36 (ADC0) de l'ESP32 connectée à la broche de signal du capteur int value = 0; // variable pour stocker la valeur du capteur void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configurer la broche comme une SORTIE digitalWrite(POWER_PIN, LOW); // éteindre le capteur } void loop() { digitalWrite(POWER_PIN, HIGH); // allumer le capteur delay(10); // attendre 10 millisecondes value = analogRead(SIGNAL_PIN); // lire la valeur analogique du capteur digitalWrite(POWER_PIN, LOW); // éteindre le capteur Serial.print("The water sensor value: "); Serial.println(value); delay(1000); }

Étapes rapides

  • Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload de l'Arduino IDE.
  • Plongez lentement le capteur dans l'eau (un verre d'eau).
  • Consultez le résultat sur le moniteur série. Cela ressemble à ce qui suit : La valeur 0 lorsque le capteur ne touche rien.
COM6
Send
The water sensor value: 0 The water sensor value: 0 The water sensor value: 0 The water sensor value: 25 The water sensor value: 196 The water sensor value: 587 The water sensor value: 625 The water sensor value: 1434 The water sensor value: 1449 The water sensor value: 1454 The water sensor value: 1469 The water sensor value: 2525 The water sensor value: 2526 The water sensor value: 2558
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Le capteur d'eau n'est pas conçu pour être complètement immergé, seules les pistes exposées sur le PCB peuvent être plongées dans l'eau. Veuillez faire attention lors de son installation.

Comment détecter une fuite d'eau

Pour détecter les fuites d'eau, les précipitations et le débordement du réservoir, il suffit de comparer la valeur du capteur à un seuil. Le seuil est déterminé dans la partie étalonnage de ce tutoriel.

Faisons en sorte que l'ESP32 allume une LED si une fuite d'eau est détectée.

Schéma de câblage

Schéma de câblage du capteur d'eau ESP32 avec LED

This image is created using Fritzing. Click to enlarge image

Code ESP32 - Détection de fuite d'eau

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-water-sensor */ #define LED_PIN 21 // Broche GPIO21 de l'ESP32 connectée à la broche du LED #define POWER_PIN 17 // Broche GPIO17 de l'ESP32 connectée à la broche VCC du capteur #define SIGNAL_PIN 36 // Broche GPIO36 (ADC0) de l'ESP32 connectée à la broche signal du capteur #define THRESHOLD 1000 int value = 0; // variable pour stocker la valeur du capteur void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // configurer la broche comme une SORTIE pinMode(POWER_PIN, OUTPUT); // configurer la broche comme une SORTIE digitalWrite(POWER_PIN, LOW); // éteindre le capteur digitalWrite(LED_PIN, LOW); // éteindre le LED } void loop() { digitalWrite(POWER_PIN, HIGH); // allumer le capteur delay(10); // attendre 10 millisecondes value = analogRead(SIGNAL_PIN); // lire la valeur analogique du capteur digitalWrite(POWER_PIN, LOW); // éteindre le capteur if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // allumer le LED } else { digitalWrite(LED_PIN, LOW); // éteindre le LED } }

Comment mesurer le niveau d'eau

Le code ci-dessous divise le niveau d'eau en 4 niveaux.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-water-sensor */ #define POWER_PIN 17 // PIN GPIO17 de l'ESP32 connecté au pin VCC du capteur #define SIGNAL_PIN 36 // PIN GPIO36 (ADC0) de l'ESP32 connecté au pin de signal du capteur #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable pour stocker la valeur du capteur int level = 0; // variable pour stocker le niveau d'eau void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configurer le pin D7 comme une SORTIE digitalWrite(POWER_PIN, LOW); // éteindre le capteur } void loop() { digitalWrite(POWER_PIN, HIGH); // allumer le capteur delay(10); // attendre 10 millisecondes value = analogRead(SIGNAL_PIN); // lire la valeur analogique du capteur digitalWrite(POWER_PIN, LOW); // éteindre le capteur level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 niveaux Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ NOTE THAT:

  • SENSOR_MIN et SENSOR_MAX sont déterminés par le processus de calibrage.
  • La méthode de mappage ci-dessus n'est pas précise. Cependant, elle est acceptable dans de nombreuses applications.

Calibrage du capteur de niveau d'eau

Voir comment étalonner le capteur de niveau d'eau

Vidéo

Références linguistiques

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!