Publié le 14 avril 2014 - par

Une mesure de niveau d’eau avec un Raspberry Pi

cuve_fred_250pxFred récupère l’eau de pluie. Pour éviter le gel, sa cuve de 1600 litres est enterrée. Mais comment connaître facilement la hauteur d’eau dans la cuve ?

Du radar en passant par les ultrasons ou le potentiomètre actionné par un flotteur, une quantité impressionnante de dispositifs existent. Fred a choisi d’utiliser des capteurs de faible prix, en les disposant sur toute la hauteur de la cuve. Si vous avez une cafetière Senseo, regardez comment est détecté le niveau (1 tasse – 2 tasses…).

cuve_fred_01L’eau de récupération sert pour l’arrosage du jardin et pour la chasse d’eau des WC. Une dizaine de capteurs sont répartis sur toute la hauteur de la cuve. Ils se déclenchent successivement lors de la montée du niveau. Un programme en Python, fourni sur la page de cette réalisation permet un affichage en mode texte.

Un des nombreux capteurs utilisés pour la mesure de la hauteur d'eau de la cuve de récupération des eaux pluviales.

Un des nombreux capteurs utilisés pour la mesure de la hauteur d’eau de la cuve de récupération des eaux pluviales.

Les capteurs ferment (ou ouvrent en inversant le bloc mobile) un contact. Chaque contact est relié à un port GPIO du Raspberry Pi, muni d’une résistance de tirage reliée au 3,3 V. Un relai commandé par le port 23 figure sur le schéma mais n’est pas utilisé dans cette application.

Schéma du Raspberry Pi utilisé pour la mesure de la hauteur d'eau dans une cuve de récupération des eaux pluviales.

Schéma du Raspberry Pi utilisé pour la mesure de la hauteur d’eau dans une cuve de récupération des eaux pluviales.

Vous pourrez connaître tous les détails de cette belle réalisation, en particulier la méthode utilisée par Frédéric pour monter ses capteurs et les relier à la framboise314, en lisant la page qu’il consacre à sa réalisation.

La description très détaillée et très complète devrait permettre de reproduire ce système sans trop de soucis.

Le boîtier contenant le raspberry Pi et la carte prototype Adafruit utilisée pour le montage.

Le boîtier contenant le raspberry Pi et la carte prototype Adafruit utilisée pour le montage.

Lorsque tout est en place, il suffit à Frédéric de lancer son programme en Python pour connaître instantanément la hauteur d’eau dans sa cuve.

cuve_fred_animBien entendu à partir des informations recueillies, rien n’empêche de prévoir un affichage graphique, ou d’étendre les fonctions du boîtier par ajout des programmes adéquats.

Conclusion

Merci à Frédéric pour sa belle réalisation et sa description que tout le monde peut réutiliser, ainsi que pour l’autorisation d’utiliser les images de son site sur framboise314.

Fred nous avait déjà régalé avec son robot Zumo que je vous avais présenté sur framboise314.fr début janvier en insistant sur la qualité des photos illustrant l’article…

Source

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

