Capteur temperature humidite wifi_hardware

Capteur température humidité WiFi sur pile à moins de 10 euros – Hardware

Comme nous l’avons montré dans la partie précédente, le projet de concevoir un capteur de température/humidité en WiFi autonome est réalisable en respectant certains points comme la limitation de la consommation.

Maintenant que nous avons dégrossi l’étude de chaque composant du capteur, nous allons voir comment nous allons les faire interagir ensemble.

Conception

Je suis parti sur le timer ultra basse consommation(le TPL5110) pour cadencer les mesures et leur envoi vers une plateforme. Pour commencer (on affinera après), je souhaite réveiller le MCU+WiFi toutes les 2 heures. Voici un schéma pour une application typique :

tpl5110 schématique

A la différence de ce schéma, j’ai décidé d’utiliser un MOSFET canal-N (le IRLML2502, c’est ce que j’avais sous la main) pour piloter le GND et non le VDD. Ensuite, il suffit, avec la datasheet, de trouver les bonnes valeurs de résistance (Rext) pour obtenir le temps de réveil adéquate. (Ils fournissent un tableau de valeur tout fait. vous pouvez aussi utiliser la formule de calcul donnée …)

Grâce à ce principe, on va pouvoir limiter au maximum la consommation d’énergie de notre objet.

Dans mes premiers prototypes, je suis parti sur un PCB maison fait avec ma CNC. Du coup, je me suis imposé de tout faire rentrer sur un layer. En effet, avec une CNC et vu la finesse des boitiers à souder (SOT23), je voulais un usinage le plus simple possible. Du coup, la dimension de l’objet sera plus volumineuse que les versions ultérieures.

Encore une fois, pour simplifier, je suis parti sur le capteur de température/humidité de la famille des DHT (DHT11 ou  DHT22).

Comme je vous l’avez dit dans la première partie, mon objectif est de développer un  capteur abouti. Et qui dit « abouti » dit boitier. Bien entendu, un boitier le moins cher possible… (hé oui, je n’oublie pas qu’il faut que je tombe en dessous des 10€ de matériel)

J’ai effectué pas mal de recherche sur des boîtiers tout fait, mais quasiment impossible (même chez les sites asiatiques) de trouver des boîtiers (légèrement) design à moins de 2€ (d’ailleurs je suis ouvert à vos idées en commentaire).

Et lors d’un baptême … eureka !!! j’ai eu l’idée d’utiliser une boule transparente (en deux parties). Voilà mon boitier à pas cher (moins de 1€/ boitier !)

Il en existe de toutes les tailles 5cm , 8cm , 10cm …

1ère version

Ok, passons maintenant à l’assemblage de toutes les briques du capteurs.
Voici la schématique de la toute première version du capteur:

schématique_capteur_température humidité version 1

Schématique du capteur T/H version 1

Voici les valeurs des résistances :

R1 = 2.2Ko
R2 = 200Ko
R3 = 820Ko
R5, R6, R7, R8, R9 = 10Ko

Voici les valeurs des condensateurs :

C1, C2, C3 = 100nF

Le schéma est plutôt simple:

De la gauche vers la droite:

  • La batterie: la CR123A
  • La diode de protection
  • Le timer (expliqué plus haut)
  • Le MOSFET canal N qui va permettre de mettre à la masse lorsque le timer va se déclencher
  • En haut, la partie capteur température / humidité (Famille DHT11/22)
  • l ‘ESP12F qui est le cœur du système
  • et 2 connecteurs:
    • 1 pour flasher (à l’aide d’un convertisseur FTDI)
    • 1 pour mettre en mode « bootloader » ou démarrage sur la flash

Passons au design :

Design_capteur température humidité version 1

Design du capteur T/H version 1

Design aussi très simpliste. J’ai tout fait pour que tout puisse être routé sur une seule face. J’ai aussi espacé les pistes au maximum pour la CNC puisse faire son travail correctement.

Voila à quoi ça ressemble pour la CNC. (J’ai appliqué la même méthode que dans mon article sur la conception de carte électronique)

Capteur version 1 mode CNC

Routage à la CNC

Et maintenant, voici le prototype usiné + composants soudés :

face -Capteur de température humidité version 1

Face avant du capteur T/H

Pile -Capteur de température humidité version 1

Face arrière du capteur T/H

Achats

Ci-dessous la liste des composants essentiels pour monter ce capteur:

  PrixPUAction
