Detecteur de fuite d’eau avec un raspberry pi

Dans cette article nous allons voir comment réaliser un détecteur de fuite d’eau pour le raspberry pi pour moins de 5€.

raspberry-ban

Le montage

Les détecteurs de fuites d’eau disponible pour les solutions domotique commerciales ont un fonctionnement très simple. Il suffit d’appliquer une tension au bout de deux bornes en métal séparer de quelques millimètres. En cas de fuite, comme l’eau est un fluide conducteur, le circuit électrique se ferme et le courant passe.

Ce courant est relativement faible et il est nécessaire de l’amplifier. Pour cela, nous utilisons un transistor Darlington.

Il et alors possible de réaliser un circuit imprimé à partir du montage suivant :

Schematic

ou alors de commander un kit à monter soit même. Personellement, j’ai commandé ce kit pour un peut moins de 6€ ici.

J’ai alors remplacé le buzzer par une sortie vers le raspberry pi (- de buzzer vers le raspberry pi) et l’alimentation 9V par l’alimentation en 3V du raspberry pi. Attention à bien utiliser une alimentation 3V au risque de griller votre raspberry.

J’obtiens le module suivant :

IMG_20150506_195036

Le code

Le code est assez similaire à celui de la détection d’un interrupteur. Afin de profiter au mieux des ressources du raspberry, j’utilise la librairie bcm2835 déjà détaille dans cet article.

Le code est le suivant, à noter que nous utilisons cette fois une résistance de pull-up.

#include <bcm2835.h>
#include <stdio.h>
// Input sur le GPIO22 qui est nommé 15 dans le système de la librairie
#define PIN RPI_GPIO_P1_15
 
int main(int argc, char ** argv) {
    if (!bcm2835_init()) {
        return 1;
    }
    // Fixe le GPIO en entrée
    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);
    //  avec une résistance de pull down
    bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);
 
    while (1) {
        // lecture du niveau d'entrée
        uint8_t value = bcm2835_gpio_lev(PIN);
        printf("lecture GPIO22: %d\n", value);
 
        // attendre 2s
        delay(2000);
    }
    //Un brin de toilette
    bcm2835_close();
    return 0;
}

Pour compiler :

$ gcc main.c -lrt -lbcm2835 -o main.o

Vous devriez alors voir apparaitre un 1 lorsque tout va bien et un 0 si vous plongez votre capteur dans l’eau.

Améliorations possibles

  • Ajouter une interface php
  • Ajouter une alerte email / téléphone
  • Ajouter un module RF

Voilà quelques idées pour améliorer ce capteur qui permet pour un coût raisonnable d’améliorer votre installation domotique.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.