lundi 13 mai 2019

Un thermomètre / hygromètre MYSENSORS sur batterie


 Un thermomètre / hygromètre MYSENSORS

sur batterie



Le but de cette page est d'expliquer pas à pas la réalisation d'un thermomètre / hygromètre basse consommation à base d'ARDUINO PRO MINI, relié par radio à un serveur DOMOTICZ (ou autre supporté par MYSENSORS), à l'aide d'un module NRF24L01 2.4GHZ.

Ce projet fait suite à cet autre projet de thermomètre sur batterie, dans lequel je donne toutes les explications nécessaires.

Ce thermomètre / hygromètre adopte les mêmes composants à l'exception du capteur DS18B20, remplacé par un SHT31D.

Les liens suivants vous seront utiles :
https://riton-duino.blogspot.com/2019/05/mysensors-presentation.html 
https://easydomoticz.com/domoticz-arduino-mysensors-org-partie-2-la-passerelle


1. Le matériel

Pour réaliser ce thermomètre / hygromètre il vous faudra réunir :
  • un ARDUINO PRO MINI 8Mhz 3.3V
  • un module radio NRF24L01
  • un capteur de température SHT31D
  • une résistance de 1M 1%
  • une résistance de 330K 1%
  • un régulateur LM2936-3.3
  • un condensateur 10µF 6.3V
  • un accumulateur 3.7V LITHIUM-ION au format 16340 250mAH minimum avec son support pour PCB
Le PCB est prévu pour une batterie 16340 sur support mais il est tout à fait possible d'utiliser une LIPO fixée au PCB par de l'adhésif double face ou de la colle. La place disponible pour la batterie est de 24x42mm, ou 31x36mm, ce qui autorise un vaste choix.

2. Le schéma


Pour récupérer le projet voir plus bas :  4. Téléchargements.

Le schéma est presque identique à celui du thermomètre. Seul le capteur diffère.

Le routage est semblable et le PCB est monté dans le même boîtier Kradex-Z-123.

3. Le code

Pour récupérer le projet voir plus bas :  4. Téléchargements.

La valeur de VREF dans le sketch est à adapter en fonction de la mesure réelle de la tension de la batterie.
La tension mesurée par l'ARDUINO est affichée dans le terminal. A comparer donc avec la valeur affichée par un bon multimètre.

4. IDE ARDUINO

Il vous faudra bien entendu installer les bibliothèques ARDUINO suivantes :
Librairie MYSENSORS : https://www.mysensors.org/download

5. Téléchargements

Pour télécharger le projet :  https://bitbucket.org/henri_bachetti/mysensors-battery-thermometer-hygrometer.git

Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html


Cordialement
Henri

6. Mises à jour

29/06/2019 : 3. Le code

