Automatisme pour aquarium à base de RaspberryPi

Une histoire sans fin

Un jour, Réglisse ( c’est le chat ) s’arracha les poils des pattes !

En soit, ce n’est pas grave, mais quand même, il fallait faire quelque chose …

Direction donc le divan du vétérinaire ; peu de temps suffit pour que le verdict tombe, implacable : Pépette s’ennuie …

Que faire ? D’après le véto, il faut soit prendre un chaton, soit prendre un poisson rouge ! …  Un chaton : bof, alors un poisson ? Mais tout seul, le pauvre, il va s’ennuyer et s’arracher les écailles … c’est un truc à s’arracher les cheveux !


Va pour un aquarium

Va pour un aquarium : d’eau douce ou d’eau salée ? L’aquarium d’eau salée est très coloré, lumineux… mais il coute cher et n’est pas le plus simple pour débuter. Et puis, comme on dit chez nous, on n’est pas Rothschild ( c’est d’ailleurs la raison pour laquelle il faut toujours manger son fromage avec du pain … hein ? Vous avez raison, ça n’a rien à voir, mais j’écris ce que je veux ).

Un samedi probablement, passage chez Botanic et retour avec un bac de 110 litres. Je prépare le fond terreux ad’hoc ( à ne pas confondre avec le cul terreux qui la aussi n’a rien à voir ), de l’eau, et c’est parti pour 3 semaines de … de rien du tout. Pourquoi ? Parce que ! c’est marqué dans les livres : il faut respecter le « cycle de l’azote ».

Le cycle étant terminé, je plante ; des algues vertes, rouges… et c’est reparti pour 3 semaines … car c’est aussi marqué dans les livres.

Puis j’ajoute les poissons avec tous les soins associés : la température pile poil à 24°C, la lumière de telle heure à telle heure, la nourriture mais pas trop, l’oxygène, le gaz carbonique pour que les plantes poussent bien … mais surtout, le changement hebdomadaire d’une certaine quantité d’eau; et ça, à longue, c’est agaçant, d’où l’idée d’avoir un système ingénieux, fiable et pas cher qui serait en mesure de faire le job.


Automate n°1 ( 2011 ou 2012 ? )

 IMG_0760-2

Le premier automate est resté à l’état de gribouillis informes, basé sur des portes NAND et des afficheurs 7 segments antédiluviens. Le nombre de composant pour arriver à quelque chose de valable aurait été bien trop grand.

Quelques recherches sur internet ont alors montré qu’il existait pas mal de microcontrôleurs qui pouvaient être programmés et donc limiter le nombre de composants.

Le truc a été abandonné au bout de quelques mois.

Eagle1


Automate n°2 ( fin 2012 )

Le second automate qui n’a fonctionné qu’en test avec des électrodes dans un verre d’eau était basé sur un environnement de test Microchip : Pickit3 … Les sources ont disparues quelques part dans une benne avec le PC… Le but était toujours d’obtenir au final une boite, avec les circuits et les relais de commandes à l’intérieur. Cependant, le microcontrôleur utilisé n’étant pas prévu pour une utilisation en amateur, son format CMS était impossible à souder manuellement. C’est la raison pour laquelle j’ai abandonné rapidement.

Au delà du choix du contrôleur, le cœur du truc est la mesure de la hauteur d’eau car le but était de vider partiellement puis de remplir l’aquarium, une fois par semaine. Le principe de l’électrode qui plonge dans l’eau ne permet pas réellement de mesurer la hauteur d’eau et de plus, il provoque une électrolyse : les électrodes disparaissent avec le temps. J’ai opté à l’époque pour un capteur capacitif, car ses parties métalliques pouvaient être isolées, donc pas de contact ni avec l’eau, ni avec les poissons. L’encrassement par le calcaire ne changeait pas non plus son fonctionnement, tout au moins sur la période où j’ai effectué les essais. La première version fut sous forme de 2 cylindres l’un dans l’autre, sans contact entre eux, le cylindre extérieur étant relié à la masse pour limiter l’influence du 50 Hz sur la mesure, parasites violents surtout lorsque les néons sont allumés. Ce système fonctionnait à peu près … à peu près seulement car pas très précis et dépendant du fait que le capteur était mouillé ou sec … Le principe du système était de considérer que ce double cylindre était proche d’un condensateur dont la valeur dépendait du milieu dans lequel il se trouvait ( eau, eau/air ou air ). En gros, C = f(ε), et ε varie entre 1 (l’air) et 80 (l’eau pure… si tant est que l’eau d’un aquarium soit pure … ). Ainsi, inséré dans un bistable à base de NE555 dont on trouve des schémas partout, et en comptant le nombre de front par unité de temps, on obtient un nombre de fronts proportionnel à la hauteur d’eau, lui même convertible en hauteur d’eau en mm.

IMG_0765-2

Le capteur cylindrique utilisait ce tube acheté chez Couzon à St Chamond , c’est la seule trace qui reste !

IMG_0844-2

J’ai ensuite modifié le capteur : il était composé de 2 fils électrique isolés ( fil électrique classique comme ceux du rayon électricité de chez Casto … ),  pliés en U représentant grossièrement les 2 plaques d’un condensateur plan. Le total était monté sur un morceau de plexiglas, et entouré par un tube d’acier relié à la masse pour avoir une simili cage de Faraday. Au delà du fait qu’il fonctionnait à peu près, il représentait une cachette sympa pour les poissons ; j’y ai d’ailleurs trouvé 2 naissances !!


Automate n°3 ( 2013 ? )

Le principe général est montré sur le schéma qui suit. Je l’ai retrouvé dans un visio de novembre 2012 … et c’est à peu près  ce qui est en place aujourd’hui !

Principe1

En même temps que le changement d’environnement ( Microchip pour MIKROELECTRONIKA ), j’ai commencé le circuit des relais. Le schéma (Créé avec Eagle de CadSoft) était celui-ci.

Board1

Le board associé était :

Relais-Board1

Ce qui donne approximativement ceci ( la photo est celle d’une plaque plus récente, où l’alimentation des relais a été enlevé )

IMG_0845-2

Pour palier au fait que le microcontrôleur précédent était trop petit à manipuler, mais également parce que l’environnement de développement MicroChip était  restreint ( à moins que je n’ai pas trouvé les bons éléments ), j’ai opté pour l’environnement “EasyPIC PRO V7” de MIKROELECTRONIKA. La plaque est robuste, le packaging très soigné, le support par e-mail de bonne qualité et réactif.

IMG_0763-2

Les sources sont toujours là mais l’environnement de développement serait à remettre en état pour pouvoir repartir. Les développements datent de début à fin 2013.

Le schéma de la carte processeur est le suivant :

PADOV3Schéma

Et le board :

PADOV3Board

Cette version a fonctionné pendant plusieurs mois en simulation dans des seaux d’eau posés sous le bureau, puis dans l’aquarium sans trop de déboires … sauf lorsqu’un remplissage manuel … remplissait … remplissait … puis débordait … le plancher s’en souvient !

Le total était monté dans 2 coffrets : un pour le processeur et l’affichage, un pour les relais.

Le module processeur IntérieurIMG_0854-2

Le module processeur ExtérieurIMG_0851-2

Le module relais IntérieurIMG_0853-2

Le module relais ExtérieurIMG_0852-2


Automate n°4 ( 2015 )

L’automate 3, désormais nommé PADO ( C’est à dire “pas d’eau” partout sur le parquet !! ) donnait à peu près satisfaction à ceci près qu’il n’était pas connecté au réseau, ni commandable à distance. D’où direction un Raspberry Pi, un micro PC très répandu, et sur lequel se trouve toute un bardée d’entrées/sorties. Voilà ce qu’il fallait.

Le premier Rapberry Pi fut un modèle B. L’histoire de ce petit PC est ici. Je m’étais fait à l’idée de programmer “C”, et que je préfèrerais un environnement type Microsoft Visual Studio pour cela. Je suis donc parti là-dessus, et utilisé un plugin supplémentaire  pour permettre la compilation du code sur le raspberry. Pas pratique, mais Windows IoT n’était pas alors très répandu. D’où l’idée de faire plus archaïque, mais malgré tout plus simple et toujours utilisé aujourd’hui : installer la Raspbian sur le PI et l’environnement de compilation C, prendre MobaXTerm et développer.

Depuis, le Raspberry PI 2, puis 3 est sorti. C’est un 2 qui tourne actuellement ( et un 3 qui a hébergé ce site pendant plusieurs mois ! ). Le “disque dur” du PI est une carte microSD. La seule recommandation concernant cette carte et de ne pas prendre la moins chère, mais la plus rapide. C’est un choix un peu frustrant puisqu’il aboutit à une carte plus chère que le PI, mais c’est tout de même le bon. Une capacité de 32 Go est largement suffisante dans le cadre de cette réalisation.

Après plusieurs mois d’installation, de réinstallation, et de développement, la commande de l’aquarium est opérationnelle.

Principe général

♣  Une partie “serveur” [server] tourne en permanence sur le Raspberry et est en charge de :

♥  Gérer les horaires et déclencher certains actionneurs ( lumière, CO2, O2 … )

♥  De mesurer la température et de gérer le chauffage.

♥  De mesurer la hauteur d’eau et les créneaux de recyclage.

♣  Une partie “client” [sendmsg]  permet d’envoyer des messages de commandes à la partie “serveur”. Elle est aussi utilisée dans des scripts php, inclus dans une page Web. Un serveur apache est monté sur le raspberry de commande, et l’ensemble permet de commander le système complet depuis un browser Web, donc depuis un iPhone par exemple.

♣  Une partie “affichage” [affiche] permet d’afficher le fonctionnement du système sous deux formes :

♥  Type log ou debug ou tous ou partie des messages défilent à l’écran.

♥  Type tableau mode caractère montrant le fonctionnement global sous forme d’un tableau “temps réel”, similaire à l’affichage Web..

♥  Type web comme indiqué précédemment.

Principe de la partie serveur

Le schéma qui suit illustre le principe de la partie serveur.

Il s’agit d’un ensemble de couples de threads, un couple par gestionnaire :

    • Lumière : à pour rôle d’allumer l’éclairage à heure fixe, et de l’éteindre à heure fixe, tous les jours.
  • COS : même principe pour le gaz carbonique.
  • O2 : même principe pour les buleurs.
  • Aérer : même principe pour les ventilateurs de plafond.
  • Vidage / Remplissage / Recyclage : gestion du recyclage de l’eau ( vidage & remplissage partiel une fois par semaine )
  • Chauffage : Gestion de l’allumage ou de l’extinction de la résistance chauffante sur seuils, et fonction de la température de l’eau.
  • Températures : Mesure de la température extérieure, intérieure et de l’eau.
  • Niveau : Mesure du niveau d’eau.

principes

Une grande partie du travail est effectué par le raspberry, par conséquent la partie électronique est réduite.

schema-v4 Sur le board se trouvent 2 parties:

  • A gauche : les liens entre le Raspberry, le bloc de relais ( 8 relais classiques ) et le petit board de droite.
  • A droite : un tout petit board de 20 mm par 20 mm, logé dans une petite boite, accrochée au bord de l’aquarium et qui concentre les mesures de niveau, de niveau maximum et de température de l’eau.

board-v4

Quelques écrans des différentes parties

Affichage Web

pageaquarium

Affiche tableau caractère

affiche-mode-tableau

Affichage mode debug

affiche-mode-debug

Client d’envoi de message pour utilisation en ligne de commande, php …etc…

sendmsg-helpLe capteur de niveau

Il s’agit d’un capteur de niveau proportionnel mesurant la pression hydrostatique. On le trouve chez Selectronic, sous la reference 3788-10. Il permet une résolution de moins d’un millimètre, ce qui est largement suffisant.

capteur-niveau-proportionnela

Le capteur est associé à un MCP3008, pour convertir la pression en signal série envoyé au raspberry.

Le contacteur de niveau haut