35 réflexions au sujet de « Une mesure de niveau d’eau avec un Raspberry Pi »

  1. Ping : Une mesure de niveau d’eau avec un Raspbe...

  2. Ping : Une mesure de niveau d’eau avec un Raspbe...

  3. Ping : Une mesure de niveau d'eau avec un Raspberry Pi...

  4. Marie M

    Bonjour,
    Je ne suis surement pas dans le bon article mais je ne trouvais pas d’autrs endroits où poser la question… je cherche à mesurer plusieurs paramètres sur un prototype sur le long terme ( pendant plusieurs semaines au moins) ; éclairement , température….
    Je possède déjà un luxmètre dont les mesures peuvent être extraites sur un ordinateur via un logiciel qui les mets sous forme de graphes ou de tableau . Je voulais savoir s’il était possible d’automatiser le tout grâce un raspberry pi ? Je précise mon idée ; il s’agirait que le luxmètre, branché en permanence sur le raspberry pi envoie les données sur le logiciel et qu’on puisse extraire du logiciel un fichier excel par exemple. Ceci est faisable « manuellement » grace à l’interface du logiciel, mais est-ce possible de programmer le raspberry pi pour qu’il le fasse tout seul?
    Sinon il y a-t-il un autre système qui le permettrait? (carte arduino, pcduino…?)
    Merci =)

    Répondre
  5. Yann

    Bonjour,
    Je suis actuellement en stage et le sujet de mon stage est de créer un programme similaire au votre qui doit envoyer un sms d’alerte grâce à un module GSM Cinterion MC52i. Le sms d’alerte est envoyé lorsque un capteur de contact du même type que celui utilisé ici détecte une fuite (un niveau d’eau) dans un puit apellé puisard. Il y a 8 puisards.

    Voici mon programme:
    import RPi.GPIO as GPIO
    import serial
    import time

    # ——[ Cablage des infos puisards sur GPIO]———–

    Puisard = [4, 7, 8, 9, 10, 11, 14, 15];

    # ———-[ Initialisation entree GPIO ]—————

    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)

    for i in range(0,8):
    GPIO.setup(Puisard[i], GPIO.IN)

    # ——[ Configuration port USB en sortie ]————

    ser = serial.Serial(
    port=’/dev/ttyUSB0′,
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
    )
    ser.open()
    ser.isOpen()

    # ———————[ Main ]————————–

    for i in range(0,8):
    if (i==0):
    p = « 1 »
    elif (i==1):
    p = « 2 »
    elif (i==2):
    p = « 3 »
    elif (i==3):
    p = « 4 »
    elif (i==4):
    p = « 5 »
    elif (i==5):
    p = « 6 »
    elif (i==6):
    p = « 7 »
    elif (i==7):
    p = « 8 »

    if GPIO.input(Puisard[i])==True:
    ser.close()
    else:
    ser.write(‘AT+CPIN=0000\r’)
    time.sleep(5)
    ser.write(‘AT+CMGF=1\r’)
    time.sleep(5)
    ser.write(‘AT+CMGS=+33630402731\r’)
    time.sleep(5)
    ser.write(‘Alerte puisard numero %s niveau bas\x1A’%p)
    time.sleep(5)
    ser.close()

    exit

    Le problème que je rencontre est que lorsque je lance le programme, le sms d’alerte m’indique systématiquement la dernière valeur de « p » pour i==7. Même lorsque je simule un courant sur le pin 9 du GPIO par exemple (ce qui devrait m’indiquer la valeur de puisard n°4 normalement).

    J’èspère que vous pourrez m’aider à résoudre ce problème, en vous remerçiant d’avance.

    Répondre
  6. bruno

    Je me baser sur ce ce projet afin de détecter la montée des eaux de pluie dans un puisard que j’ai dans mes caves. J’attends le matériel puis je me lance… 🙂

    Je souhaiterais ajouter des LEDS sur la carte prototype et quel celle-ci soit allumée lorsque le flotteur est actionné. Un petit support visuel en plus des fonctionnalités à développé en python.

    Ma question concerne la résistance à utiliser. 10K me semble trop élevé? La LED ne va pas réagir ou je me trompe?

    Répondre
      1. bruno

        Lorsque l’eau arrive au niveau d’un flotteur, je peux recevoir l’information au niveau de la raspberry via le port GPIO et que la led s’allume sur la carte prototype.

        Dans le schéma de fred-j, je pourrais donc remplacer les résistances de 10K par des résistances mieux adaptées aux LEDs et le GPIO du raspberry continuera a bien fonctionner avec les informations reçues des flotteurs? Je ne voudrais pas griller la raspberry.

        Répondre
        1. François MOCQ Auteur de l’article

          non ça ne grillera pas, les 10K sont des résistances de tirage qui fixent le potentiel de l’entrée du RasPi
          Si vous remplacez la 10K par une LED + une résistance en limitant le courant à une dizaine de mA la LED s’allumera quand le contact sera actif.
          Le contact met l’entrée à la masse donc le RasPi détecte bien un zéro…
          Pour ma part je protègerai la patte du RasPi par une résistance car en cas d’erreur de programmation, si la patte du RasPi est configurée en sortie, elle pourrait être mise à la masse par le contact et là…. pfffft !

          Répondre
  7. Nanou

    Eau secours ! 🙂

    Bonsoir,
    J’ai besoin de vos lumières : Je suis, en effet un peut nul en électronique, mais fan de domotique et ce montage m’intéresse car je voudrait mesurer le niveau d’eau de mon puits.
    Il n’est pas très profond, d’où mon besoin de le contrôler car j’utilise l’eau de ce puits pour toute la maison et le jardin.

    Donc, en tant que boécien, j’ai un peu plein de questions qui paraitrons bêtes mais qui pour moi veulent dire beaucoup :

    1/ Sur le schéma du circuit électronique, toute la partie basse, en dessous du fil de terre (GND) lié au GPIO 23 peut être supprimée, étant donné que le relais n’a pas d’intérêt pour moi ?

    2/ Sur le même schéma, il est indiqué 11 résistances reliés aux capteurs. C’est marrant mais je ne les voient pas (ou en tout cas pas autant) sur les photos de la carte prototype au dessus de la carte Raspberry Pi ?

    3/ En parlant de ces résistances, quand je recherche sur le Net, j’ai aussi des indications du type
    Résistance à couche carbone 10 Ohm sortie axiale 0411 0.5 W ou Résistance à couche métallique 10 Ohm sortie axiale 0414 1 W

    Il faut quoi en fait ?

    4/ Je voit une alimentation 3,3V, elle vient de la carte Raspberry ou non ? Idem pour la terre ?

    5/ Enfin, si tout se passe bien, on arrive à l’interface. Je vois un script python exécuté au travers d’une session Telnet si je ne me trompe ? Y a il un autre moyen de lancer le script pour obtenir le résultat via html ou canal IP ou autre ?

    En final, n’y a il personne pour me proposer la réalisation de ce « kit », sachant que je pourrais sans soucis m’occuper des capteurs, tube pvc et reste du montage ? 😉

    En tout cas, merci de m’aider.

    Nanou

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Nanou
      1) oui vous pouvez supprimer si vous n’avez pas besoin du relais
      2) il y a autant de resistances que de capteurs
      3) attention ce sont des 10Kohms = 10 000 ohms pas des 10 ohms! le modèle 0,5w est suffisant
      4) oui ça vient du RasPi idem pour la masse (Ov) ce n’est pas la terre mais la masse
      5) là on est en mode texte, si vous voulez un affichage en html, il faudra mettre un peu les mains dans la programmation 😉
      Cordialement
      François

      Répondre
    2. krisofe

      Bonsoir,

      Un béotien de plus qui s’interroge jusqu’à la connexion des résistances sur cette carte proto.
      Si jamais Nanou vous avez terminé et que vous auriez une petite photo gros plan, j’en serai ravis.

      Merci pour ce superbe tuto,

      Christophe

      Répondre
  8. azer

    Bonjour,

    Super article. Je vais me lancer pour gérer ma cuve de récupération d’eau (~3000l). J’utiliserai ensuite les infos qui me sont retournés pour activer une électrovanne pour alimenter la cuve en eau si le niveau baisse de trop (cuve enterrée). J’ai déjà une raspberry qui gère mon arrosage automatique (juste un relai qui active/désactive une pompe à des heures définies). Je vais y ajouter la détection de niveau et l’électrovanne.

    Bon, j’espère y arriver tout seul comme un grand, mais je pense que je reviendrai poster quelques commentaires durant la phase de montage 🙂 En tout cas merci pour l’article !

    Répondre
    1. François MOCQ Auteur de l’article

      merci beaucoup !
      si vous le souhaitez vous pouvez aussi faire une description de votre réalisation avec photos…
      Vous pouvez la poster dans le forum au chapitre tutoriels
      ou sur le blog framboise314….
      éventuellement je peux rédiger l’article à partir de vos infos/notes/images/captures d’écran
      en tout cas merci pour le retour !
      cordialement
      François

      Répondre
      1. azer

        Oui pourquoi pas ! C’est aussi bien de capitaliser les connaissances pour que d’autres puissent les réutiliser. Votre système de niveau d’eau est super. J’ai commandé sur ebay les capteurs. Les résistances je les ai déjà, et j’ai des plaques de prototypage. Donc j’ai quasiment tout hormis la baguette alu et le tube PVC. Mais ça je vais les trouver sans problème.

        Pour le moment mon programmateur d’arrosage fonctionne avec une raspberry + un relai + un programme python (on/off par cron) qui active une pompe immergée sur laquelle sont raccordées les tuyau goutte à goutte. Bon pour moins cher en achetant un simple programmateur de prise, j’aurai pu le faire aussi. Mais je n’aurai pas pu le contrôler à distance en wifi, et je n’aurai pas pu ajouter des systèmes comme la gestion du niveau d’eau de la cuve.

        A terme ce système va contrôler bien plus de choses dans mon jardin (arrosage fin en mesurant l’humidité, la température, les besoins de la plante etc.) 😉

        bref. Voilà, je m’emballe. a+

        Répondre
        1. azer

          Hello,

          Ça y est, les capteurs sont arrivés. Je vais faire un test avec un capteur déjà pour préparer le code, et ensuite je prépare la barre complète.

          Il faudra ensuite que j’interface tout ça avec mon système existant 😉

          Répondre
  9. azer

    Bonjour,

    Voilà. le système est entièrement terminé et mis en place. Je vais faire une page wiki pour les photos, la réalisation et le code. Pour ce dernier je suis parti du code de Fred (python) que j’ai modifié pour renvoyer une chaine json au travers d’un serveur nodejs qui affiche graphiquement l’état de la cuve sur une page.

    Sur le système j’avais déjà 2 relais branchés et qui sont toujours fonctionnels pour mon système d’arrosage automatique.

    Voilà. Si vous êtes d’accord je vais posté sur le wiki les liens vers votre article et celui de Fred.

    Bonne journée 🙂

    Répondre
      1. azer

        Bonjour,

        J’ai mis un peu de temps à rédiger, mais voilà le lien de mon petit projet. J’ai tout mis sur github:
        https://github.com/zerr0s/sprayBot/wiki/sprayBot:-Gestion-d'arrosage-automatique#welcome-to-the-spraybot-wiki

        Il me reste encore la partie code à ajouter dans le wiki, mais il est déjà accessible sur github. Ça va venir. Après rien ne vous empêche si vous le voulez de récupérer les infos et l’ajouter sur votre site.

        A venir:
        – Déclenchement d’une alerte si le niveau de la cuve descend à moins de x%
        – Déclenchement d’une électrovanne pour remplir la cuve automatiquement si le niveau est inférieure à x%
        – Ajout d’un capteur de pluie pour ne pas arroser alors qu’il pleut
        – Ajout sur l’IHM de la programmation des arrosages

        En tout cas, merci pour cet article qui m’a ouvert pas mal de possibilité.

        Répondre
  10. zaki

    bonjour
    je suis entrain de faire un programme pour ouvrir et fermer mes volet et allumer ma lumière ou l’éteindre par contre je rencontre un problème au niveau du retour d’info je lance ma commande par mon téléphone mais je ne sais pas concrètement si j’ai bien allume ou pas la lumière et cela je voudrai le faire en retour par info sur mon tel ou par ma connexion au rasberry a distance
    merci d’avance de votre aide

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      il faudrait relire le port, ce qui indique qu il a basculé
      pour etre certain de l allumage de la lumière c est une autre histoire (détecteur de lumière, mesure du courant dans la lampe…)
      surveillez les articles futurs de framboise314, une gestion de poulailler par RasPi pourrait vous apporter des réponses 😉
      cordialement
      François

      Répondre
  11. Ping : Mesure volume d'eau de pluie | Pearltrees

  12. Bedez

    Bonjour
    Je vais réaliser ce système mais des questions m’interpelle?
    Le Rasberry est sans OS, donc il faut lui mettre sur la carte SD, mais lequel?
    Puis ou et comment pet t’on le programme Python?
    je suis novice en rasberry, cela va etre ma premiere realisation.
    Cordialement
    Daniel

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      Comme tout ordinateur le Raspberry Pi est livré sans système…
      Je sais… sur ceux qu’on achète chez Darty ou CDiscount il y a windows préinstallé mais c’est de la vente forcée 🙂
      Il faut donc une carte SD qui embarquera le système. Prenez une carte SD de bonne qualité (EVO 16 par exemple)
      Le programme le plus courant est Raspbian qui est celui recommandé par la Fondation Raspberry Pi
      Il embarque d’ailleurs le langage Python d’origine
      Pour le programme Python qui servira à faire fonctionner votre système il sera dans le dossier personnel de l’utilisateur pi
      Apparemment vous êtes novice … pas seulement en Raspberry Pi mais aussi en système et en programmation? je me trompe ?
      Pour démarrer je peux vous conseiller mon bouquin (oui, je sais c’est de la pub) et aussi de regarder cette vidéo où il y a un conseil pour les débutants (à 2mn 58sec)
      Prenez le temps de comprendre et d’apprendre avant de vous lancer dans un projet d’envergure. Le Raspberry Pi est parfait pour ça.
      Bon amusement avec la framboise, n’hésitez pas si vous avez des questions, posez les sur le blog ou mieux sur le forum
      Bonnes fêtes de fin d’année
      Cordialement
      François

      Répondre
  13. It-community

    Bonjour,

    Une question simple comment avez vous rendu étanche les jonctions de câble car les gaines thermo ne rendent pas étanche. Pas de problème de court circuit via l’eau de la cuve ?

    Merci par avance

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      c’est une résistance de tirage qui amène le 3v3 sur les capteurs. Le capteur met le fil à la masse. Cette résistance empêche aussi qu’il y ait trop de parasites sur les lignes en maintenant une tension de 3v3 sur les fils. (un fil en l’air c’est une antenne…)

      Répondre
      1. Miguel

        Bonjour,

        désolé pour le déterrage de post. Mais la question serait plutôt est-ce que ces résistances sont nécessaires ou juste « nice to have » ?

        Merci

        Répondre
        1. François MOCQ Auteur de l’article

          Bonjour
          eh non, il faut les mettre ! elles servent à maintenir un niveau haut (3,3v) sur le fil.
          En raison de la longueur des fils, ils se comportent comme des antennes et « ramassent » tous les parasites qui traînent (moteurs électriques qui démarrent, néons etc.)
          ces résistances de pull-up empêchent les parasites de fausser les informations reçues par les GPIO.
          jetez un coup d’œil ici https://forum.arduino.cc/index.php?topic=78406.0
          cdt
          françois

          Répondre
  14. Olivier

    Bonjour,

    Peut-on éviter d’utiliser des capteurs?

    En mettant uniquement 2 fils ouverts, quand l’eau est en contact avec les 2 fils, cela a t il le même comportement?

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.