18 commentaires:

  1. Je suis très intéressé par ce projet, je cherchais à en faire un à base d'ESP8266 (ESP-01) mais il est gourmand en énergie.
    La durée de vie de la batterie de ce système parait pas mal, pourrait on avoir une estimation réel (pas calculé) merci.
    De même le capteur utilisé dans cette version est un peu cher, la différence de prix sur un ds18b20 juste pour avoir l'humidité en plus, je me pose la question un DHT11 ou 22 n'aurait-il pas été suffisant? Il y a peut-être une raison à votre choix.
    Merci pour ce partage.

    RépondreSupprimer
  2. L'ESP8266 n'est pas gourmand en énergie pour qui sait utiliser son mode veille.
    Voir https://riton-duino.blogspot.com/2018/12/consommation-dune-carte-arduino.html
    Le SHT31D est un capteur précis et fiable. Je n'ai jamais obtenu de résultats probants avec du DHT22.

    RépondreSupprimer
  3. J'ajoute : ce capteur est à l'extérieur et le SHT31D est plus fiable que le DHT22 en extérieur. Le DHT22 que j'utilisais auparavant indiquait souvent 99%. Depuis que j'utilise le SHT31D je n'ai plus ce problème.
    Mais le DHT22 en intérieur, pourquoi pas ?

    RépondreSupprimer
  4. Bonjour,
    J'ai testé le montage et programme (avec sht31 et bme280), ça marche nickel, très stable pas de bug.
    J'ai quelques interrogations cependant d'un part sur le montage des composants : y a t-il une astuce pour intégrer les port A4 et A5 sur un PCB sachant qu'il sont décalés de 1.27mm soit 1/2 du pas habituel de 2.54mm, par rapport au autres port ? (pour l'instant j'ai du ajouter des connectiques dupont sur les port mais ça "épaissi" un peu le montage
    Et d'autre part sur le code quelle est l'influence du "L" après la valeur du sleeptime "900000L" ?
    Merci encore pour le partage et ce super blog.

    RépondreSupprimer
    Réponses
    1. J'utilise une empreinte ARDUINO PRO MINI avec broches A4 A5 A6 A7, disponible dans le projet KICAD.
      Une plaquette à pastilles ne convient pas, forcément.

      900000L : 90000 long sur 32 bits.

      Supprimer
  5. Bonsoir, je souhaite commande les pièces sur aliexpress mes il y a beaucoup de référence différente, pouvez vous donnez les liens pour commandez directement cordialement

    RépondreSupprimer
    Réponses
    1. Des références différentes pour quel composant ?
      La PRO MINI, le SHT31, le NRF24L01, le LM2936, le TP4056 ?

      Supprimer
    2. pour tout vous dire, il y a beaucoup de vendeur, je sais pas quoi choisir a des prix totalement différent, avez vous les lien aliexpress des pièces que vous avez commandez cordialement

      Supprimer
    3. Un vendeur X qui vend un produit qu'un autre vendeur Y vend à un prix différent ne signifie pas que les deux produits soient différents.
      D'autre part j'achète mes composants par lots, souvent par 10 pièces ou plus.
      Par exemple mes LM2936 proviennent de chez TME, mais les frais de port sont élevés : 7.90€.
      Pour une petite commande cela n'a aucun intérêt.
      Achetez chez qui vous voulez et comme cela vous arrange.

      Supprimer
    4. Juste quelques détails : le lm2936 est une version en boîtier TO92.
      Le NRF24L01 est une version à antenne imprimée.

      Supprimer
  6. Bonjour, quand j'essaye de charger le code sur le Nano, j'obtiens cette erreur :
    SHT31D-TempHumSensor:20:10: fatal error: Adafruit_SHT31.h: No such file or directory.
    j'utilse la derniere version d'Arduino.
    As tu une idée?

    RépondreSupprimer
    Réponses
    1. J'ai ajouté le lien vers la librairie SHT31.
      4. IDE ARDUINO

      Supprimer
  7. Bonjour Henri j'aurais une question sur la partie TP4056 car quelque-chose me chiffonne: sauf erreur je pense que la sortie 3 (out+) du module TP4056 n'est pas Vbatt mais +5V. Du coup:
    1/ La mesure du niveau de batterie est-elle correcte si prise depuis cette broche ? (mon expérience semble conclure que non)
    2/ N'y a-t-il pas de «perte» si le TP4056 élève Vbatt (entre 3V et 4.2v) vers 5V pour ensuite alimenter le LM2936-3.3 pour l'abaisser à 3.3V ?
    Bien sûr on pourrait brancher le LM2936-3.3 directement à la batterie mais on perdrait la protection contre la décharge profonde.
    Et c'est ce sujet qui m’intéresse au plus haut point: je suis sur un projet autonome qui nécessite d'alimenter en 3.3V la mini pro ou l'esp32 (j'ai 2 versions différentes) ET en 5V (mesure de CO2 avec un Senseair S8).
    Je voudrais si possible conserver la protection contre la décharge du TP4056 mais aussi éviter de perdre de l'autonomie en remontant puis abaissant la tension pour la partie 3.3V.

    Ou alors je me fais des nœuds au cerveau pour pas grand chose sachant que le Senseair S8 a une consommation assez élevée (entre 15 et 300 mA) ?

    Autre solution que j'ai expérimentée: https://fr.aliexpress.com/item/1005002994908493.html

    Mais dans ce cas-là il faut que je trouve un moyen de désactiver les leds parce qu'il y en a entre 1 et 5 suivant la charge de la batterie.

    RépondreSupprimer
    Réponses
    1. Non, VBATT sur le schéma représente la tension de sortie 3.7V (4.2V si la batterie est chargée à bloc) du TP4056.
      Le TP4056 n'élève pas la tension à 5V. Entre la tension présente sur B+ et OUT+ il n'y a pas de différence. Par contre la sortie OUT- peut être coupée en cas de surcharge ou décharge profonde.
      Sur cette page, un schéma pour aider à comprendre :
      https://acoptex.com/project/9446/basics-project-082a-lithum-battery-charger-tp4056-at-acoptexcom/
      Certains modules TP4056 sont dépourvus de circuit DW01A et MOSFETs FS8205A. Dans ce cas, aucune protection n'est assurée.

      Pour info, il existe de meilleurs régulateurs que le LM2936 :
      HT7533-1 (100mA), HT7333-1 (250mA)
      Un ESP32 peut être alimenté par son entrée VCC ou 5V directement à partir de la tension de sortie du TP4056, mais tout dépend du régulateur présent sur la carte :
      - AMS1117 : non, tension drop-out trop élevée
      - ME6211, RT9013 : OK
      Si l'ESP32 est un module nu, ou une carte équipée d'un AMS1117, à alimenter sous 3.3V, on peut choisir le ME6211 ou le RT9013.
      Si du 5V est absolument indispensable, un régulateur STEP-UP sera nécessaire : un XR2981 consomme 120µA
      Voir ici : https://riton-duino.blogspot.com/2019/11/convertisseurs-stepup-stepdown.html

      Supprimer
    2. Autre solution que j'ai expérimentée: https://fr.aliexpress.com/item/1005002994908493.html
      Cette carte a une autonomie ridicule :
      https://riton-duino.blogspot.com/2020/01/cartes-dalimentation-batterie.html
      Voir : 2.8. Dual 18650 battery shield

      Supprimer
    3. "Ou alors je me fais des nœuds au cerveau pour pas grand chose sachant que le Senseair S8 a une consommation assez élevée (entre 15 et 300 mA) ?"
      C'est une consommation très élevé, mais il y a certainement moyen de l'alimenter seulement en cas de besoin, avec un MOSFET canal P :
      https://riton-duino.blogspot.com/2018/08/alimenter-un-capteur-la-demande.html
      Voir : 3.4. MOSFET canal P
      Un AO3401 (SOT23) pourrait largement convenir.
      Sinon : https://riton-duino.blogspot.com/2019/01/mosfets-de-puissance.html
      ATTENTION : choisir l'onglet P MOSFETs dans la table.
      Pour une commande en 3.3V, choisir un MOSFET avec une tension VGSth la plus faible possible.

      Supprimer
    4. En effet je ne saurais dire pourquoi mais j'étais persuadé que le TP4056 était équipé d'un step-up; et en plus j'ai déjà lu plusieurs fois par le passé le lien indiqué, sûrement glané ici-même. Du coup cela m'enlève quelques nœuds au cerveau :)

      J'utilise en effet le HT7533-1 parce que j'ai bien épluché l'article sur les LDO.

      Pour le step-up j'utilise également le XR2981 toujours grâce aux informations de ton site ! Pour la petite histoire j'avais aussi acheté des FP6293 que j'ai testé sans vérifier avant et bien mal m'en a pris: le vendeur s'est trompé et m'a envoyé des 12V (marqués 5V!) et ça m'a grillé mon capteur S8 à 30€. Moralité: vraiment vraiment toujours tester avant de brancher...

      Pour le S8 hélas on ne peut pas l'alimenter à la demande car il a besoin de chauffer et de temps pour converger vers les bonnes mesures.

      Concernant la carte diymore je viens de terminer un test comparatif entre la carte version 1 accu 18650 et un montage maison: 1 accu 18650, un HT7533-1 et 1 XR2981. Le montage est fait avec un ESP32 alimenté en 3.3V, le capteur Senseair S8 en 5V, un SHT31, un écran eink LOLIN 2.13 et des leds. J'ai modifié le programme pour le "désoptimiser": pas de mode sleep; une led allumée tout le temps. Avec la carte diymore l'autonomie a été de 15h et avec le montage maison presque 19h.

      Merci pour la mine d'informations et les conseils.

      Supprimer
    5. "Pour le S8 hélas on ne peut pas l'alimenter à la demande car il a besoin de chauffer et de temps pour converger vers les bonnes mesures."
      Dommage. Difficile d'alimenter par batterie dans ce cas, à moins d'utiliser une grosse batterie avec éventuellement un panneau solaire :
      https://riton-duino.blogspot.com/2020/12/alimentation-par-batterie-panneaux.html

      La différence relevée avec la carte diymore ne m'étonne pas : consommation de 30mA par batterie, contre 120µA pour le XR2981.

      Supprimer