ESP12F1.92€1.92€
MOSFET Canal N1.15€ (les 10)0.12€
Timer TPL51110.858€0.858€
Support pile5.05€ (les 5)1.05€
Capteur DHT113.85€ (les 5)0.77€
Plaque de cuivre1.5€1.5€
Boules transparentes8.99€ (les 12)0.75€
Pile CR123A 3.7v recheargeable5.39€ (les 2)2.70€
TOTAL9.5€

Chose promise, chose due. Le capteur revient bien à moins de 10€ tout compris. (Je n’ai pas compté l’étain, ni les résistances / condensateur). Il est aussi possible de faire descendre les prix de manière conséquente en commandant par lot plus important.

Synthèse

Une fois produite, j’ai commencé à effectuer quelques tests sur le fonctionnement du capteur, sa consommation réelle, ses limites …etc. En effet, il y a souvent une grosse différence entre l’étude/conception et la réalité des choses. Mais dans mon cas, pas trop de surprise, les consos réelles sont voisines de la théorie et les fonctions sont conformes à ce que je voulais.

Aussi, le fait de manipuler l’objet, de le laisser vivre et d’être confronté à certains cas vous permet de réfléchir à de nouvelles fonctionnalités… Comme par exemple, avoir un retour de tension de pile. J’étais tellement concentré sur l’économie d’énergie, que j’avais zappé la remontée d’informations. D’autres part, j’étais persuadé que sans régulateur, il était impossible d’avoir une tension de référence fiable.

Mais j’ai quand même cherché et je me suis rendu compte que sur le module ESP8266, il existait une tension de référence de 1v sur la patte ADC avec un convertisseur 10bits. Du coup avec un simple diviseur de tension, il est possible d’avoir l’information sur la tension de pile.

C’est l’une des grosses corrections (sans parler des améliorations) appliquée à la version 2 du capteur.

(Malgré tout, cette version reste entièrement fonctionnelle et les consommations respectées. Elle est aussi plus adaptée pour un montage fait maison ;))

2ème version

Une fois la première version validée, j’ai voulu passé à la vitesse supérieure en faisant produire le PCB. Ceci me permet d’utiliser deux couches, d’avoir un routage plus fin et de réduire de manière conséquente la taille du capteur.

Au niveau schématique, j’ai rajouté la gestion de tension de pile, l’intégration de capteurs en I2C et j’ai sorti la SPI pour contrôler un écran ou un lecteur de badge par exemple.

Du coup, le boitier (la boule) passe de 8cm de diamètre à 5cm… beaucoup plus « smart » et surtout intégrable dans un environnement de maison

schématique du capteur wifi T/H version 2

Bon on reprend le même schéma que la version précédente avec quelques améliorations:

  • On rajoute un bouton pour forcer le timer à se déclencher.
  • J’ai rajouté des empreintes de résistances pour le paramétrage du Timer (mode one shot), pour basculer sur un régulateur de tension ou pas
  • L’empreinte du capteur DHT est toujours là mais je l’ai rendu aussi compatible pour accueillir une sonde de température DS18B20
  • Toujours le MOSFET Canal N pour basculer le GND
  • J’ai rajouté une empreinte pour le capteur BME280 qui dialogue en I2C et qui me permettra d’avoir en plus la pression atmosphérique. (Je regrette fortement de ne pas avoir prévu une empreinte pour le capteur SHT21 qui en plus est compatible avec 2-3 autres capteurs. Je corrigerai dans la prochaine version)
  • En bas, j’ai rajouté un pont diviseur de tension pour surveiller la tension de pile. La patte analogique de l’ESP12F permettra de convertir la tension (par rapport à une tension de référence de 1V) et obtenir la bonne valeur.
  • J’ai rajouté aussi une empreinte pour intégrer un régulateur de tension (en bas à droite sur le schéma) pouvant être piloter par le timer.
  • Enfin j’ai sorti les pattes de la SPI pour pouvoir piloter un écran ou lecteur de badge (à droite toute).Voici les 2 faces du capteurs:

Face avant du capteur T/H version 2

Face avant du capteur de température / humidité V2

Face arrière du capteur T/H version 2

Face arrière du capteur de température / humidité version 2

Légende :

GND : masse de la pile
GDM : masse du capteur (quand le timer s’active, GND = GDM grâce au MOSFET)
TX,RX : Port UART de l’ESP12F
VCC : 3v de la pile
VIN : 3v d’entrée de la pile vers régulateur
VOUT : 3.3v de sortie du régulateur
EN : Patte « enable » du régulateur piloté par le Timer
En rose : l’I2C
En violet : la SPI
En bleu : les correspondances GPIOs

