Arduino Nano - Capteur d'eau

Ce tutoriel vous explique comment utiliser le capteur d'eau avec Arduino Nano. Nous allons apprendre :

Cela peut être appliqué aux applications qui détectent les fuites d'eau, les précipitations, le débordement de réservoir...

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Water level sensor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

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 a 3 broches :

  • La broche S (Signal) est une sortie analogique qui sera connectée à l'une des entrées analogiques de votre Arduino Nano.
  • La broche + (VCC) alimente le capteur et il est suggéré 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 résumé, plus la quantité d'eau dans laquelle le capteur est immergé est grande, plus la tension de la broche de signal sera élevée.

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 dispose d'un ensemble de dix pistes de cuivre exposées :

  • Cinq d'entre eux sont des pistes de puissance
  • Les cinq autres sont des pistes de détection.

Les voies sont disposées en parallèle avec une voie de sens entre chaque deux voies de puissance. À moins qu'elles ne soient reliées par l'eau lorsqu'elles sont immergées, les voies ne sont pas connectées.

Les traces agissent comme une résistance variable, semblable à un potentiomètre, dont la résistance varie avec le niveau d'eau :

  • La résistance est déterminée par la distance entre le haut du capteur et la surface de l'eau.
  • La résistance est inversement proportionnelle à la quantité d'eau présente :
  • Lorsque plus d'eau est présente, la conductivité est améliorée et la résistance est diminuée.
  • Lorsque moins d'eau est présente, la conductivité est réduite et la résistance est augmentée.
  • Le capteur produit une tension de sortie basée sur la résistance.

La détermination du niveau d'eau peut se faire en mesurant la tension.

Diagramme de câblage

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

Toutefois, il n'est pas conseillé d'adopter cette approche en pratique. Dans un environnement humide, si le capteur est alimenté en continu, il sera corrodé électrochimiquement plus rapidement, ce qui réduira sa durée de vie.

Pour éviter cela, nous suggérons de ne pas alimenter le capteur en permanence, mais uniquement lors de la lecture de sa valeur. Cela peut être réalisé en connectant la broche VCC du capteur à une broche numérique d'un Arduino Nano, et en réglant la broche de l'Arduino sur HIGH avant la lecture et sur LOW ensuite.

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

This image is created using Fritzing. Click to enlarge image

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

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor int value = 0; // variable to store the water sensor value void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the water sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF Serial.print("Water sensor value: "); Serial.println(value); delay(1000); }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le dans l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour envoyer le code à l'Arduino Nano.
  • Plongez doucement le capteur dans un verre d'eau.
  • Vérifiez le moniteur série pour voir le résultat ; il devrait être de 0 lorsque le capteur ne touche rien.
COM6
Send
Water sensor value: 0 Water sensor value: 0 Water sensor value: 0 Water sensor value: 25 Water sensor value: 97 Water sensor value: 284 Water sensor value: 428 Water sensor value: 435 Water sensor value: 441 Water sensor value: 455 Water sensor value: 467 Water sensor value: 521 Water sensor value: 528 Water sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

Le capteur ne doit pas être complètement immergé dans l'eau ; seules les pistes exposées sur le PCB doivent entrer en contact avec celle-ci. 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, il suffit de comparer la valeur mesurée à une valeur seuil déterminée dans la section d'étalonnage de ce tutoriel.

Examinons un cas particulier. Si de l'eau est détectée, l'Arduino Nano activera une LED.

Schéma de câblage

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

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano - Détection de fuite d'eau

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-water-sensor */ #define LED_PIN 9 // The Arduino Nano pin connected to the led #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define THRESHOLD 300 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Comment mesurer le niveau d'eau

Si vous souhaitez diviser la hauteur maximale de l'eau en différents niveaux et mesurer le niveau actuel, vous pouvez utiliser la technique dans le code ci-dessous. Notez que la hauteur maximale de l'eau est équivalente à la hauteur du capteur. Le code ci-dessous divise la hauteur maximale en 4 niveaux.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable to store the sensor value int level = 0; // variable to store the water level void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 levels Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ NOTE THAT:

  • SENSOR_MIN et SENSOR_MAX sont déterminés par calibration.
  • La méthode de cartographie mentionnée n'est pas précise, mais elle convient à de nombreuses applications.
  • Si vous souhaitez la rendre plus précise, vous pouvez mesurer les valeurs seuils pour chaque niveau. Reportez-vous à la section de calibration du manuel pour plus d'informations.

Étalonnage du capteur de niveau d'eau

La sortie du capteur est influencée à la fois par le niveau d'eau et la conductivité de l'eau. L'eau pure n'a pas de conductivité, tandis que l'eau contenant des minéraux et des impuretés est conductrice. Plus la conductivité de l'eau est élevée, plus le capteur sera sensible. De plus, la valeur de sortie est également affectée par la tension fournie à la broche VCC du capteur.

Pour garantir la précision lors de la lecture du capteur d'eau, nous suggérons de calibrer le capteur pour le type spécifique d'eau à surveiller.

Avant d'établir la limite pour activer une réponse, il est nécessaire d'évaluer la valeur réelle obtenue du capteur en réalisant une expérience.

Instructions pour le test :

  • Reportez-vous au croquis fourni ci-dessus lors de la lecture des valeurs des capteurs.
  • Placez le capteur dans l'eau au niveau de seuil souhaité.
  • Enregistrez la valeur affichée par le capteur dans le moniteur série.
  • Utilisez cette valeur comme seuil pour activer une action.

Il peut être nécessaire d'expérimenter pour terminer ce test. Soyez prêt à essayer différentes approches. Soyez prêt à expérimenter diverses stratégies. Faites preuve de patience et ne renoncez pas. Ayez de la persévérance et ne vous avouez pas vaincu.

Le test peut être utilisé pour révéler :

  • Valeur SENSOR_MIN, lorsque le capteur n'est pas immergé dans le liquide
  • Valeur SENSOR_MAX, lorsque le capteur est totalement immergé dans l'eau
  • Une valeur seuil pour reconnaître le déversement d'eau
  • Les valeurs seuils pour chaque niveau de votre échelle de degrés.

Vidéo

Mettez-vous au défi

  • Lorsqu'une fuite d'eau est détectée :
  • Envoyer un email
  • Envoyer un SMS
  • 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!