Il s’agit d’un contacteur à flotteur, utilisé pour couper l’arrivée d’eau s’il y a risque de débordement.

capteur-de-niveau-hautLe capteur de température

Il s’agit d’un DS1820B qui embarque à la fois la mesure de température et son transport série au raspberry.

Capteur complet dans l’aquarium

capteur-exterieur

capteur

On aperçoit les 3 capteurs :

  • La résistance de mesure du niveau.
  • Le capteur de température de l’eau à gauche
  • Le capteur de niveau haut.

capteur-interieur

Le boitier

board

relais

raspberry

boitier

 

12 thoughts on “Automatisme pour aquarium à base de RaspberryPi

  • 9 octobre 2018 à 19 h 24 min
    Permalink

    Bonjour, tout d’abord je trouve votre système genial. J’aimerais réaliser un tel système pour mon aquarium. Hélas je n’ai pas les connaissances nécessaires pour réaliser un tel projet. J’ai déjà acheté tout le matériel dont il faut. Pouvez vous me partager votre code (programme) ainsi que le schéma de câblage si vous le souhaitez. Merci beaucoup d’avance pour votre réponse.
    PS: Je suis un peu maladroit pour l’écriture de message mais j’espère tout de même que vous avez compris ma demande.
    Désolé pour le dérangement. Cordialement.

    Répondre
    • 22 décembre 2018 à 10 h 27 min
      Permalink

      Bonjour,
      Je peux vous le faire parvenir en MP si vous le souhaitez.
      Cdlt.

      Répondre
      • 27 décembre 2018 à 18 h 39 min
        Permalink

        Dans la rubrique “Bricolage\Electronique”, vous trouverez un article contenant des détails, ainsi que les liens de téléchargement.
        Cdlt.

        Répondre
    • 27 décembre 2018 à 18 h 41 min
      Permalink

      J’ai ajouté un article dans “Bricolage\Electronique” avec les liens de téléchargement.
      Les schéma viendront bientôt.
      Cdlt.

      Répondre
  • 20 décembre 2018 à 15 h 47 min
    Permalink

    Bonjour je trouve votre projet très intéressant c’est une belle réalisation. Je suis en train de réaliser un banc de test où je vais piloter des résistances chauffantes et j’utilise des sondes DS18B20 pour receuillir la température. Etant électrotechnicien je ne suis pas franchement familier avec le Raspberry. Pourriez vous partager votre programme avec moi afin que je puisse m’en inspirer pour ma réalisation?

    Cordialement.

    Répondre
    • 22 décembre 2018 à 10 h 27 min
      Permalink

      Bonjour,
      Je peux vous le faire parvenir en MP si vous le souhaitez.
      Cdlt.

      Répondre
      • 27 décembre 2018 à 18 h 38 min
        Permalink

        Dans la rubrique “Bricolage\Electronique”, vous trouverez un article contenant des détails, ainsi que les liens de téléchargement.
        Cdlt.

        Répondre
    • 27 décembre 2018 à 18 h 40 min
      Permalink

      Navré pour ma réponse tardive.
      J’ai mis en ligne un article dans “Bricolage\Electronique” contenant des détails, et les liens de téléchargement.
      Cdlt,

      Répondre
  • 3 janvier 2019 à 23 h 25 min
    Permalink

    Bonjour et bravo pour votre projet.
    Une question en passant, à quoi sert le HP connecté au jack du pi ?
    Merci 🙂

    Répondre
  • 10 mars 2019 à 18 h 25 min
    Permalink

    Super projet.
    Débutant mais passionné,je me lance dans la fabrication d un automatisme aqua…
    Peu familié de raspberry,je me permets de vous demander la possibilité d obtenir votre programme?
    je suis malheureusement peu doué en programmation.

    merci pour cela

    Cordialement

    Répondre
    • 31 mars 2019 à 18 h 41 min
      Permalink

      Les sources sont en bas de page sur le site.
      Tout y est, y compris le makefile.

      Répondre

Laisser un commentaire

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

Résoudre : *
7 + 23 =