Le design n’a en fait plus rien à voir avec la version précédente. C’est encore loin d’être parfait, mais j’apprends au fur et à mesure en corrigeant mes erreurs (tant bien que mal).

Bien entendu, vous retrouverez tous les fichiers liés à la conception hardware sur mon Github.

Voici à quoi ça ressemble une fois produit et soudé. (Cette fois-ci, c’est la version avec le capteur BME280). Il se trouve sur la face avant dans le coin inférieur droit.

Face avant du capteur temperature humidité version 2

Face avant du capteur T/H/PFace arrière du capteur T/H/P

Achats

Voici la liste des composants à acheter pour monter la carte

  PrixPUAction
ESP12F1.92€1.92€
MOSFET Canal N1.15€ (les 10)0.12€
Timer TPL51110.858€0.858€
Support pile0.45€ x20.90€
BME28016.16€ (les 5)3.24€
PCB fusion Seeed9.90€ (les 10)0.99€
Bulles blanches 5CM5.46€ (les 10)0.55€
Pile CR123A 3v4.49€ (les 2)2.25€
TOTAL11€

Dans cette version, le coup du capteur température / humidité / Pression (BME280) a triplé, mais je me rattrape sur les clips de piles, les piles, le boitier ainsi que la production du PCB. Comme pour l’ancienne version, je ne compte pas toute la partie dit « consommable » qui représente un coût négligeable (ou pas).

Synthèse

Cette version du capteur est, bien entendu, beaucoup plus propre que la précédente mais requiert plus de de connaissances / compétences… ne serait-ce que pour souder le BME280.

Ce capteur paraît bien plus abouti et « professionnel » que la version précédente de part la qualité du PCB et son boitier plus élégant. (Mais c’est avant tout grâce au travail sur la version 1).

Actuellement, je teste plusieurs capteurs pour suivre la consommation et/ou appliquer de nouvelles fonctionnalités (écran, lecteur de badges par exemple).

En effet, mise à part la fonction de capteur, il était intéressant, pour moi aussi, d’avoir une carte « couteau suisse » pour pouvoir faire d’autres maquettes ou créer de nouveaux objets.

Dernière chose :

Pour que le capteur soit entièrement fonctionnel, il est important que le boitier laisse passer l’air afin que le capteur de température / humidité puisse faire correctement son travail. Pour ce faire, j’ai dû usiner un outil me permettant de produire à la chaine des petit trous sur une face du boitier à l’aide de la CNC.

usinage outil pour boitier capteur WIFI

Outil pour usinage boitier

Usinage boitier capteur WiFi

Usinage du boitier du capteur T/H WiFi

Cette partie (une fois l’outil usiné) prend peu de temps (moins de 5 min) et je trouve le rendu sympa comme sur la photo suivante :

Capteur wifi t/h/p version 2

Boitier capteur WiFi T/H/P version 2

Il suffit de rajouter des doubles ventouses sur le boitier et vous pouvez le poser ou le clipper dans un frigo ou plus généralement sur une surface plane.

Conclusion

Dans cet article, je vous ai partagé toute la partie « Hardware » du capteur. Vous avez pu voir qu’il est possible de concevoir un capteur communiquant (WiFi) abouti à pas cher (moins de 10€ tout compris).

Malgré tout, il manque quelque chose d’essentiel pour ce capteur. En effet, à ce stade, il peut uniquement servir de presse-papier.

Dans la prochaine partie, je vais vous partager toute la partie logicielle. C’est à dire, le logiciel embarqué (sketch Arduino) et le plugin Jeedom pour pouvoir « domotiser » le tout.

Merci pour la lecture et à très bientôt pour la dernière (non des moindre) partie de ce projet.

Lien Github

[Total : 17    Moyenne : 3.4/5]

