Capteur humidité du Sol pour moins de 5€

SNAG-000119Dans ma lancé, après le capteur de niveau d’eau dans ma cuve de récupération je vais vous présenter un nouveau capteur très simple à réaliser pour mesurer l’humidité de votre sol et l’envoyer à domoticz.

Matériel :

  • RF transmiter : 433Mhz WL RF Transmitter (1€)
  • ATTINY85-20PU Pour ATMEL DIP-8 Tiny85-20PU  (6€ les 5 soit 1.20€ pièce)
  • Boite De Connexion Raccordement Etanche Plastique Electronique 100x60x25mm (1.15€)
  • 8 Pin Socket Solder Prototype Circuit Adaptor PCB Attiny85 (2.20€ les 10, soit 0.22€/pièce)
  • Une résistance de 100kΩ

(le matériel est quasiment identique à celui utilisé pour le capteur de niveau d’eau).

Schémas des connexions :

 

capteur_hum

Connexion Arduino / attiny85 pour capteur humidité pour domoticz

Code  :

Le code est disponible ici :  soil_moisture_sensors.ino

Dans Domoticz :

Si tout fonctionne correctement vous devriez vous apparaître dans domoticz un nouveau dispositif :

SNAG-000120

Ajoutez ce dispositif et déclarez le en compteur avec une unité « / 1024 » (car les données envoyées sont codé de 0 a 1024).

SNAG-000121

Cela va apparaître ensuite dans domoticz comme cela :SNAG-000122

Pour ma part j’ai créé ensuite un capteur virtuel de type « Humidité de surface » :

SNAG-000123

Capteur de type humidité dans domoticz

 

et j’ai créer un petit script /home/pi/domoticz/scripts/lua/script_device_hum_sol.lua pour l’alimenter et ajuster le résultat pour qu’il soit entre 0 et 100% :

commandArray = {}
--Cette fonction calcule la difference de temps (en secondes) entre maintenant
--et la date passee en parametre.
function timedifference (s)
  year = string.sub(s, 1, 4)
  month = string.sub(s, 6, 7)
  day = string.sub(s, 9, 10)
  hour = string.sub(s, 12, 13)
  minutes = string.sub(s, 15, 16)
  seconds = string.sub(s, 18, 19)
  t1 = os.time()
  t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
  difference = os.difftime (t1, t2)
  return difference
end


if (timedifference(otherdevices_lastupdate['Capt_Hum_Sol_1']) < 30 and timedifference(otherdevices_lastupdate['Capt. Hum 1']) > 50)
then

   val = tonumber(otherdevices_svalues['Capt_Hum_Sol_1']);
   val1 = math.floor(100*(val/1024));
   --commandArray['UpdateDevice']='idx|nValue|sValue  nvalue=HUM&svalue=HUM_STAT
   commandArray['UpdateDevice']='354|'..val1..'|0';

   print('Capt. Hum 1 - '..val1..' %'.."  "..val)
end
return commandArray

Ici 354 correspond au numéro de capteur virtuel crée.

Et voila ce que ça donne dans domoticz :

les deux capteurs

A droite le capteur virtuel a gauche le capteur qui reçoit les données de la sonde.

Par la suite vous pouvez cachez la capteur « Capt_Hum_Sol_1 » en utilisant les $Hidden Devices.

Et dans le monde réel voici mon capteur : Les sondes sont faites avec du câble coaxial dont l’âme est partiellement dénudée, à priori ça fonctionne plutôt bien…

Comme le cuivre a tendance à s’oxyder rapidement j’ai étamer avec de l’étain les deux sondes.

Capteur

Capteur humidité du sol Aduino / Attiny85

Après quelques jours de mesure 

Après quelques jours de mesure

Les références qui m’ont aidé sur internet :

 

Cet article vous a plus, vous avez des commentaire / amélioration à apporter ? laissez un commentaire 🙂

 

 

 

