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.

  • MakerFun pour Raspberry Pi 4 Model B & Raspberry Pi 3 B + Boîtier avec Ventilateur et radiateur, Boîtier en Acrylique 4 Couches superposable Boîtier Cluster pour Raspberry Pi 3/2 modèle B
  • Freenove Ultimate Starter Kit for Raspberry Pi 4 B 3 B+ 400, 558-Page Detailed Tutorial, Python C Java Scratch Code, 223 Items, 104 Projects
    4 programming languages -> Python (compatible with 2&3), C, Java and Scratch. 558-page detailed tutorial (including basic electronics knowledge) -> The download link can be found on the product box. (No paper tutorial.) 223 items for 104 interesting projects -> Each project has circuit diagrams and verified code with detailed explanations. Compatible models -> Raspberry Pi 400 / 4B / 3B+ / 3B / 3A+ / 2B / 1B+ / 1A+ / Zero W / Zero. (NOT included in this kit.) Get support -> Our technical support team is always ready to answer your questions.
  • GeeekPi Raspberry Pi Cluster Boîtier, Raspberry Pi Rack Boîtier Stackable Boîtier avec Ventilateur 120mm RGB LED 5V pour RPi 4B/3B+/3B/2B/B+ et Jetson Nano (4-Couches)
    Large application --- Le nouveau boîtier de cluster à 4 couches est conçu pour les clusters Raspberry Pi, les serveurs NAS Raspberry Pi, les clusters Jetson Nano et les clusters de baies de disques pour fournir une protection de l'environnement et des solutions de refroidissement. Il est compatible avec Raspberry Pi4B / 3B + / 3B / 2B / B +, disque dur de 2,5 mm, Jetson Nano (Remarque: pas pour Raspberry Pi Zero) Installation simple --- Les vis de fixation longues sont conçues avec des vis à tête plate, lisses et faciles à installer. La conception à toute épreuve des trous de positionnement peut vous éviter d'avoir des problèmes lors de l'installation. Une variété de vis avec des spécifications différentes peut répondre à vos différents besoins de fixation de produits. Par exemple, Raspberry Pi, disque dur de 2,5 pouces, disque dur de 3,5 pouces, Jetson Nano et ainsi de suite. Meilleur effet de refroidissement --- Avec ventilateur 120 mm 5 V RGB LED et pour une meilleure dissipation de la chaleur; Ce boîtier est ouvert sur trois côtés, chaque couche acrylique contenant suffisamment d'espace pour un débit d'air maximal pour chaque Raspberry Pi; Avec un grand ventilateur sur un côté pour faire circuler un vent fort pour réduire la température de chaque Raspberry Pi; Bonne compatibilité avec Raspberry Pi --- Il peut avoir accès à tous les ports de la carte Raspberry Pi, tels que le port GPIO, le port HDMI, le port USB, l'emplacement pour carte SD, etc. Il est également compatible avec les derniers Raspberry Pi 4 Model B et Raspberry Pi 3B + / 3B / 2B / B +. Support technologique --- Si vous n'êtes pas entièrement satisfait de l'affaire, faites-le nous savoir et nous vous donnerons une solution satisfaisante. WIKI: https://wiki.52pi.com/index.php/Rack_Tower_SKU:_ZP-0088;Vidéo d'assemblage: https://www.youtube.com/watch?v=Fq2NmbZIl9c