Surveiller un aquarium récifal et envoyer des SMS d'alerte: arduino mega + GSM

Hello à tous,

L'an dernier, j'ai eu la désagréable surprise de trouver, lors de mon retour de vacances, le courant coupé dans mon appartement...
Des prises programmables m'ont permis de constater que la coupure avait eu lieu environ 23 heures avant mon retour.
La cause de la coupure est un court circuit provoqué par de l'eau salée s'échappant de mon petit bac à boutures par capillarité :frowning: et qui est tombé sur une prise... bref.

Dans mon petit récifal, mes crevettes sont mortes, mes poissons aussi, et beaucoup de mes coraux. Résultat de 23 heures sans brassage, sans éclairage, sans chauffage.

Le pire est que je travaillais depuis quelques mois sur un projet perso d'un système de surveillance du niveau d'eau, éclairage, température, et coupure de courant (Hé oui, la nuit, pas d'éclairage qui s'arrête pour indiquer une coupure de courant), avec alerte par SMS.

Je ne l'avais pas terminé à temps...

Vous me direz, encore faut-il quelqu'un à proximité qui puisse intervenir. A chacun de résoudre ce problème :wink:

Cette année... C'est fait ! Et... ça marche !

C'est mon premier projet arduino, et je n'avais pas fait de C depuis environ 16 ans...

J'ai tout mis là : GitHub - reivaxy/aquaMonitor: Recifal aquarium monitoring with arduino, alerts and settings by SMS and webApp, and statistics database en open-source pour les bricoleurs.
Hors boitier et support je pense qu'il y en a pour moins de 80€ (arduino, module GSM, écran, capteurs... inclus !).
Il vous faudra un fer à souder :slight_smile:

Désolé j'ai cédé à l'anglais qui est assez dominant dans le monde de l'open source (et puis ça fait bien sur un CV). Et puis surtout, l'afficheur ne connait pas les caractères accentués, et bien qu'on pourrait les programmer, ils seraient très moches.
Tous les messages sont cependant regroupés dans un fichier séparé, il est donc facile de tout traduire, mais sans accents c'est pas terrible.
Si vous avez besoin d'explications, n'hésitez pas à poser des questions.

Comme je dispose d'une imprimante 3D, j'ai réalisé le boitier et le support des capteurs, mais il est bien évidemment possible d'utiliser un boitier du commerce, et d'autres types de supports.

Le point un peu délicat est le circuit imprimé. Soit vous avez de quoi en faire un vous même (en double face trous métallisés) soit vous le faites faire comme moi (je ne peux pas métalliser les trous).

Pourquoi SMS plutôt qu'internet ? En cas de coupure secteur, une simple pile suffit à permettre l'envoi d'un SMS, là où il faudrait un onduleur pour une box, et encore, si d'autres équipements en amont ne sont pas touchés...

Voilà un résumé des fonctions de l'engin:

La base est un arduino Mega (moins de 10€ sur ebay), car le UNO n'a pas assez de mémoire pour le programme et les variables (surtout les messages...).
Un transfo l'alimente en 12V, et une pile en 9V (cas de coupure secteur).
Il est équipé en plus d'une horloge temps réel (RTC) qui maintient à jour la date et l'heure, pour la reconnaissance des horaires d'extinction et d'allumage des rampes.
Il dispose d'une carte SIM (gratuite ou 2€ chez Free), et donc d'un numéro mobile.
Il connait un numéro de portable dit "principal", auquel il envoie des SMS d'alertes, et duquel il peut recevoir des commandes de configuration.
Il gère une liste de numéros secondaires auxquels il peut aussi envoyer les alertes (et qui peuvent aussi configurer certains paramètres).
On peut s'inscrire ou se désinscrire à cette liste en lui envoyant un SMS. Ainsi, la ou les personnes susceptibles d'intervenir en votre absence peuvent recevoir les alertes en même temps que vous.

Il affiche sur un écran le niveau de lumière courante, la température dans le bac, le niveau d'eau (haut/bas), et la présence de l'alimentation secteur.