29 réflexions sur « Capteur humidité du Sol pour moins de 5€ »

  1. lan

    Bonjour j ai essayé , mais un probleme dans le script [in /home/pi/domoticz/scripts/lua/script_device_hum_sol.lua: /home/pi/domoticz/scripts/lua/script_device_hum_sol.lua:5: bad argument #1 to ‘sub’ (string expected, got nil)] .

    Répondre
  2. spike

    Bonsoir, n’y aurait il pas une erreur sur le schéma de câblage au niveau de l’émetteur 433?
    il est indiqué :
    vcc émetteur sur Pin 3 ATtiny
    Data émetteur sur vcc 4,5v
    et gnd sur gnd
    ne faudrait il pas relier vcc émetteur sur 4,5v et data sur la pin 3 ATtiny ??
    Merci.

    Répondre
  3. Nicolas

    Bonjour,
    J’ai suivi votre tuto a la lettre mais je ne parviens pas a voir quoi que ce soit dans domoticz. Je me demande si la bibliotheque x10 fonctionne bien avec Arduino 1.6.7.

    Répondre
  4. Kham

    Bonjour,

    Peut on faire un serveur domoticz avec le récepteur 433 mhz (le même style que cet éméteur) avec les gpio

    Merci d’avance

    Répondre
  5. Djé

    Bonsoir, je me demandais si il est possible de faire la même chose avec une liaison sur un gpio ou bien ce n’est pas possible du fait de la limite des gpio à 0 ou 1??
    Ps: désolé si ma question peut paraitre celle d’un noob, mais je débute effectivement avec la domotique et raspberry….
    Merci d’avance 🙂

    Répondre
    1. Manu Auteur de l’article

      Bonjour,

      le délais d’envois des données est géré dans le fichier soil_moisture_sensors.ino

      ici :

      // Sleep for 8 s 8 x 75 = 600 s = 10m
      for (int i=0; i<75; i++){
      system_sleep();
      }

      il suffit donc de remplacer dans la boucle for 75 par la valeur qui va bien en fonction du temps que vous souhaitez entre 2 envois des données.

      1 = 8 S
      75 = 8 x 75 s = 600s = 10 min

      6 h = 21600 secondes
      21600 / 8 = 2700

      Donc dans le for() ... si vous remplacez 75 par 2700 il y aura l'envois des données toutes les 6h.

      En espérant vous avoir aidé.

      Répondre
      1. Dominiuqe

        Super merci de m’avoir répondu. J’ai lu que les sondes s’oxydaient vite si on relevait trop souvent les lectures. Avez vous eu ce problème ?

        Répondre
        1. Manu Auteur de l’article

          Non pas jusqu’à ce jour mais effectivement ça peux arriver.
          Pour augmenter la durée de vie des sonde vous pouvez également étamer avec de l’étain les sondes que vous plantez en terre.

          Répondre
          1. Dominiuqe

            Il y a longtemps, dans une revue d’électronique il écrivait que on pouvait récupérer les électrodes centrales des piles en graphite pour en faire des capteurs d’humidité. Elles ne s’oxydent pas parait il. A voir, je vais essayer.

  6. Dominique

    Dites il n’y aurait pas une erreur dans le schéma ? l’émetteur est branché dans le bon sens. Vous mettez le + sur l’entrée data ?

    Répondre
  7. Pouilloux Daniel

    Bonjour,
    Après avoir installé les bibliothèques Attiny85 et X10RF, je constate les erreurs suivantes lors de la compilation du croquis soil_moisture_sensor.ino avec ARDUINO 1.8.5 :
    In file included from E:\InstallDELL\Arduino\libraries\x10rf-master\x10rf.cpp:15:0:
    E:\InstallDELL\Arduino\libraries\x10rf-master\x10rf.h:25:19: error: expected ‘)’ before ‘tx_pin’
    x10rf(uint8_t tx_pin, uint8_t led_pin, uint8_t rf_repeats);
    E:\InstallDELL\Arduino\libraries\x10rf-master\x10rf.h:27:19: error: ‘uint8_t’ has not been declared
    void RFXmeter(uint8_t rfxm_address, uint8_t rfxm_packet_type, long rfxm_value);
    ….
    Une solution ?
    Cette solution fonctionne-t-elle avec un RFLINK 433 à la place d’un RFXCOM 433 ?
    D’avance merci,
    D. Pouilloux

    Répondre
  8. LaurentC

    Salut,

    Tout d’abord merci pour ces tutos bien fait notamment pour les modules a base de ATtiny :-D.

    Je m’en inspire pour faire un module de niveau a mesure ultrasons.
    Ca se passe bien mais…. Je récupère n’importe quoi comme valeur dans mon RFXmeter de domoticz.

    En effet la mesure se passe bien, la variable « mavaleur » est bonne mais mauvaise dans domoticz.

    Il n’y a pas de valeur a convertir en hexa? un truc du genre?
    Du coup quelques questions sur ton code

    x10rf myx10 = x10rf(RF_OUT,0,5);

    0 correspond a ?
    5 correspond a ?

    myx10.RFXmeter(3,0,ma_valeur);

    3 correspond a ?
    0 correspond a ?

    Merci de tes lumières car j’ai l’impression que j’interprète mal tout ça et je m’embourbe dans mon idée. et du coup je fait mal.

    Répondre
  9. Sty_X

    Bonjour,

    Bricoleur et avec quelques connaissances en informatique, je suis par contre absolument débutant dans la domotique et dans la programmation. Je souhaiterais cependant faire un projet similaire de capteur d’humidité du sol et le faire communiquer avec Domoticz installé sur un RPi. Mais directement en filaire.

    De là j’aurais plusieurs interrogations s’il est possible d’avoir un petit coup de pouce :
    – Quelles seraient les modifications à apporter au montage et au script ?
    – Faut-il une « unité de programmation » pour programmer le Attiny ou tout ce fait-il via le script stocké sur le RPi ?

    Merci de votre aide !

    Répondre
  10. Pouilloux

    Bonjour,
    J’ai personnellement opté pour une autre solution plus ouverte et facile à mettre avec DOMOTICZ.
    Elle est basée sur un soc Esp (Wemos D1 coût 5€), et le firmware open source ESPEASY. La communication avec DOMOTICZ se fait via WiFi (pas besoindde RFX) et le firmware supporte nativement une large variété de capteurs (en plus des entrées GPIO) dont un capteur d’humidité. L’installation est très facile et il  » y a ensuite que du paramétrage à effectuer.
    J’utilise cette solution depuis 18 mois sans problème problème avec plusieurs type de sondes ou actionneurs (capteur température, humidité, lumière, distance, contacts secs).
    Cordialement,
    D. pouilloux

    Répondre
    1. LaurentC

      Bonjour

      Oui tout à fait,

      J’en ai fait un thermostat de chaudière, un capteur extérieur particules, Co2, et lux. Un capteur particules, Co2 et polluant intérieur.

      Ça va plus vite en effet mais le côté WiFi n’est pas l’idéal à chaques fois

      Répondre
  11. Nicolas

    Bonjour,

    Je viens d’essayer votre solution, sans succès. Mon RFXCom ne reçois rien.
    Pourtant mes autres programmes à base de X10RF fonctionne sans soucis avec les mêmes composants.
    J’ai raccourcis le délais du sleep à 8sec pour être certains de ne pas louper la valeur mais ça n’envoie vraiment rien.

    Si je trouve une solution, j’ajouterais un commentaire.

    Répondre
  12. Laurent

    Salut Nicolas !

    Je m’en suis finalement sorti, j’ai dompté le 85. J’ai conçu deux capteurs à ultrasons pour le niveau de mon ruisseau et d’un réservoir d’eau. En x10.

    J’ai également fait un dérivé en x10 aussi pour me dire si j’ai du courrier dans ma boîte au lettres. Fonctionne comme un charme.

    Le tout sous domoticz.

    J’aimerai bien partager les codes mais je ne sais pas comment faire. Je n’ai pas de schéma non plus.

    Mais ca serai un partage volontier

    Répondre
    1. dominique

      Bonjour,

      J’aimerai bien voir ses codes car je n’ai jamais réussi à faire fonctionner ce montage. Peut tu l’envoyer par mail ?

      Répondre
      1. LaurentC

        Hello,

        Oui pas de problème je te fais ça demain avec quelques captures d’implémentation dans domoticz. Le temps de rendre ça lisible.

        Répondre
  13. Ping : Arrosage Autonome et Automatique #1 Liste des courses | Domotic and stupid geek stuff

  14. Ping : Arrosage Autonome et Automatique – Présentation | Domotic and stupid geek stuff

  15. Ping : Arrosage Autonome et Automatique #2 Schémas | Domotic and stupid geek stuff

Laisser un commentaire

Votre adresse de messagerie 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.