ESP8266 - Capteur d'eau

Ce tutoriel vous explique comment utiliser le capteur d'eau avec l'ESP8266. Nous apprendrons :

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Water level sensor
1×Jumper Wires
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 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 possède 3 broches :

  • La broche S (Signal) est une sortie analogique qui doit être connectée à l'une des entrées analogiques de votre ESP8266.
  • La broche + (VCC) alimente le capteur et il est conseillé d'utiliser une tension entre 3,3V et 5V.
  • La broche - (GND) est une connexion à la terre.
schéma de brochage du capteur d'eau

Fonctionnement du capteur de niveau d'eau

En bref, la tension de sortie sur la broche de signal augmente à mesure que le capteur est exposé à davantage d'eau.

Examinons cela de plus près.

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.

Le capteur possède un ensemble de dix pistes de cuivre exposées, dont cinq sont des pistes d'alimentation et les autres cinq des pistes de détection. Les pistes sont disposées en parallèle, avec une piste de détection entre chaque deux pistes d'alimentation. À moins d'être immergées dans l'eau, ces pistes ne sont pas connectées.

Les traces fonctionnent comme une résistance variable (tout comme un potentiomètre) dont la résistance varie en fonction du niveau d'eau :

  • La résistance des traces est inversement proportionnelle à la hauteur de l'eau.
  • Plus la quantité d'eau dans laquelle le capteur est immergé est grande, meilleure est la conductivité, ce qui entraîne une résistance plus faible.
  • Moins la quantité d'eau dans laquelle le capteur est immergé est grande, pire est la conductivité, ce qui entraîne une résistance plus élevée.
  • La tension de sortie du capteur est déterminée par la résistance.

Évaluer la tension peut servir à déterminer le niveau d'eau.

Diagramme de câblage

En théorie, les broches VCC et GND du capteur peuvent être connectées respectivement aux broches 5v et GND de l'ESP8266, afin d'alimenter le capteur.

Cependant, il n'est pas conseillé d'utiliser cette méthode en pratique. Si l'environnement est humide, alimenter constamment le capteur entraînera sa corrosion électrochimique à un rythme accéléré, réduisant ainsi sa durée de vie. Pour éviter cela, nous suggérons d'alimenter le capteur uniquement lorsque vous avez besoin de lire sa valeur. Cela peut être réalisé en connectant la broche VCC du capteur à une broche numérique d'un ESP8266 et en réglant la broche de l'Arduino sur HIGH avant la lecture et sur LOW après.

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

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Code ESP8266 - Lecture de la valeur du capteur d'eau

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define POWER_PIN D7 #define SIGNAL_PIN A0 int value = 0; // variable pour stocker la valeur du capteur void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configurer la broche D7 en 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("Sensor value: "); Serial.println(value); delay(1000); }

Étapes rapides

Pour commencer avec l'ESP8266 sur l'IDE Arduino, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez ESP8266.
  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Sélectionnez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Copiez le code et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour compiler et téléverser le code sur l’ESP8266.
  • Abaissez doucement le capteur dans un verre d'eau.
  • Observez le résultat sur le moniteur série ; la valeur doit être 0 lorsque le capteur n'est en contact avec rien.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Le capteur ne doit pas être complètement immergé ; seules les pistes exposées sur le PCB doivent entrer en contact avec l'eau. Veuillez faire attention lors de son installation.

Comment détecter une fuite d'eau

Pour identifier les fuites d'eau, les précipitations et le débordement du réservoir, nous devons simplement comparer la valeur mesurée à une valeur seuil déterminée lors de la section d'étalonnage de ce tutoriel.

Considérons un cas particulier. Si de l'eau est détectée, l'ESP8266 activera une LED.

Schéma de câblage

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

This image is created using Fritzing. Click to enlarge image

Code ESP8266 - Détection de fuite d'eau

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define LED_PIN D2 #define POWER_PIN D7 #define SIGNAL_PIN A0 #define THRESHOLD 300 int value = 0; // variable pour stocker la valeur du capteur void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // Configurer la broche D2 en SORTIE pinMode(POWER_PIN, OUTPUT); // Configurer la broche D7 en SORTIE digitalWrite(POWER_PIN, LOW); // éteindre le capteur digitalWrite(LED_PIN, LOW); // éteindre la 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 la LED } else { digitalWrite(LED_PIN, LOW); // éteindre la LED } }

Comment mesurer le niveau d'eau

Si vous souhaitez mesurer le niveau actuel de l'eau en divisant la hauteur maximale en différents niveaux, vous pouvez utiliser le code suivant. Notez que la hauteur maximale de l'eau est équivalente à la hauteur du capteur. Ce code divise la hauteur maximale en quatre niveaux.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #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 de l'eau void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configurer la broche D7 comme 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 calibration.
  • La méthode de cartographie mentionnée ci-dessus n'est pas précise. Néanmoins, elle convient à de nombreuses applications. Si vous souhaitez rendre les résultats plus précis, vous pouvez mesurer les valeurs seuils pour chaque niveau. Pour plus d'informations, veuillez vous référer à la section de calibration à la fin de ce tutoriel.

Calibrage du capteur de niveau d'eau

La valeur de sortie du capteur est déterminée par deux facteurs : le niveau d'eau et la conductivité de l'eau. L'eau pure n'est pas conductrice, cependant, lorsque des minéraux et des impuretés sont présents, elle devient conductrice. Plus l'eau est conductrice, plus la sensibilité du capteur est élevée. De plus, la valeur de sortie est également affectée par la tension fournie à la broche VCC du capteur.

Pour des mesures précises du capteur d'eau, nous vous suggérons de le calibrer pour le type spécifique d'eau que vous souhaitez surveiller.

Avant de définir le seuil pour déclencher une action, il est nécessaire de mesurer la valeur réelle obtenue à partir du capteur lors d'un test.

Instructions pour le test :

  • Utilisez le croquis fourni ci-dessus pour lire la valeur du capteur.
  • Immergez le capteur dans l'eau, en vous assurant qu'il est au niveau de seuil désiré.
  • Enregistrez la valeur émise par le capteur dans le moniteur série.
  • Utilisez cette valeur comme seuil pour déclencher une action spécifique.

Il faudra peut-être expérimenter pour réussir ce test.

Le test peut également être utilisé pour découvrir :

  • Valeur SENSOR_MIN, lorsque le capteur n'est pas immergé dans le liquide
  • Valeur SENSOR_MAX, lorsque le capteur est totalement immergé dans le liquide
  • Une valeur limite pour détecter les fuites d'eau
  • Les valeurs limites pour chaque étape de votre échelle de degrés.

Vidéo

Mettez-vous au défi

  • En cas de détection de fuite d'eau,
  • Envoyer un courriel,
  • Envoyer un message SMS,
  • Et déclencher une alarme sonore.

※ 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!