Voici les événements qui déclenchent l'envoi d'un SMS d'alerte (et son affichage à l'écran) à tous les numéros inscrits:
Si le niveau d'eau devient "bas",
Si la température est au dessous d'un seuil minimum ou au dessus d'un seuil maximum,
Si le niveau d'éclairage est supérieur à un seuil maxi pendant les horaires d'extinction (Vous avez forcé l'éclairage et ne l'avez pas remis, par exemple),
Si le niveau d'éclairage est inférieur à un seul mini pendant les horaires d'alumage,
S'il y a une coupure secteur.

Un intervalle minimal entre deux alertes peut se régler pour chaque numéro mobile inscrit (pour éviter de recevoir un SMS par minute lors d'un problème).

Les paramètres température min et max, éclairage min et max, horaire d'extinctions, d'allumage, calibration du capteur de température, date et heure courante, sont tous paramétrés en envoyant des SMS au système.

On peut à tout moment interroger le système par envoi d'un SMS pour recevoir:

  • les valeurs de tous les paramètres de réglage,
  • l'état du bac: éclairage, température, niveau d'eau, présence du secteur.

Voici l'appareil:

Les capteurs installés:

Une capture d'écran de SMS échangés:

Je continue de travailler dessus, j'ai encore quelques idées d'améliorations et d'évolutions, notamment une liaison wifi ou bluetooth entre modules permettant d'équiper plusieurs aquariums mais en utilisant une seule ligne téléphonique.

Je dois également ajouter les indications pour trouver les différents composants (achetés pour la plupart sur ebay, en chine, pour quelques euros).
Le plus cher est la carte GSM qui coûte un peu moins de 30€, puis le circuit imprimé intermédiaire.

Voilà, c'est très sympa à réaliser, encore plus à faire marcher, si vous vous lancez dans l'aventure, racontez moi !

Deux dispositifs sont en fonctionnement 24h/24 depuis environ 6 mois, ça marche très bien.

J'ai corrigé un problème déclenché par un SMS de spam ... merci la pub...

Depuis j'ai pu réaliser le prototype avec Wifi, qui se connecte au réseau wifi de la maison pour envoyer les mesures d'éclairage et de température sur un site web, sur lequel il est alors possible de les consulter sous forme graphique.
La base de donnée est prévue pour enregistrer les données de plusieurs aquariums de plusieurs utilisateurs, il y aura donc un système d'authentification, et de clé d'API.
Le site web que j'ai créé est encore très sommaire :slight_smile: :
http://www.reeftankalert.com/chart.php

Le module Wifi ESP8266 (qui est vraiment un truc génial qui coute 2 ou 3€) crée également un réseau wifi local sur lequel il expose une webApp permettant de voir les mesures et de configurer tous les paramètres:

Bonjour

Très belle réalisation !!
La coopération Arduino Mega - ESP8266 est intéressante.
Merci pour le partage !!

Deux remarques et une question :
-le choix de l'anglais pour la description du projet , tout en élargissant l'audience, va refroidir quelques francophones désirant réaliser le système
-un schéma (dit de principe) apporterait des informations permettant de mieux comprendre les relations entre sous-ensembles . Un plan de câblage Fritzing ne suffit pas. (il montre avec plus ou moins de netteté '"ou mettre les fils".)
-la pile 9V permet-elle réellement au module GSM d'envoyer à coup sûr son SMS d'alerte ? (pics de courant dans le module GSM)

Merci :slight_smile:

Pour l'anglais, hé bien je dirais que c'est l'occasion de s'y mettre :slight_smile:
Mais plus sérieusement, je suis sur des forums aquariophiles en langue anglaise, alors bon...
Certains forums français sont pas mal mais contrairement aux anglo-saxons, les gens sont plus prompts à la critique stérile (ça existe déjà, ... Etc) qu'à s'intéresser.
Oui c'est vrai il manque pas mal de choses comme le schéma, la nomenclature. Même le frtizing n'est pas à jour et le pcb non plus, pour ce qui est du wifi.
Cela dit il y a finalement assez peu de composants.
Faut vraiment que je m'y remette.

je lis ça et là que les modules GSM présentent des pics de courant allant jusqu'à 2A (aucune praatique perso à ce jour, je me limite aux pics de courant des modules Wifi !!)). la pile 9V assure-t-elle réellement au point que tu mises sur elle pour la sécurité de l'aquarium ?

Ah oui pardon j'ai oublié de répondre à ce point. Oui en effet ça tire bien.

J'ai fait pas mal d'essais, ça marche. On voit une légère baisse d'intensité lumineuse sur l'afficheur.

Il y a 6 semaines j'ai dû changer une photo résistance que je n'avais pas encore enrobée de résine époxy, et qui a été endommagée par une goutte d'eau salée, j'ai donc commencé par débrancher le boitier, et j'ai reçu le sms de Power down, alors que ça faisait bien 5 mois qu'il était en fonctionnement.
La pile n'est quasiment jamais sollicitée, j'habite à Paris où les coupures sont rarissimes.

Mais si ça devait arriver, la pile ne durerait vraiment pas longtemps, c'est certain, mais assez pour envoyer un sms.
Par contre il faudrait que je pense à faire le test de temps en temps, je n'ai pas de surveillance du niveau de la pile. Ce pourrait être une amélioration.

Tiens je viens de le tester sur mon boitier (l'autre est chez un ami), ça a marché et même sans baisse de luminosité de l'afficheur (il est de couleur rouge, l'autre sur lequel je voyais une baisse est bleu, et ça se tient, la tension d''alim des leds bleues de retro éclairage est plus élevée que celle des rouges)

Mon interrogation découle de la résistance interne élevée des piles 9V (pile, au sens initial du mot, de 6 petits éléments d'1,5V). La Duracell Plus 9V chute très vite avec un courant de décharge de 250mA (doc jointe)

Elle a donc , dans sa dégringolade, le temps d'envoyer le SMS avant d'atteindre la tension mini nécessire au module.
duracell plus 9V.PNG

Duracell_Pluspower_9V.pdf (948 KB)

Et j'ai répondu à ton interrogation, ça marche :slight_smile:
Je pense que le pic est très bref.

Merci, c'est bon à savoir !! :wink:

D'après le Frtizing la carte GSM serait le shield GSM Arduino (chip Quectel)
En regardant la photo et le schéma de cette carte je vois un excellent condensateur de 2200µF (pavé orange) sur l'alimentation Vbat du module GSM, d'autres condensateurs sont en parallèle.
La pile 9V n'est pas toute seule quand il faut faire face aux brèves demandes intenses de courant !!

Un module GSM économique SIM800L (ou avoisinant) aurait peut être quelques difficultés à envoyer le SMS.....

Pour le fritzing j'ai pris ce qu'il y avait de dispo dans la librairie, ce n'est pas un schéma de référence.

J'ai utilisé le module GSM le moins cher que j'ai trouvé à l'époque, à savoir SIM900 :
http://www.ebay.com/itm/SIM900-Quad-band-GSM-GPRS-Shield-for-Arduino-UNO-MEGA-Leonardo/321418410538

Depuis j'ai vu moins cher mais je suis resté fidèle à celui-ci sachant qu'il marche assez bien.

La doc mentionne bien des pointes à 2A.

En plus dans mon montage la pile est connectée via une diode afin de ne pas envoyer de courant vers la pile lors qu'il vient de l'adaptateur secteur, donc il y a déjà 0.6V de chute de tension.

Je ne connais pas le fonctionnement des cartes GSM mais est-il envisageable qu'elle adapte la puissance en fonction du besoin ? Si elle est proche d'une antenne et reçoit un signal fort, peut être qu'elle émet un signal moins puissant que si elle est plus éloignée ?
En plein Paris, elle n'a peut être pas trop à forcer...

Bonjour, je suis ce topic avec attention !

Il est tout simplement passionnant. J'aimerais réaliser le même type de système avec envoi de sms quand le niveau d'eau et trop haut.

-quel capteur me conseiller-vous pour une précision sans faille ?

Bonjour,

Les capteurs de niveau que j'utilise fonctionnent sans faille depuis plus de trois ans.

Ils sont de ce type : https://www.ebay.com/itm/Electric-High-New-Quality-Tank-Float-Switch-Liquid-Sensor-Water-Level-Pool/142241113490

Ils sont "tout ou rien", c'est un ILS (interrupteur à lame souple) déclenché par un aimant dans le flotteur. ça ne permet pas de connaitre le niveau exact mais seulement si c'est au dessous au en dessous d'un seuil, fixé par la position du capteur.

Je les utilise pour détecter une baisse de niveau mais il peuvent parfaitement être utilisé pour détecter une hausse, il suffit de les mettre soit plus haut, soit là tête en base, selon que l'on veut que le contact soit ouvert ou fermé au repos.

Il faut parfois les nettoyer car des algues peuvent gêner leur fonctionnement.

Bonjour,
je suis très intéressé par le projet que je trouve très passionnant. Je souhaiterais réaliser ce projet. Quel est le type de module GSM me conseillerez-vous de prendre?
Merci d'avance

Bonjour,

Sur les deux que j'ai réalisés j'ai utilisé ce type de carte:
https://www.ebay.com/itm/SIM900-Quad-band-GSM-GPRS-Shield-for-Arduino-UNO-MEGA-Leonardo/321418410538

Elle présente le défaut d'être assez encombrante et chère, mais depuis j'ai tenté d'utiliser de petits modules sim800 ou A6, petits et pas chers, et n'ai jamais retrouvé la même stabilité ou fiabilité, surtout du point de vue de l'alimentation. Mais je ne désespère pas.

Les deux modules réalisés sont toujours en fonctionnement, 24/7, depuis trois ans, et j'en suis très content.

En revanche j'ai arrêté le développement de la version wifi, pour développer un système iot généraliste, dont la surveillance d'aquarium ne serait qu'un module parmi d'autres. Le système iot fonctionne, mais le module "aquarium" n'est pas encore prêt, faute de temps :frowning:

reivaxy:
Bonjour,

Sur les deux que j'ai réalisés j'ai utilisé ce type de carte:
https://www.ebay.com/itm/SIM900-Quad-band-GSM-GPRS-Shield-for-Arduino-UNO-MEGA-Leonardo/321418410538

Effectivement, le prix est élevé. De plus, je souhaiterais utiliser un module qui soit petit.

En revanche, je n'ai pas bien compris ce passage :

depuis j'ai tenté d'utiliser de petits modules sim800 ou A6, petits et pas chers, et n'ai jamais retrouvé la même stabilité ou fiabilité, surtout du point de vue de l'alimentation. Mais je ne désespère pas.

Est-ce que le module SIM800 est gourmand en énergie? De plus, que veux tu dire par "en terme de stabilité" ?

Merci d'avance

Le sim800, comme les autres, peut avoir besoin de 2A au moment de l'établissement d'une connexion.

La principale difficulté est sa tension d'alimentation qui doit être très précise, a 4.2V.
4V c'est pas bon, 4.5V c'est pas bon. Il faut donc une source de tension précise, qui ne chute pas lors d'un fort appel de courant. On peut rendre ça moins sensible avec de gros condensateurs et un régulateur low dropout, c'est ce qu'il me reste à essayer. J'ai réussi à connecter une SIM800, quelques fois, mais pas de manière absolument fiable. Des fois oui, des fois non

reivaxy:
Le sim800, comme les autres, peut avoir besoin de 2A au moment de l'établissement d'une connexion.

La principale difficulté est sa tension d'alimentation qui doit être très précise, a 4.2V.
4V c'est pas bon, 4.5V c'est pas bon. Il faut donc une source de tension précise, qui ne chute pas lors d'un fort appel de courant. On peut rendre ça moins sensible avec de gros condensateurs et un régulateur low dropout, c'est ce qu'il me reste à essayer. J'ai réussi à connecter une SIM800, quelques fois, mais pas de manière absolument fiable. Des fois oui, des fois non

En lisant dans un autre forum, ce sont les mêmes problèmes qui sont mentionné. Du coup, ma question est : quel est le module acceptable (meilleur compromis) ? je ne souhaiterais pas utiliser de shield. Merci d'avance

Bonjour, après réflexion, je vais acheter le shield SIM900 et un module SIM800. Dans la pratique, je decidérai. Merci :slight_smile: