Raspberry Pi Pico - capteur d'eau

Ce guide vous montrera comment utiliser un capteur d'eau avec le Raspberry Pi Pico. Un capteur d'eau peut détecter les fuites d'eau, mesurer les précipitations, vérifier si un réservoir est trop plein ou surveiller les niveaux d'eau. Nous apprendrons tout cela en détail.

Raspberry Pi Pico et module de capteur d'eau

Préparation du matériel

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×Water level sensor
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

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

Schéma de brochage du capteur de niveau d'eau

Le capteur de niveau d'eau a trois broches :

  • Broche S (Signal) : sortie analogique. Connectez-la à l'entrée analogique du Raspberry Pi Pico.
  • Broche + (VCC) : fournit l'alimentation au capteur. Utilisez entre 3,3 V et 5 V.
  • Broche - (GND) : connexion à la masse.
Schéma des broches du capteur d'eau

※ Note:

Le signal du capteur change lorsque la tension sur sa broche VCC est ajustée.

Comment fonctionne le capteur de niveau d'eau

À mesure que le capteur rencontre davantage d'eau, la tension sur la broche de signal augmente.

Examinons ceci plus attentivement.

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 comporte dix lignes en cuivre visibles. Il contient cinq lignes d'alimentation et cinq lignes de capteur. Ces lignes sont placées côte à côte, avec une ligne de capteur entre chaque paire de lignes d'alimentation. Normalement, ces lignes sont séparées, mais si le capteur est placé dans l'eau, l'eau relie les lignes.

Les pistes agissent comme une résistance réglable (comme un potentiomètre) dont la résistance varie en fonction du niveau d'eau.

  • La variation de la résistance indique la distance entre le haut du capteur et la surface de l'eau.
  • La résistance diminue à mesure que le niveau d'eau augmente.
  • Plus le capteur est immergé dans l'eau, mieux il conduit l'électricité, ce qui diminue la résistance.
  • Moins le capteur est immergé dans l'eau, moins il conduit l'électricité, ce qui augmente la résistance.
  • Le capteur produit une tension de sortie qui dépend de la résistance.

Nous pouvons déterminer le niveau d'eau en mesurant la tension.

Diagramme de câblage

Connectez la broche VCC du capteur à la broche 5V du Raspberry Pi Pico et la broche GND du capteur à la broche GND du Raspberry Pi Pico pour alimenter le capteur.

Il n'est pas recommandé de laisser le capteur sous tension dans un environnement humide, car cela peut endommager rapidement le capteur et réduire sa durée de vie. Pour éviter cela, n'allumez le capteur que lorsque vous devez vérifier ses données. Connectez la broche VCC du capteur à une broche numérique sur le Raspberry Pi Pico. Pour lire le capteur, mettez la broche du Pico à l'état HIGH. Après la lecture, mettez-la à l'état LOW.

Schéma de câblage du capteur d'eau pour Raspberry Pi Pico

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

Code pour Raspberry Pi Pico - Lecture de la valeur du capteur d'eau

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-water-sensor */ from machine import Pin, ADC import time # Constants for power and signal pins POWER_PIN = 0 # The Raspberry Pi Pico pin GP0 connected to the VCC pin of water sensor SIGNAL_PIN = 26 # The Raspberry Pi Pico pin GP26 (ADC0) connected to the S pin of water sensor # Setup power pin power = Pin(POWER_PIN, Pin.OUT) power.value(0) # Initially turn off the sensor # Setup ADC for reading the water sensor signal = ADC(Pin(SIGNAL_PIN)) while True: power.value(1) # Power on the sensor time.sleep(0.01) # Wait 10ms for sensor to stabilize value = signal.read_u16() # Read the analog value (0-65535 range on Pico) power.value(0) # Power off the sensor print("Sensor value:", value) # Print the value time.sleep(1) # Wait for a second before next read

Étapes rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le micrologiciel MicroPython est installé sur votre Raspberry Pi Pico.
  • Si c'est votre première utilisation d'un Raspberry Pi Pico, reportez-vous au tutoriel Raspberry Pi Pico - Démarrage pour obtenir des instructions détaillées.
  • Connectez le Raspberry Pi Pico au capteur d'eau selon le schéma fourni.
  • Connectez le Raspberry Pi Pico à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en vous rendant dans Outils Options.
  • Dans l'onglet Interpréteur, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le port correct est sélectionné. L'IDE Thonny détectera automatiquement le port, mais vous devrez peut-être le sélectionner manuellement (par exemple, COM3 sur Windows ou /dev/ttyACM0 sur Linux).
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le fichier sur votre Raspberry Pi Pico par:
    • Cliquez sur le bouton Enregistrer, ou utilisez les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, vous verrez deux sections : Cet ordinateur et Raspberry Pi Pico. Sélectionnez Raspberry Pi Pico.
    • Enregistrez le fichier sous main.py.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script. Le script sera exécuté.
  • Placez lentement le capteur dans un verre d'eau.
  • Consultez le message dans le Shell situé en bas de Thonny.

Il affichera une valeur de 0 si le capteur ne touche à rien.

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 1595 Sensor value: 6201 Sensor value: 18163 Sensor value: 27386 Sensor value: 27839 Sensor value: 28229 Sensor value: 29116 Sensor value: 29868 Sensor value: 33341 Sensor value: 33822 Sensor value: 35398
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