22 comments

  1. Bonsoir et merci pour ce super article.
    Peux tu nous donner plus d’informations sur la consommation énergétique et la durée de vie de la batterie ?

    Merci encore

  2. Tu peux retrouver les informations sur la consommation énergétique sur l’article précédent :

    http://faire-ca-soi-meme.fr/domotique/2017/01/13/capteur-temperature-humidite-wifi-sur-pile-a-moins-de-10-euros-etude/.

    avec la formule de calcul suivante :
    Conso = ((6*90 + 7194*0.00004) / 7200) x 8760 = 658 mAh sur 1 an

    En gros, le capteur reste 6 secondes éveillé à 90mA(estimation haute). Il se réveille toutes les deux heures. Donc sur 1 an ou 8760 heures , il consommera 658mAh. Avec une CR123A rechargeable de qualité tu as (en pratique) 800mAh.

    En espérant avoir répondu à ta question.

  3. Beau boulot 🙂

    En lisant le début j’ai vu DHT11 j’ai pas aimé et après j’ai vu l’usage du BME280 et c’est nettement mieux (j’ai aussi un HTU21D qui traîne mais pas encore testé), j’aime bien ce petit chipset il est complet stable et consomme moins qu’un DHT 🙂

    Côté conso électrique l’ESP a en effet des pics lors de l’émission WiFi à voir si la batterie appréciera (ou pas) quand elle commencera à se décharger sinon on peut corriger cela avec un gros condo ou un inducteur 10mH.

    Très bonne vidéo montrant ces pics de courant https://www.youtube.com/watch?v=6SdyImetbp8 et comment les lisser.

    Le TPL pour le Timer c’est bien aussi c’est fait pour et c’est pratique.

    Actuellement un relevé toutes les 2H c’est pas énorme mais il y a des optimisations possibles pour avoir un relevé plus rapproché mais avec envoi WiFi tous les xx relevés en sauvegardant les valeurs dans une EEPROM entre-temps (mais ça n’a pas un durée de vie très longue si on écrit souvent dedans) j’ai trouvé cette vidéo intéressante pour la gestion RTC https://www.youtube.com/watch?v=r-hEOL007nw

    Côté WiFi j’ai pas vu le code mais mettre une IP en statique ça gagne un peu de temps.

    Globalement il doit y avoir moyen de descendre en dessous des 6 secondes par cycle non ?

    Autre vidéo sur l’usage d’un ESP sur Pile bouton https://www.youtube.com/watch?v=IYuYTfO6iOs

    1. Merci pour tes commentaires ;).
      J’ai choisi le DHT pour la version DIY reproductible par la plus grande majorité.
      Pour les piles, j’ai testé avec une CR123A en fin de vie et les appels de courant du WiFi ne mettent pas à genou la pile (enfin jusqu’à un certain niveau …:)).
      Mais il est quand même judicieux de mettre une grosse capa. J’ai mis une 20uF sur l’alim de l’ESP et ça se passe assez bien.
      Pour la remontée toutes les 2 heures, j’avais pensé, comme toi, à stocker les datas sur une EEPROM. (à voir si je vais intégrer ça dans les améliorations :))
      Pour l’IP statique, je te confirme que l’on gagne 2-3 secondes par rapport au DHCP.
      En limitant au maximum j’arrive à descendre à 3seconde… mais il faut faire quelques compromis de « confort » d’utilisation.
      Pour l’alimentation avec une pile bouton, j’ai testé mais on peut rien tirer sur ces piles (10mA en pic je crois) sauf avec une très grosse capa. J’avais déjà vu la vidéo du « guy with the swiss accent » 😉 et il faut que je teste son tuto.

      En tout cas encore merci pour avoir échangé tes infos/avis. C’est comme ça qu’on progresse et qu’on avance 🙂

  4. Bonjour

    Super étude ! merci pour la ‘révélation’ des TPL 5110 et TPL5111
    As(tu pensé aux accus LiFePo4 ? ils paraissent idéaux içi : courbe de décharge parfaite (de 3,5V à 3V) faible résistance interne (bon pour les pics de courant du Wifi).

    Pour les ESP8266 j’étais parti sur un plan analogue avec , en timer, un petit MSP430

    Par la suite en fignolant la consommation de la phase active (puissance radio abaissée à 16 dBm, session durant un peu moins de 1s incluant une mesure de T° par DS18B20 en mode 10 bits et un envoi vers ThinkSpeak ou vers un broker local) avec un accu LiFePo4 de 1500mA (donc sans régulateur de tension) je dépasse largement les 6 mois d’autonomie……. j’espère atteindre 9 mois avec les modules tournant actuellement….les µA perdus en deepsleep deviennent pour moi secondaires en pratique.
    (La conso annoncée par Espressif pour le deepsleep est OK mais il faut ajouter celle de la mémoire Flash)

    1. Bonjour et merci pour ton commentaire.
      Oui, j’ai parcouru la solution du LiFePo4 mais:
      * soit ça coûte trop cher (et du coup ça dépassait mon budget de 10€)
      * Soit le format n’était pas bon (16340)(ça rentre plus dans la boule)
      Si tu as des liens pour cette technologie dans le bon format à pas cher, je suis preneur !

      Pour la consommation, je trouve que le deepsleep (même si c’est une vingtaine de uA) n’est pas assez performant. Le mode deepsleep des Cortex (par exemple) est plutôt de l’ordre de 2uA.
      Avec 1500mA, mon capteur tiendrait facilement plus de 3 ans avec le Timer.
      La grosse amélioration a effectué de mon côté est de limiter le temps d’éveil. En utilisant MQTT plutôt que HTTP (en mode classique) sera déjà une sacré avancée pour la consommation

  5. Bonjour

    j’apprécie également les µC basse consommation (MSP430 en particulier)

    Mon cahier des charges est différent : simplicité (plus de CI maison, plus de soudures de CMS) autonomie 9 mois , le deepsleep ESP8266 dans ce contexte me convient.

    je prends mes LiFePo4, par lots, chez piles44

    Mes premiers essais MQTT (vers un broker local sur Raspberry ou un broker distant) sont décevants du point de vue durée de veille (je présume que la reconnection au broker au réveil est est la cause)

  6. je vois, à l’unité une LiFePo4 14500 900mA à 3,90 € TTC et 3€70 par 10
    http://piles44.com/fiche.php?idprod=1263&recherche=&de=0&cat=112&type=35&charge=&energie=11&amperage=&volt=&constructeur=&order=&option=
    le moteur de rechecrche n’est pas top , il faut mettre de la bonne volonté pour trier les LiFePo4
    les 14500 sont à première vues les plus petites vendues pae Piles 44
    j’utilise des 1500mA de la même marque IFR avec des ES8266 en deepsleep et en suis très satisfait.

    1. Merci pour cette recherche. Je pense que je vais franchir le pas et les essayer. Malgré tout, ça reste encore plud cher que les CR123a rechargeable ou pas mais la techno est je l’avoue meilleure.

  7. Bel exercice d’intégration. L’idée des boules est excellente d’autant plus avec ce que tu es arrivé à faire avec ta commande numérique.
    Si tu te lances dans la vente de lots de boules, je suis intéressé !
    Pour le circuit, je pense que le choix du WIFI est trop contraignant au niveau de la consommation par rapport à une approche mySensors pas plus coûteuse pour autant ni plus encombrante.

    1. Merci. Le WiFi est en effet trop gourmand et peu adapté pour le monde des IoT. J’en étais conscient mais j’ai voulu relever le défi. Pour la vente de bouboules, y a toujours moyen de s’arranger… Envoie moi un mail.

  8. Merci pour cette article et bravo, le rendu est vraiment très beau et quasi-professionel.
    Je déplore à chaque fois dans le DIY le rendu esthétique des choses pas très esthétique et voir parfois dangereux…
    Par rapport au « 1 an » de batterie ça tient compte de la consommation du diviseur de tension ? Car un diviseur de tension ça consomme constamment du courant.
    Il possible avec un MOSFET et une broche GPIO du module d’activé ou non le circuit « diviseur de tension » ça permet d’activé « à la demande » la lecture du diviseur de tension, de mémoire je crois que c’est un avec MOSET CANAL P.

    1. Merci à toi. Pour le pont diviseur, il n’est actif que si le timer démarre l’esp8266 donc pas de problème de consommation. J’ai bien entendu vérifié avec mon ampèremètre. En mode dodo, seul le timer consomme 35-45 nano Ampère.

      1. Ah oui très bien et vu tes connaissance je pensais bien que c’était de l’autre côté du SWITCH, je n’ai pas eu le temps de regarder le PCB pour déterminer ça.

        J’ai découvert les IC Timer, c’est vraiment une très bonne alternative que de gérer le « Deep sleep » côté ESP/Arduino ça permet de faire l’impasse sur les optimisations côté Hardware ( Notamment sur les board Arduino ).

        Par exemple pour un tracker GSM/GPS on peut récupérer les coordonnées pendant des années 1x par jours, après c’est l’auto-décharge de la batterie à prendre en compte, mais avec un petit panneau solaire et un ldo, je pense qu’on peut facilement composer ça.

Leave a Reply

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