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×Module de développement ESP32 ESP-WROOM-32
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Water level sensor
1×Plaque d'essai
1×Fils de connexion
1×Optionnel: Connecteur d'alimentation DC
1×Recommandé: Carte d'extension à bornier à vis pour ESP32
1×Recommandé: Breakout Expansion Board for ESP32
1×Recommandé: Répartiteur d'alimentation pour ESP32

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 (ESP32 inclus)
1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
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

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions 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 Installation du logiciel ESP32..
  • 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:

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

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'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:

  • 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

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !