DIY Monitoring Aquarium connecté - AquaPi

image principale DIY Monitoring Aquarium connecté - AquaPi

Difficulté:

Bonjour les amis aquariophiles

Si comme moi vous aimez passer de longs moment à admirer votre aquarium, vous savez certainement que c'est au prix de pas mal de contrôles et de surveillance afin de garantir ce merveilleux équilibre entre la qualité de l'eau (eau douce dans mon cas), la vie (poissons, escargots, et crevettes pour moi :-) ), les plantes, l'air, l'éclairage et les conditions de température. 

Dans ce tutoriel un peu long je vais détailler en 5 parties principales (configuration du système, les alimentations, les capteurs, la carte mère, et enfin un boîtier imprimé 3D) comment automatiser tous les contrôles à l'aide d'un petit serveur WEB fonctionnant sur un minuscule Raspberry pi ZERO et qui va consommer max 1,3 Watts d'électricité! Vous pourrez ainsi vous connecter depuis votre téléphone mobile à votre serveur pour tout contrôler et administrer totalement le système. Une cinquième partie sera ajoutée plus tard (fabrication d'un boitier imprimé 3D sur mesure, pour le moment je ne suis pas encore équipé d'imprimante 3D)

Le système est modulable, vous pourrez l'adapter selon vos besoins. Dans mon cas je contrôle 2 sondes de températures, 4 éclairages distincts par bandes de leds. Mais vous pouvez aussi ajouter des capteurs de Ph, de niveau d'eau , contrôler des moteurs pour distribuer nourriture et éventuels éléments chimiques pour ajuster la qualité de l'eau (particulièrement critique pour les aquarium d'eau salé avec des coraux). 

Dans mon cas j'ai un simple petit aquarium d'eau douce de 60l.

Matériel :

Budget : 50€

Etape 1 : Matériel nécessaire pour la carte

  • Un circuit imprimé, à faire imprimer (double couche) par n'importe quel fabriquant de PCB de votre choix en utilisant les fichiers GERBER zippés dans le Github du projet. (vous êtes sûr d'y trouver la dernière version)
  • 2 leds 5mm, 1 rouge et une verte
  • jeux de résistances: 2 * 470Ω + 1 * 4.7kΩ
  • 1 capteur de température DS18B20 non étanche (format TO90)
  • 1 barrette à souder 2*20 pins femelle pas 2,54mm pour Raspberry pi
  • 1 connecteurs pin header mâle coudé (horizontal) 2.54mm: 1x7 pins (prendre 1 de 4 pins + 1 de 3 pins à mettre côte à côte): pour relier la carte aux relais
  • 1 connecteur pin header mâle coudé (horizontal) 2.54mm: 1x3 pins: pour relier à la sonde de température étanche.
  • 2 borniers à vis à souder 4 pins 2.54mm (ou bien 4 borniers 2 pins): ils servent à relier le PCB aux relais 12V
  • 5 jack DC 3.5mm 3 points (1 pour l'alimentation 12v, et 4 autres pour relier les appareils 12v aux 4 relais)
  • 1 convertisseur DC/DC 12v->5v référence TSR 1-2450 (TRACO). Attention à ne pas prendre un LM7805 qui est un convertisseur linéaire avec un très mauvais rendement (40%) et qui chauffe énormément. Le TSR 1 est un convertisseur DC/DC à plage bien plus performant avec un rendement de 94%: aucun problème de chauffe ni de gaspillage électrique donc.
  • 1 alimentation 12V CC, 2A (24W) suffisent si vous n'avez pas des km de leds à allumer, sinon prenez plus puissant.
  • 10 câbles souples dupond femelle/femelle pour relier les pin headers coudés à la carte relais (7 câbles) et jack de la sonde de température étanche (3 câbles).
  • 8 câbles souples pour relier les sorties relais de la carte aux relais 12v.
Etape 2 : Configuration du Raspberry pi

  • pour installer le système sans se casser la tête: vous pouvez suivre ce guide. Plusieurs méthodes y sont décrites selon votre appétence à manipuler des fichiers système ou tout faire avec un écran/clavier/souris. 
  • Vérifiez bien que vous avez activé le WI-FI ainsi que la connexion SSH.
  • Faire une mise à jour (c'est long!) du Raspberry pi: sudo apt-get update suivi d'un sudo apt-get upgrade.
  • Installer le serveur WEB de monitoring d'aquarium reef-pi développé et fourni par Adafruit: il suffit de suivre les étapes du guide "Reef-pi GUIDE 01: Setup and Démonstration" c'est très très simple je compte sur les doigts d'une main les commandes à taper en ligne ;-) et ça passe tout seul sur le piZERO.
  • Enfin pour finir n'oubliez pas de sécuriser la fragile carte SD en déportant les écritures de logs dans la RAM en suivant ce guide très simple

A l'heure où je rédige une mise à jour de ce tutoriel, mon système fonctionne déjà h24 7J/7 depuis plus d'un an sans aucun problème.

Voilà à la fin de cette étape vous avez configuré votre piZERO et pouvez débrancher tous les câbles sauf l'alimentation du pi. Assurez vous que vous accédez bien à votre pi via un autre ordinateur en SSH, et et que le serveur WEB est bien accessible sur le réseau local depuis un autre ordinateur comme indiqué dans le guide d'Adafruit. Le piZERO peut être éteint via l'interface WEB (onglet Configuration puis Administration: cliquer sur "Arrêt" et ça éteint proprement le piZERO: ne jamais l'éteindre sauvagement en débranchement l'alimentation, la SD card ne survivrait pas longtemps...)

Etape 3 : Les alimentations

Besoin en alimentations


La pompe de filtrage et l'éclairage sont alimentées en 12v dc (via des transfo 220Vac/12Vdc à l'origine). Le Raspberry pi a besoin d'une alimentation 5v dc. Afin de limiter les convertisseurs 220V ac vers une tension continue dc (ils chauffent !) je vais opter comme le suggère Adafruit pour un seul transformateur 220v ac -> 12V dc . Pour alimenter le Raspberry pi, je vais utiliser un convertisseur 12V dc vers 5V dc qui a l'avantage de ne pas du tout chauffer, d'autant moins que le Raspberry pi ZERO va consommer au maximum 250mA en pleine charge (il en sera très loin de la pleine charge), ce qui représente 1,25 Watts! J'ai à peine besoin d'une dizaine de watts en 12V à vrai dire (la pompe et l'éclairage Leds ne consomment pas grand chose). Un bloc d'alim 12V 2A (24Watts) est largement suffisant. A noter que mon aquarium est petit (60l) donc je n'ai pas beaucoup de leds pour l'éclairage (36 leds blanches + 15 leds bleues). Pour un aquarium plus grand il faudra peut-être s'orienter vers une alim 12V 65 Watts.

J'ai opté pour un bon modèle de transformateur BERLS protégé contre les surtensions, les courts-circuits et qui ne provoque pas d'étincelles au branchement et très stable. Il faut se méfier des modèles à bas prix qu'on trouve sur le net de l'autre côté de la planète: ce transfo va être branché 7J/7 h24 il faut lui faire confiance.

Etape 4 : Commandes 12V pilotées par le Raspberry pi

Concernant les commandes de l'électronique, afin que le Raspberry pi puisse piloter l'allumage et l'extinction des éléments 12V, j'utilise un module de commande équipé de 4 relais, avec optocoupleurs intégrés et commande séparée (ils existent en version 8 relais aussi). On trouve de tels modules parfaitement documentés sur le shop McHobby pour une poignée d'€. En plus ils sont très sympas et abordables dans ce shop: des passionnés avec qui on peu discuter en direct lors de Maker Faire contrairement à Amazon qui n'a pas la moindre idée de ce qu'il vend à tour de bras ;-)

L'énorme avantage d'avoir un circuit de commande séparé de l'alimentation des relais est qu'ils peuvent être commandés en 3.3V directement par les sorties GPIO du Raspberry pi, tandis que les relais seront alimentés avec le 5V du Raspberry pi pour fonctionner. Les modules de relais qui ne séparent pas le circuit de commande de l'alimentation des relais obligent à convertir les sorties 3.3V du GPIO Raspberry pi en 5V à l'aide de circuits Level-Shifter: nul besoin donc si vous choisissez bien ce type de module relais.

Attention il faut impérativement retirer le petit cavalier qui shunte les deux bornes VCC et JD-VCC sur le module de relais, et brancher le 5V du Raspberry pi sur la broche JD-VCC du module de relais. Si vous laissez le cavalier en place: la tension de 5V va être amenée sur les sorties 3.3V GPIO qui vont commander les relais et c'est la mort assurée du Raspberry pi.

Pour commander les relais, il faut relier les 4 entrées IN1, IN2, IN3 et IN4 respectivement aux GPIO12, GPIO6, GPIO5, GPIO25 du Raspberry pi à l'aide de câbles Dupont femelle/femelle. Bien relier la broche GND à la masse, et la broche VCC au 3.3V du Raspberry pi (celle en face du 5V). la broche JD-VCC doit quand à elle être reliée à une sortie 5V du Raspberry pi, ce qui suppose que le cavalier qui shunte VCC et JD-VCC est bien retiré.

Etape 5 : Sorties des relais

Chaque sortie de relais fonctionne alors comme un interrupteur 3 points. Au repos le relais court-circuite le point central avec la droite (voir schéma à l'arrière du relais) , et quand la commande IN est activée par le Raspberry pi, l'interrupteur du relais fait un "clac" caractéristique et bascule alors de l'autre côté, court-circuitant le centre avec la gauche. Pour commander un appareil 12V dc, il suffit alors de brancher le centre d'un relais sur le +12V, et de relier une des deux sorties (droite ou gauche) sur la borne + de l'appareil (le - de l'appareil étant relié à la masse).

  • Si vous reliez la sortie droite du relais vers le +12V de votre appareil: dans ce cas on souhaite que l'appareil soit relié au 12V par défaut, et ce sera le cas même si tout le système tombe en panne (exple le Raspberry pi ne redémarre pas). Je conseille donc de brancher la pompe (12V dc) de cette façon pour garantir qu'elle va fonctionner tout le temps: on utilisera la commande relais uniquement pour l'éteindre (par exemple quand on change les filtres ou qu'on renouvelle l'eau de l'aquarium).
  • Si vous reliez la sortie gauche du relais vers le +12V de votre appareil: dans ce cas on souhaite qu'il ne s'allume que lorsque l'entrée IN correspondante est activée par le Raspberry pi, sinon il est en état Off par défaut. C'est comme ça qu'il faut brancher les éclairages 12V et les moteurs de distribution de nourriture.

!!Attention!! ne vous amusez surtout pas à mettre du 220V directement dans les relais: ils ne sont absolument pas protégés pour manipuler du 220V en toute sécurité, il y aurait un risque énorme d’électrocution.

Etape 6 : Configuration du système reef-pi

  • Il faut d'abord créer les Outlets à relier aux GPIO (menu Configuration->Connecteurs): j'en ai un qui commande une Led (GPIO24), puis les 4 correspondants aux 4 commandes des relais (GPIO12, GPIO6, GPIO5, GPIO25). Je les ais tous configuré en cochant la case "Reverse" sauf la Led: une entrée relais s'active quand elle mise à la masse, sinon par défaut elle est désactivée. Je les ais nommé Led, CH1, CH2, CH3 et CH4.
  • Ensuite il faut créer les équipements (menu Equipement) reliés aux Outlets, je les ais nommé LedPi (quand elle est allumée elle signifie que le serveur WEB est démarré), PompeOFF relié à CH1; LEDS_W relié à CH2 (commande d'une bande de leds blanches 6000k), LEDS_B reliée à CH3 (commande d'une bande de leds bleues), et Nourriture relié à CH4.
  • Pour tester rien de plus simple: vous pouvez activer/désactiver vos équipements dans le menu Equipement: il y a des boutons à glissière et si vous entendez les "clacs" caractéristiques des relais, avec les petites leds témoins qui s'allument: c'est tout bon! Pour mettre en oeuvre une macro qui va activer/désactiver la lumière à des heures précises, suivez le guide d'Adafruit c'est bien expliqué tout à la fin.
Etape 7 : Capteurs de température

Ces capteurs DS18B20 sont très simples à connecter. Ils s'alimentent en 3.3V avec une résistance de 4,7kΩ qui relie la broche signal au 3,3V. La broche signal est reliée à un port libre du Raspberry (GPIO 04). Ces capteurs peuvent tous être connectés en parallèle et partager une seule résistance, un seul port GPIO. La led rouge est quand à elle reliée au GPIO 24 avec une résistance de 470Ω en série.

Pour connecteur le capteur étanche au Raspberry vous pouvez soit passer par des borniers à souder, ou bien connecter les 3 fils du capteurs à une prise jack stéréo mâle 3,5mm tandis que la prise femelle correspondante est branchée au Raspberry pi. L'avantage de passer par un jack stéréo est que l'on peut débrancher facilement le capteur, mais l'inconvénient est qu'il faut impérativement éteindre le Raspberry pi avant de le brancher ou de le débrancher, car une prise jack stéréo provoque des mini court-circuits lorsque l'on enfonce la prise mâle et le Raspberry ne va pas du tout aimer !!! Au mieux il reboote direct, au pire il crame ... donc attention.

Plus d'explication sur le fonctionnement et le raccord de ces capteurs: https://papsdroidfr.github.io/tutoriels/aquapi3/

Etape 8 : Configuration des capteurs

Une fois que les capteurs sont en place ainsi que la led rouge, on peut configurer reef-pi c'est très simple à faire. On commence par créer un Outlet "RedLed" dans le menu Configuration->Connecteurs. Cet outlet est paramétré sur le GPIO 21

Ensuite il faut créer un équipement "ALERT" qui est relié au connecteur "RedLed" précédemment créé. A ce stade vous pouvez jouer avec le bouton on/off et constater que vous contrôlez bien la led rouge depuis l'interface WEB reef-pi.

Ensuite on ajoute les capteurs dans le menu Température (assurez-vous bien que vous avez coché "Température" dans le menu de configuration. Quand ils sont créés on peut voir l'historique des prises de température que l'on peut afficher sur le tableau de bord général aussi. Dans le cas du capteur de température d'eau: j'ai programmé le "Heater Threshold" à 25°C avec contrôle de l'équipement "ALERT" : si la température descend en dessous de 25°C ma led rouge va s'allumer (poissons en danger de mort). On peut aussi configurer 

Pour plus de détail: https://papsdroidfr.github.io/tutoriels/aquapi3/

Etape 9 : Soudure des composants sur la carte mère

Pour éviter d'avoir à brancher un nombre considérable de Câbles Dupont sur une Breadbard , vous pouvez faire fabriquer cette petite carte mère sur laquelle il faudra souder des composants et y connecter le Raspberry pi, les modules d'alimentation et de relais ainsi que les capteurs de températures, via les connecteurs prévus à cette effet.

Pour plus d'explications sur le circuit électronique: , vous pouvez consulter cet article.

La soudure des composants sur la carte est très simple il suffit de se laisser guider par la sérigraphie. Seul le connecteur 2*20pin du Rapsberry se positionne sous la carte, tous les autres éléments sont au dessus. Je conseille de commencer par souder ce connecteur 2*20 pins, du moins avant de souder le connecteur coudé 3 pins à relier à la sonde de T° étanche: il va gêner la soudure du connecteur 2*20pin s'il est déjà en place.

Sinon pour les autres soudures, la bonne pratique consiste à souder d'abord les composants les plus petits en hauteurs (résistances, connecteurs coudés, DS18B20, borniers à vis, TSR-1, les 5 Jacks et pour finir les 2 leds. Tout doit être soudé à raz bord de la carte, même les leds.

Vérifiez que vous n'avez pas provoqué de court-circuit entre la masse et les +12V ,  +5V, +3.3V du circuit (par exemple avec une mauvaise soudure sur le minuscule DS18B20 ... )

Etape 10 : Assemblage de la carte avec les relais et sonde de T°

Il reste à relier les 2 cartes comme sur la photo. N'oubliez surtout pas deretirer le petit cavalier qui shunte les deux bornes VCC et JD-VCC sur le module de relais, sinon vous allez court-circuiter le +5V et le +3.3V ce qui va tuer le Raspberry à la seconde où il sera branché.

  • Les sorties 12V de la cartes sont à relier aux centre de chaque relais qui agit comme un interrupteur 3 points: quand il est au repos, le centre est relié sur  la droite, et quand il est activé (on entend un "clac" caractéristique du relais) le centre 12V est alors relié à gauche.
  • Les 4 autres borniers sont à relier sur chaque relais soit à gauche (pour obtenir un fonctionnement "OFF" par défaut et "ON" quand le relais est activé), ou bien l'inverse pour un fonctionnement inverse ON par défaut et OFF quand le relais est activé.

Remaque: pour relier la sonde de température étanche à la carte je n'ai pas prévu un connecteur Jack Audio stéréo à souder sur la carte car ils sont vraiment galère à trouver: on va se contenter d'un connecteur jack audio stéréo à monter en surface qui sera vissé sur le boîtier imprimé 3D.

Attention Il est impératif d'éteindre le Raspberry pi AVANT de brancher ou débrancher le câble audio jack relié à la sonde de température, car il créé des micros courts-circuits lors du  branchement entre l'alim 3.3v et la masse, ce que le Raspberry pi ne va pas du tout aimer s'il est allumé lors de la manip (provoque un reboot) ...

Lorsque tout est en place, vous pouvez donc brancher l'alim 12V et attendre que Raspberry démarre. La Led verte allumée signifie que le serveur WEB est démarré (si vous avez bien suivi le guide de configuration ReefPi). Vous pouvez alors depuis votre smartphone vous amuser contrôlez les relais 12V, et programmer des allumage/extinctions automatiques.

Etape 11 : Boitier imprimé 3D

Vous pouvez télécharger sur le Github du projet les fichiers STL dans le répertoire Boitier3D. Il y a une coque basse et une coque haute à imprimer. 

  • coque basse avec des ornières pour y loger la carte avec le raspberry pi
  • coque haute qui recouvre les relais

Imprimer en 0.2mm avec supports pour imprimer correctement les ouvertures. Comptez 1h50 pour la coque basse, et 1h40 pour la coque haute. N'oubliez pas de bien libérer les petites aérations sur les bords des coques hautes et basses.

Pour plus de détails sur l'assemblage des cartes dans le boîtier, suivez ce guide. Il faut faire attention à bien positionner les câbles sans les pincer lors de la fermeture du boîtier.

Une fois fermé et en fonctionnement, la température interne du boîtier varie entre 30°C et 35°C, ce qui ne nécessite aucune ventilation particulière: la gestion des alimentations et l'utilisation d'une carte relais à la place de MOFSET est particulièrement adapté pour éviter de faire monter en température l'électronique.

Etape 12 : Eclairage par bandes de Leds 12v

Personnellement j'utilise mes 4 relais 12V pour commander des bandes de LEds 12V. J'ai remplacé mon tube de néons dans le caisson étanche par 2 bandes de leds 1 Blanches 6000K et 1 bleues, j'ai aussi ajouté une bande de leds décorative bleu tout en bas de mon aquarium et une autre bleue dans un décors de voiture au dessus de l'aquarium.

  • Eclairage full Blanc programmé de 16h à 21h pour la vitalité des plantes et prémunir des algues (l'eau de mon aquarium est telmement claire qu'on aurait envie de la boire !!)
  • Eclairage full bleu programmé le soir de 21h à 23h: c'est discret et vraiment de toute beauté quand il fait sombre.
  • Eclairage des leds du bas en bleu de 19h à 20h30

Les relais peuvent aussi être utilisés pour commander la pompe à condition d'avoir une pompe alimentée en 12V DC (je répète hein: NE PAS BRANCHER DU 220V SUR LES RELAIS), et pour commander un distributeur de nourriture aussi alimenté avec un moteur 12V DC.

Sources :

Les 5 parties du tutoriel étape par étape: https://papsdroidfr.github.io/tags/#aquapi


Ces tutoriels devraient vous plaire

vignette Arduino Uno - Capteur d'humidité au sol.
Arduino Uno - Capteur d'humidité au sol.
vignette Comment fabriquer son filament pour imprimante 3D
Comment fabriquer son filament pour imprimante 3D
vignette Préparer un fichier pour une découpe et une gravure laser
Préparer un fichier pour une découpe et une gravure laser

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers