Arduino - Capteur d'eau

Le capteur d'eau ou capteur de niveau d'eau est utilisé pour détecter les fuites d'eau, les précipitations, le débordement de réservoir, ou pour mesurer le niveau d'eau. Dans ce tutoriel, nous allons apprendre :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Water level sensor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

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 :

  • Broche S (Signal) : il s'agit d'une sortie analogique qui sera connectée à l'une des entrées analogiques de votre Arduino.
  • Broche + (VCC) : alimente le capteur. Il est recommandé d'alimenter le capteur avec entre 3,3V et 5V.
  • Broche - (GND) : est une connexion à la terre.
brochage du capteur d'eau

※ NOTE THAT:

La valeur de sortie analogique sur la broche de signal varie en fonction de la tension appliquée à la broche VCC du capteur.

Fonctionnement du capteur de niveau d'eau

Plus le capteur est immergé dans l'eau, plus la tension de sortie sur la broche de signal est élevée.

Voyons cela plus en profondeur.

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 une série de dix pistes de cuivre exposées. Cinq sont des pistes de puissance et cinq sont des pistes de détection. Ces pistes sont entrelacées en parallèle de sorte qu'il y a une piste de détection entre chaque deux pistes de puissance. Ces pistes ne sont pas connectées à moins qu'elles ne soient pontées par l'eau lorsqu'elles sont immergées.

Les traces agissent comme une résistance variable (tout comme un potentiomètre) dont la résistance varie selon le niveau d'eau.

  • La variation de résistance correspond à la distance entre le haut du capteur et la surface de l'eau.
  • La résistance est inversement proportionnelle à la hauteur de l'eau :
  • Plus le capteur est immergé dans l'eau, meilleure est la conductivité, plus faible est la résistance.
  • Moins le capteur est immergé dans l'eau, plus mauvaise est la conductivité, plus élevée est la résistance.
  • Le capteur produit une tension de sortie en fonction de la résistance.

En mesurant la tension, nous pouvons déterminer le niveau d'eau.

Diagramme de câblage

En théorie, pour alimenter le capteur, nous pouvons connecter les broches VCC et GND du capteur aux broches 5v et GND de l'Arduino, respectivement.

En pratique, cependant, cette méthode n'est pas recommandée. Parce que dans un environnement humide, si nous alimentons constamment le capteur, celui-ci se corrode électrochimiquement plus rapidement. Cela réduit la durée de vie du capteur. Pour surmonter ce problème, nous vous recommandons de ne pas alimenter le capteur en permanence, mais de l’alimenter uniquement lors de la lecture de la valeur du capteur. Cela peut être réalisé en connectant la broche VCC du capteur à une broche numérique d'un Arduino, et en réglant la broche de l'Arduino sur HIGH et LOW avant et après la lecture, respectivement.

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

This image is created using Fritzing. Click to enlarge image

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

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 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

  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers Arduino.
  • Immergez lentement le capteur dans l'eau (un verre d'eau).
  • Consultez le résultat sur le moniteur série. La valeur 0 apparaît lorsque le capteur ne touche à 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 n'est pas conçu pour être entièrement immergé, seules les pistes exposées sur le PCB peuvent entrer en contact avec 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 lue avec une valeur seuil. Le seuil est déterminé dans la partie étalonnage de ce tutoriel.

Prenons un exemple spécifique. Arduino allume une LED si de l'eau est détectée.

Schéma de câblage

Schéma de câblage de la LED du capteur d'eau Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino - Détection de fuite d'eau

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-water-sensor */ #define LED_PIN 2 #define POWER_PIN 7 #define SIGNAL_PIN A5 #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 comme SORTIE pinMode(POWER_PIN, OUTPUT); // configurer la broche D7 comme 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 diviser la hauteur maximale de l'eau en plusieurs niveaux et mesurer le niveau actuel, vous pouvez utiliser la méthode dans le code ci-dessous. Notez que la hauteur maximale de l'eau est égale à la hauteur du capteur. Le code ci-dessous divise la hauteur maximale en 4 niveaux.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-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 d'eau void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configurer la broche 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 calibration.
  • La méthode de mappage ci-dessus n'est pas précise. Cependant, elle est acceptable dans de nombreuses applications. Si vous souhaitez la rendre précise, vous pouvez mesurer les valeurs seuils pour chaque niveau. Voir la partie calibration.

Étalonnage du capteur de niveau d'eau

La valeur de sortie du capteur dépend non seulement du niveau d'eau, mais aussi de la conductivité de l'eau. L'eau pure n'est pas conductrice. L'eau qui contient des minéraux et des impuretés est conductrice. Plus l'eau est conductrice, plus le capteur est sensible. D'autre part, la valeur de sortie varie également en fonction de la tension appliquée à la broche VCC du capteur.

Pour obtenir des mesures précises du capteur d'humidité, nous vous recommandons de calibrer le capteur pour le type spécifique d'eau que vous prévoyez de surveiller.

Avant de déterminer le seuil de déclenchement d'une action, vous devez mesurer la valeur réelle lue par le capteur en effectuant un test.

Comment faire le test :

  • Utilisez l'esquisse ci-dessus pour lire la valeur du capteur.
  • Plongez le capteur dans l'eau au niveau que vous souhaitez définir comme seuil.
  • Notez la valeur affichée par le capteur dans le moniteur série.
  • Utilisez cette valeur comme seuil pour déclencher une action.

Ce test peut nécessiter des essais et des erreurs.

Le test peut également être utilisé pour trouver :

  • Valeur SENSOR_MIN, lorsque le capteur n'est pas immergé dans l'eau
  • Valeur SENSOR_MAX, lorsque le capteur est complètement immergé dans l'eau
  • Une valeur seuil pour détecter les fuites d'eau
  • Les valeurs seuils pour chaque niveau de votre échelle de degrés.

Vidéo

Mettez-vous au défi

  • Envoyez un e-mail lors de la détection d'une fuite d'eau
  • Envoyez un message SMS lors de la détection d'une fuite d'eau
  • Déclenchez une alarme sonore lors de la détection d'une fuite d'eau

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