Capteur niveau de cuve sans fil – JSN-SR04T

Aujourd’hui je veux vous présenter l’evolution du mon système de Capteur niveau cuve sans fil pour 5€.

Pour plusieurs raisons je ne suis pas content de mon ancien système à 4 niveaux. Comme je l’ai dit dans les commentaires du fait que l’eau de pluie soit peut chargée en ion (enfin je crois), de temps en temps, et en particulier après de fortes pluies, les données remontées n’étaient plus bonnes. Il suffisait de rajouter une pincée de sel et paff ça revenait comme avant. Bref, cette solution n’a été utilisé qu’une année. J’ai ensuite opté pour une solution de mesure de distance avec un capteur JSN-SR04T.

Comment installer un capteur de niveau d’eau dans une cuve ? 

Comme sur d’autres montages j’utilise un ATtiny85 et un simple émetteur RF 433Mhz. Si vous souhaitez coupler à avec un petit panneau photovoltaïque plus accus c’est possible mais attention le capteur JSN-SR04T à besoin de 5V pour fonctionner correctement, si vous avez une tension inférieure (par exemple avec les accus 3.7V il vous faut vous tourner vers le JSN-SR04T-02 qui tolère mieux les tension faibles.

Edit 19/04/2020 : Pour alimenter mon capteur j’ai finalement choisi un simple panneau solaire 5V 0.25W (2 à 3€). Les données ne sont remontées que lorsqu’il fait beau temps (et jour) mais c’est largement suffisant pour mon installation. J’ai simplement ajusté le code lua, pour que lorsque la tension est trop faible les compteur dans domoticz ne soit pas mis a jour. En effet si la tension est trop faible ATtiny85 va fonctionner mais comme le capteur JSN-SR04T à besoin des 5v pour bien fonctionner les données envoyées seront erronée (mesure d’environ 0.5cm visiblement).

Matériel :

  • ATtiny85 + 8 pin DIP Socket – 1 à 2€
  • 433Mhz RF Transmitter – 2€ 
  • JSN-SR04T ou JSN-SR04T-02 – 1 à 2€
  • Panneau solaire 5V 0.25W – 2 à 3€

Schémas de Branchement :

Code .ino arduino / ATtiny85

Le code pour le ATtiny85 est plutôt simple vous le trouverez ici c est le code que vous trouverez partout auquel j’ai ajouté les fonctionnalités de sauvegarde de la batterie.

Pour programmer un ATtiny85 vous pouvez simplement utiliser un Ardruino Uno, vous trouverez sur cces deux site des explications pour téléverser le programe dans votre ATtiny85 :

J’utilise la librairie x10rf pour envoyer la mesure de distance à mon RFXCOM et domoticz sous forme d’un capteur de température (c’est le plus précis et le plus simple) :

// Calcul de distance
distance= duration*0.034/2;
// Envoyer la distance sous forme de température
myx10.RFXsensor(4,'t','T',distance); //RFXSensor ID 004

Dans domoticz mon capteur se nomme « Niveau eau temp » et c’est un capteur de température (ici 27.5°C = 27.5cm mesuré par le capteur)

Plus tard dans domoticz vous pourrez l’ajouter dans la liste des « Hidden devices » pour éviter qu’il vienne polluer votre tableau de bord.

Pour finir, pour transformer cette mesure de distance en Litre ou en pourcentage de remplissage de cuve j’utilise un script lua qui va à chaque fois que le capteur « Niveau eau temp » est mis à jour, mettre à jour un capteur virtuel de type % que je nomme « Niveau d’eau » et un capteur « Custom » que j’ai nommé Cuve:

Script LUA domoticz niveau de cuve :

Le script lua est un script de type time, vous pouvez le retrouver ici.

Il faut adapter aux dimensions de votre cuve dans cette partie. Pour mon besoin le calcul ne traite que les cuves de forme simple avec une largeur et profondeur identique sur toute la hauteur. Pour ma part il s’agit d’un fut de 220L qui faut 86cm de hauteur. En plus le capteur étanche rentre pile dans le petit emplacement si dessous :

Partie du script à modifier pour votre cuve :

-- debut configuration de la cuve à adapter à votre cuve
hMax=86; -- hauteur totale
vTotal=220; -- volume total
-- fin configuration de la cuve à adapter à votre cuve

Ensuite il faut aussi addater l’ID du capteur à mettre à jour :

-- mise a jour du capteur 'Niveau Eau' qui a pour idx 5780 pour moi
commandArray['UpdateDevice']='5780|0|'..prtagePein;

Une fois terminé vous obtiendrez de belles courbes vous indiquant le pourcentage de remplissage de votre cuve :

 

Pour la suite vous pourrez utiliser cette information pour calculer si oui ou non votre arrosage automatique « intelligent » peut démarrer ou non… (à venir dans un prochain article)

12 réflexions sur « Capteur niveau de cuve sans fil – JSN-SR04T »

  1. coujma

    Bonjour
    je suis interesse par ton montage mais j’aimerais avoir un récapitulatif de ce que tu utilise dans cette version comme matériel
    et si possible un schéma de montage

    merci

    Répondre
  2. Phillab

    Bonjour,
    Superbe. C’est exactement ce qu’il me faut pour faire le suivit de ma citerne d’eau de pluie. Serait t’il possible d’avoir le schéma de montage et les composants utilisés.
    Merci d’avance

    Répondre
  3. Manu Auteur de l’article

    Salut à tous,
    tout d’abord je suis content que mon article vous ai plus. Je viens de le mettre à jour avec l’ensembles des informations pour les connections et le matériel utilisé. J’ai aussi ajouté des liens vers des articles expliquant comment programmer un ATtiny85 avec un Ardruino Uno. Bonne lecture et bon bricolage.
    ++

    Répondre
  4. Phillab

    Un grand merci Manu.
    Juste une petite question. Sur le schéma de montage le VCC ne doit il pas être connecté sur la broche du milieu de la carte de l’émetteur nommée VCC et la pine 3 de ATtiny85 sur la broche de droite nommée DATA.
    Merci d’avance
    Philippe

    Répondre
  5. Ping : Capteur niveau de cuve sans fil par pression – Serie 26Y | Domotic and stupid geek stuff

  6. Ping : Arrosage Autonome et Automatique #1 Liste des courses | Domotic and stupid geek stuff

  7. Phillab

    Bonjour Manu,
    J’ai mis en place dans une première citerne d’eau ta solution avec le JSN-SR04T qui fonctionne bien. Merci
    Je désire installer le même système dans un autre citerne d’eau. N’y a t’il pas une variable à modifier dans le code .ino pour l’ATiny85 qui permettra de différencier les deux capteurs sur le RFXcom
    J’ai vu que l’ID dans domoticz était 0004 et un ‘Define rfout = 4’ dans le code ino. Mais 4 est aussi le pin utilisé pour envoyer les datas sur le FS1000A
    Je ne comprend pas grand chose dans le code. Peux tu m’aider
    Merci d’avance
    Philippe

    Répondre

Laisser un commentaire

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

 

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