Douche connectée

Températures & débit mètre sur Raspberry

Le but est de stocker les données dans un fichier au format csv provenant d'un capteur de température et d'un débit mètre connectés sur une Raspberry Pi

Il faut

  • Raspberry Pi avec Raspbian (Strech)
  • Débit mètre (11 € chez Gotronic),
  • Sonde température et humidité (DHT11)
  • Sonde température
70% Complete

Principe du capteur de débit

Ce capteur de débit est constitué d'un rotor et d'un capteur à effet hall. Lorsque l'eau passe dans le capteur, la rotation du rotor génère des impulsions en fonction du débit. La fréquence de sortie varie en fonction de la vitesse du rotor.

Câblage

Raspberie + Flux meter_bb

Programme

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time, sys
# Initialisation des GPIO ----------------------------------
# Il faut mettre la Pin du sensor YF-S201 sur la Pin No11 du RPI
Pin_FlowSensor = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(Pin_FlowSensor, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
# Initialisation de la sonde DHT11 -------------------------
import Adafruit_DHT
Pin_DHT11    = 4
# ----------------------------------------------------------
global pulseCount
pulseCount = 0
global tdelta
tdelta = 0
calibrationFactor = 7.5
time_start= time.time()    # en secondes
# ----------------------------------------------------------
# function pour le callback de l'evenement du FlowSensor.
# Lorsque le FlowSensor va tourner, on va enregistrer les
# donnees.
def fct_decompte(channel):
    global pulseCount
    global time_start
    pulseCount += 1
    
    # Enregistrement des donnees toutes les 2 secondes
    tdelta = (time.time() - time_start)
    if tdelta  >= 2:
       # Calcul du flux
        flow = (pulseCount / calibrationFactor) / (tdelta * 60)
        flow = round(flow,2)
        
        # Recuperation de la temperature et de l'humidite
        humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, Pin_DHT11)
        
        # ecriture de donnees dans le fichier
        fichier = open("/home/pi/mesuresDebit.log", "a")
        fichier.write("%s,%s,%s,%s\n" % (time.strftime('%a %H:%M:%S'), flow, temperature, humidity))
        fichier.close()
        
        # traces a l ecran
        print time.asctime( time.localtime(time.time()) ),' debit : ', flow, 'l/min ', temperature, 'C ',humidity, '%'
                
        # Remise a zero
        tdelta    = 0
        pulseCount = 0
        time_start = time.time()
# ----------------------------------------------------------
# On ajoute une gestion d'evenement sur le GPIO du capteur
# Des qu'on va avoir une interruption sur le GPIO du capteur, on
# envoie la fonction de decompte
GPIO.add_event_detect(Pin_FlowSensor, GPIO.RISING, callback=fct_decompte)
while True:
    try:        
        # On s'arrete toutes les 1 secondes
        # On a donc une mesure par secondes
        time.sleep(1)
        
    except KeyboardInterrupt:
        print '\ncaught keyboard interrupt!, bye'
        GPIO.cleanup()
        sys.exit()

Copyright © 2015 Alex-design.fr All rights reserved.