Douche connectée

Douche connectée

Douche connectée

Création d'un smart mirror pour afficher les courbes de consommation d'une douche et la température ambiante.

Il faut

  • Magic mirror avec une Raspberry Pi 3.
  • Capteurs de température et humidité sur Arduino.
  • Capteur de température et flux d'eau sur Arduino.
  • PIR et Relais pour extinction de l'écran.
88% Complete

Infrastructure

Les capteurs sont branchés sur deux Arduinos. Les Arduino envoient en continue leur données vers la Raspberry qui se charge du stockage et de l'affichage dans un écran dissimulé derrière un miroir.

Lorsque personne n'est dans la pièce, par soucis d'économie d'énergie, on coupe l'alimentation de l'écran.

Le projet est découpé dans plusieurs parties que voici.

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

70% Complete
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

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()

Magic mirror

Magic mirror

80% Complete
Affichage des informations captées par les Arduino sur un écran dissimulé derrière un miroir.

Il faut

Montage

Je suis parti de la dimension de ma plaque de verre et j'ai construit virtuellement une boite autour en utilisant le logiciel Fusion 360 de Autodesk.

Conception 3D du boitier du mirroir

Conception 3D du boitier du mirroir dans Fusion 360 de Autodesk

Assemblage  des montants

La zone peinte en noir sera l'emplacement du mirroir.

Percés

Percage des montannt pour l'aération de l'écran et de la Raspberry Pi

Ajout de cales

Il y a de très forte chances pour que l'écran du magic mirror ne fasse pas exactement la dimension du mirroir, il est donc nécessaire d'ajouter des cales.

Peinture

Peinture (à la bommbe) des cales pour ne pas qu'elles apparaissent en transparence sous la vitre.

Peinture des bords de l'écran

Les bordures de l'écran n'y échappent pas non plus : il faut les peindre en noir

Le mirroir

Pose du mirroir et test des emboitements des différentes pièces.

Il ne reste plus qu'à mettre le tout dans la douche...

Installation logiciel

L'installation de Magic mirror est un jeux d'enfant sur une version stretch_full de Raspian (pour une raspberry Pi3, donc).

Magic mirror à besoin d'une interface graphique de raspian, il faut donc faire l’installation complète, et non pas la version lite (pour ne pas à avoir toutes les librairies graphiques à ajouter par la suite à la main).

Installer la version complète de raspian sketch. Une fois l'install finalisée, selon les indications de Magic Mirror, il faut, dans une fenêtre en ligne de commande, taper l'auto-installation :

bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)"

Configuration MagicMirror

Le fichier de paramétrage de Magic Mirror se trouve dans  le répertoire /home/pi/MagicMirror/config :

vi /home/pi/MagicMirror/config/config.js

Voir : https://github.com/MichMich/MagicMirror#modules

Affichage des informations envoyées par les Arduinos

A faire

Connexion d'une sonde DHT11 sur une Raspberry

Connexion d'une sonde DHT11 sur une Raspberry

100% Complete
Le branchement d'une sonde DHT11 sur une raspberry Pi 3 est très simple lorsqu'on prends le problème par le bon bout.

Il faut

  • Sonde DHT11 (environ 5€ chez Gotronic)

Câblage

Câblage d'une sonde DHT11 sur une raspberry Pi 3

Câblage d'une sonde DHT11 sur une raspberry Pi 3

Logiciel

Installer les librairies Adafruit et python :

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT

sudo apt-get update

sudo apt-get install build-essential python-dev python-openssl

sudo python setup.py install

L'accès au GPio est obligatoirement à faire un sudo sur Raspberry.Test d'exemple avec un DHT11 branché sur le port gpio 4 :

cd /home/pi/Adafruit_Python_DHT/examples

./AdafruitDHT.py 11 4

Va retourner un truc dans le style :

Temp=20.0*  Humidity=75.0%

Attention, la sonde ne répond qu'une fois par seconde.

Extinction de l'écran avec le Raspberry Pi

100% Complete
Le but est de couper physiquement l'alimentation de l'écran lorsque personne n'est devant, comme si on utilisait un interupteur.
Pour cela on va utiliser un détecteur PIR et un relais pour couper l'alimentation de l'écran.

Il faut

Câblage

RASPBERRY - PIR et relais

Câblage d'un capteur PIR et d'un Relais sur la raspberry Pi

Programme Python

Installation de l'environnement python (optionnel)

Plus exactement, de la dernière version de développement de Python et des paquets nécessaire (PGIO) en utilisant PIP :

sudo apt-get update

sudo apt-get install python-pip python-dev gcc

sudo pip install rpi.gpio

Le programme Python

Sur la pin 5 on branche le SIGnal du relais et sur la 11 le SIGnal du PIR.

Dans un fichier pirdetection.py écrire :

import RPi.GPIO as GPIO
import time

PinPIR = 11
PinRelay = 5
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PinPIR, GPIO.IN)         #Read output from PIR motion sensor
GPIO.setup(PinRelay, GPIO.OUT)
while True:
       i=GPIO.input(PinPIR)     # Lecture de l'etat du PIR
       if i==0:
             GPIO.output(PinRelay, i)  #Extinction de l'ecran
             time.sleep(0.1)
       elif i==1:               #When output from motion sensor is HIGH
             GPIO.output(PinRelay, i)  #Allumage de l'ecran
             time.sleep(60 * 10)        # Wait for 10 minutes

Il faut maintenant que ce script Python soit exécuté en tâche de fond à chaque démarrage de la Raspberry. Pour cela :

sudo crontab -e

et rajouter en fin de fichier :

@reboot sudo python /home/pi/pirdetection.py > ~/pirdetection.log

Le projet en images

Magic mirror

La Magic mirror pour afficher toutes les informations.

Il est fait avec un écran de récupération et une Raspberry Pi3.

Magic Mirror : Trou d'aération

L'écran et son alimentation vont produire de la chaleur, il faut donc l'évacuer en faisant des trous dans le haut de la boite.

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