※ Note:

Ne mettez pas le capteur complètement sous l'eau; seules les parties visibles sur la carte électronique doivent toucher l'eau. Installez-le avec soin.

Si vous nommez votre script main.py et que vous le sauvegardez dans le répertoire racine du Raspberry Pi Pico, il s’exécutera automatiquement à chaque mise sous tension ou réinitialisation du Pico. Cela est utile pour les applications autonomes qui doivent commencer à s’exécuter immédiatement après l’alimentation. Si vous nommez votre script avec un autre nom que main.py, vous devrez l’exécuter manuellement à partir du Shell de Thonnys.

Comment détecter les fuites d'eau

Pour vérifier les fuites d'eau, la pluie ou des réservoirs qui débordent, nous comparons la lecture à une limite prédéfinie. Nous définissons cette limite dans la partie calibration de ce tutoriel.

Code Raspberry Pi Pico - Détection des fuites d'eau

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-water-sensor */ from machine import Pin, ADC import time # Constants for power and signal pins POWER_PIN = 0 # The Raspberry Pi Pico pin GP0 connected to the VCC pin of water sensor SIGNAL_PIN = 26 # The Raspberry Pi Pico pin GP26 (ADC0) connected to the S pin of water sensor THRESHOLD = 15000 # Setup the power pin power = Pin(POWER_PIN, Pin.OUT) power.value(0) # Initially turn off the sensor # Setup ADC for reading the water sensor signal = ADC(Pin(SIGNAL_PIN)) # Initialize the power pin to off power.value(0) while True: power.value(1) # Turn on power to the sensor time.sleep_ms(10) # Short delay to allow sensor to stabilize value = signal.read_u16() # Read the analog value from sensor power.value(0) # Turn off power to the sensor if value > THRESHOLD: # Check if the water level exceeds the threshold print("Water detected") time.sleep(1) # Delay for a second before the next reading

Comment mesurer le niveau d'eau

Pour diviser le niveau d'eau le plus élevé en étapes distinctes et déterminer à quelle étape il se situe actuellement, suivez la méthode décrite dans le code ci-dessous. Notez que le niveau d'eau le plus élevé correspond à la hauteur du capteur. Ce code divise la hauteur maximale en 4 étapes.

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico 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/raspberry-pico/raspberry-pi-pico-water-sensor */ from machine import Pin, ADC import time # Constants for power and signal pins POWER_PIN = 0 # The Raspberry Pi Pico pin GP0 connected to the VCC pin of water sensor SIGNAL_PIN = 26 # The Raspberry Pi Pico pin GP26 (ADC0) connected to the S pin of water sensor SENSOR_MIN = 0 SENSOR_MAX = 33408 # Setup the power pin power = Pin(POWER_PIN, Pin.OUT) # Setup ADC for reading the water sensor signal = ADC(Pin(SIGNAL_PIN)) # Function to map the sensor value from one range to another def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min power.value(0) # Initially turn off the sensor while True: power.value(1) # Activate the sensor time.sleep_ms(10) # Wait for the sensor to stabilize value = signal.read_u16() # Read the sensor output power.value(0) # Deactivate the sensor # Map the value to a 0-4 scale, adjusting for 16-bit ADC value level = map_value(value, SENSOR_MIN, SENSOR_MAX * 65535, 0, 4) # Print the water level print("Water level:", level) time.sleep(1) # Delay for one second before repeating

※ Note:

  • SENSOR_MIN et SENSOR_MAX sont définis lors de l'étalonnage.
  • La méthode de mappage décrite peut ne pas être très précise, mais elle fonctionne bien pour de nombreuses utilisations. Pour augmenter la précision, mesurez les valeurs seuils pour chaque niveau comme décrit dans la section d'étalonnage.

Étalonnage du capteur de niveau d'eau

Les performances du capteur varient en fonction du niveau d'eau et de sa conductivité. L'eau pure ne peut pas conduire l'électricité, mais l'eau contenant des minéraux et des impuretés peut conduire l'électricité. Si l'eau présente une conductivité plus élevée, le capteur est plus réactif. De plus, la valeur de sortie varie lorsque des tensions différentes sont utilisées sur la broche VCC du capteur.

Pour des mesures précises avec le capteur d'eau, nous vous recommandons de le configurer pour le type d'eau spécifique que vous vérifiez.

Avant de fixer une limite à une action, testez d'abord la valeur réelle du capteur.

Comment faire le test :

  • Regardez le dessin fourni pour vérifier la lecture du capteur.
  • Mettez le capteur dans l'eau jusqu'au niveau souhaité.
  • Notez le nombre que vous voyez dans le Shell en bas de Thonny.
  • Utilisez ce nombre comme seuil pour déclencher une action.

Vous pourriez avoir besoin d'essayer ce test plusieurs fois pour réussir.

Le test peut aussi aider à découvrir :

  • La lecture la plus basse du capteur lorsque l'appareil n'est pas dans l'eau.
  • La lecture la plus élevée du capteur lorsque l'appareil est complètement immergé dans l'eau.
  • Une valeur prédéfinie pour identifier les fuites d'eau.
  • Réglez les valeurs pour différents niveaux sur votre échelle.

Vidéo

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