Lecture d’un débitmètre/capteur de débit d’eau sur le Raspberry Pi

Durchflussmesser / Water Flow Sensor am Raspberry Pi auslesen

Dans des projets tels que la serre automatisée, il est important de connaître la quantité d’eau, par exemple, qui atteint les plantes pour l’irrigation. Il existe également une variante peu coûteuse que nous pouvons lire rapidement à l’aide du langage de programmation Python et également intégrer dans notre système de maison intelligente. Nous pouvons interroger le capteur de débit d’eau Raspberry Pi à n’importe quelle fréquence (par exemple toutes les secondes) pour déterminer combien de litres le traversent par seconde ou minute.

Vous pouvez trouver la configuration exacte et le code correspondant dans ce tutoriel.

Pièces de matériel requises

Selon le projet, vous utiliserez quelques autres pièces matérielles. Dans ce tutoriel, cependant, nous nous limiterons à lire le capteur et n’assumerons donc que les parties absolument nécessaires. Ceux-ci sont:

Afin de pouvoir connecter un tuyau, nous avons besoin d’un connecteur de robinet. Il y a deux façons de faire ça:

  1. Imprimez-le vous-même (Imprimante 3D requis) à l’aide de ce fichier
  2. Achetez-le (un demi-pouce)

Connexion du capteur de débit d’eau YF-S201 au Raspberry Pi

Dans le Fiche technique du capteur, nous trouvons différentes informations, dont les plus importantes sont :

  • Tension d’entrée : 3,5 – 24 V
  • Plage de débit : 1-30 litres par minute
  • F = 7Q (L/MIN)
  • Exemples de fréquences :
    • 2L/MIN=16HZ
    • 4L/MIN=32.5HZ
    • 6L/MIN=49,3 Hz
    • 8L/MIN=65.5HZ
    • 10L/MIN=82HZ
  • une seule broche de signal (jaune)

La connexion au Raspberry Pi à l’aide d’un câble de démarrage est facile grâce aux trois broches :

  1. GND (noir) à GND (broche 6)
  2. VCC (rouge) à 3,3 V (broche 1)
  3. Signalez (jaune) un GPIO 13 (broche 33)

Bien qu’au moins 3,5 V soient requis selon la fiche technique, j’ai pu lire le signal avec succès même à 3,3 V. Si ce n’est pas possible, vous pouvez utiliser 5V et mettre une résistance plus grande entre la sortie du signal et le GPIO.

En principe, toute autre broche GPIO libre peut également être utilisée :

Affectation des broches GPIO du Raspberry Pi

Affectation des broches GPIO du Raspberry Pi

Il ne reste plus qu’à raccorder les durites. Nous avons besoin du connecteur de robinet pour le débitmètre, que nous pouvons mieux imprimer nous-mêmes :

Connecteur de robinet de capteur de débit d'eau Raspberry Pi

Si vous utilisez un autre capteur de débit d’eau Raspberry Pi, faites attention à la description. Celui utilisé ici avait les informations suivantes :

  • Diamètre intérieur : 11 mm
  • Diamètre extérieur : 20 mm

Par conséquent, une pièce peut être facilement modifiée à l’aide d’outils tels que Tinkercad. Il en va de même pour les raccords de tuyaux : si vous souhaitez raccorder des tuyaux d’eau de différentes dimensions, vous pouvez les imprimer connecteurs toi même.

Lecture du capteur de débit d’eau Raspberry Pi via Python

Nous créons maintenant un nouveau script Python avec le contenu suivant :

sudo nano water_flow.py

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#!/usr/bin/python

importer RPi.GPIO en tant que GPIO

heure d’importation, sys

#import paho.mqtt.publish comme publier

FLOW_SENSOR_GPIO = 13

#MQTT_SERVER = « 192.168.1.220 »

GPIO.setmode(GPIO.BCM)

GPIO.setup(FLOW_SENSOR_GPIO, GPIO.IN, pull_up_down = GPIO.PUD_UP)

nombre global

compte = 0

def countPulse(canal):

nombre global

si start_counter == 1 :

compte = compte+1

GPIO.add_event_detect(FLOW_SENSOR_GPIO, GPIO.FALLING, callback=countPulse)

tant que vrai :

essayer:

start_counter = 1

heure.sommeil(1)

start_counter = 0

débit = (comptage / 7,5) # Fréquence d’impulsion (Hz) = 7,5Q, Q est le débit en L/min.

print(« Le débit est : %3f litre/min » % (débit))

#publish.single(« /Garden.Pi/WaterFlow », flux, nom d’hôte=MQTT_SERVER)

compte = 0

heure.sommeil(5)

sauf KeyboardInterrupt :

print(‘ninterruption du clavier !’)

GPIO.cleanup()

sys.exit()

Enregistrez et quittez l’éditeur avec CTRL + O, CTRL + X.

Maintenant à expliquer le code:

  • Ligne 1-13 : Importations et définitions
  • Lignes 15-18 : Fonction appelée lorsque la tension appliquée au GPIO change
  • Ligne 20 : Définition de la fonction à appeler (de HIGH à LOW -> aussi FALLING)
  • Ligne 22 : Boucle infinie
  • Lignes 24-27 : Nous « activons » d’abord le compteur (start_counter = 1), puis nous attendons une seconde. Ensuite, nous désactivons à nouveau le compteur et calculons le débit par minute.
  • Facultatif (lignes 4, 7, 29) : Si nous voulons envoyer le résultat via MQTT.

Selon la fiche technique et la mise en œuvre, les valeurs par fréquence d’impulsion (Hz) de 7,5Q sont trouvés, Q indiquant le débit en litres/min. Cela signifie 7,5 Hz = 1 L/min. Cette valeur peut varier (dans la fiche technique liée, elle ressemble plus à 8-8,2 Hz) et doit être ajustée en conséquence.

Intégration dans la Smart Home (OpenHAB etc.)

Si vous arrosez vos lits, vous voulez absolument savoir combien d’eau a coulé au fil du temps. MQTT est très approprié pour cela, car nous pouvons communiquer via une interface. En utilisant l’exemple d’OpenHAB, c’est particulièrement facile, car beaucoup de choses sont déjà incluses.

Tout ce qui est nécessaire pour cela est un couche de persistance (base de données dans laquelle les valeurs sont stockées). Les valeurs peuvent ensuite être envoyées à un canal prédéfini via MQTT (informations sur ce ici). Les lignes correspondantes sont commentées dans l’exemple de code ci-dessus.

Last but not least, il serait conseillé de configurer le script Python pour qu’il démarre automatiquement afin qu’il envoie des données régulièrement.

pinit fg en rect red 28