Raspberry – Thermomètre connecté avec une sonde DHT22

Bonjour à tous ! Aujourd’hui nous allons aborder un projet qui traîne depuis un certain temps pour moi, la réalisation d’un thermomètre connecté avec un Raspberry Pi et une sonde DHT22.

Cette sonde nous permettra de récupérer la température et l’humidité

Ce type de thermomètre peut-être utile si vous voulez monitorer la température de votre maison par exemple et exécuter des actions en cas de température élevée ou faible pour allumer le chauffage ou la climatisation.

Il peut également permettre de surveiller une salle serveur par exemple, en envoyant des alertes en cas de température élevée comme dans le cas que nous verrons.

Matériel

Tout d’abord le matériel utilisé pour ce thermomètre :

  • Raspberry Pi 3B sous Raspbian 9
  • Une sonde DHT22 (Lien ici.)
  • Des câbles dupont femelle/femelle

Attention, si vous achetez une sonde DHT22 il en existe plusieurs modèles, certaines sont pré-assemblées comme celle que j’ai choisie. Les branchements et les matériaux peuvent être différents.

Je présenterais les branchements pour les deux cas que j’ai vu, avec la sonde du lien et avec une sonde « nue ».

Dans le cas d’une sonde nue il faut rajouter :

  • Une plaque d’essai
  • Des résistances 4.7 ohms (Lien ici.)
  • Des câbles dupont mâle/femelle

Branchement

Comme indiqué au-dessus, voici les deux sondes DHT22 :

Avec une sonde pré-assemblée

Nous avons donc seulement 3 pin sur ce modèle qu’il faut brancher de la manière suivante (ne faite pas attention à la sonde sur l’illustration, nous utilisons bien une DHT22 et pas une 11) :

Le PIN 1 de la sonde est relié au PIN 2 du rapsberry qui correspond à l’alimentation 5V.

Le PIN 2 de la sonde est relié à la masse sur le PIN 6 du raspberry.

Le PIN 3 de la sonde est relié au PIN 7 du raspberry afin de permettre les échanges d’informations.  

Dans mon cas je n’utilise pas de plaque d’essai, je branche directement la sonde au raspberry :

Avec une sonde nue

Avec une sonde nue il faut donc rajouter une résistance et une plaque d’essai pour réaliser un branchement comme celui-là :

Le 3ème PIN de la sonde n’est pas utilisé, sinon les autres sont reliés aux mêmes PIN sur le raspberry, l’alimentation, la masse et le PIN 7 pour les données.

Fonctionnement

Pour récupérer les informations de la sonde une librairie a été développée par Adafruit, personnellement j’utilise la librairie Python compatible avec 2.7 et Python 3.

Pour installer cette librairie, plusieurs possibilités sont possibles, de mon côté j’ai procédé de la façon suivante :

Vous pouvez ensuite vérifier le fonctionnement de votre sonde avec les commandes suivantes :

Le script doit normalement vous renvoyer la température et l’humidité de la sonde. Les paramètres 22 et 4 correspondent respectivement à la sonde utilisée (DHT22) et au PIN utilisé (GPIO4, le 7 du raspberry).

La sonde est maintenant installée et fonctionnelle.

Pour aller plus loin

De mon côté ce que je voulais faire c’était réaliser un dashboard Web pour consulter la température et l’humidité d’une pièce avec éventuellement des alertes si la température est trop élevée.

Pour cela j’ai repris la librairie fournie par Adafruit et j’ai développé un script Python qui renvoi la température et l’humidité dans deux fichiers CSV différents avec une date au format timestamp. Pour automatiser le script j’utilise simplement un cron.

Pour l’affichage j’ai utilisé la librairie CanvasJS qui permet de réaliser des graphiques facilement depuis les données d’un fichier CSV.

Une option a également été rajoutée pour être alerté en cas de température trop élevée.

Voici le script en question :

Les paramètres possibles sont donc :

  • temperature pour récupérer la date et la température
  • humidity pour récupérer l’humidité et la température
  • alert pour vérifier la température et être alerté si trop élevée

J’ai ensuite rajouté tout ça dans le fichier cron pour que le script soit exécuté toutes les heures :

Voici un exemple de mail reçu :

Dans mon cas l’adresse d’envoi utilisée est une adresse Gmail.

Et pour finir voici le dashboard réalisé avec CanvasJS :

Le code du dashboard n’est pas présent ici car il rendrait l’article illisible. Il est présent sur le Fork Github du projet que j’ai réalisé pour stocker l’ensemble des fichiers. Il est à placer à la racine du serveur Web.

Pour récupérer les informations depuis la page Web je renvoie l’ensemble des résultats du script avec le cron à la racine du serveur Web dans deux fichiers, temperature.csv et humidity.csv.

Le serveur utilisé dans mon cas est Apache2.

CanvasJS est une librairie avec une licence commerciale, il reste tout de même possible de l’utiliser gratuitement si c’est dans un cadre scolaire, personnel. Tout est expliqué ici.

Lien du projet complet sur Github.

Voilà, nous avons maintenant notre dashboard pour suivre l’évolution de la température et les alertes par mail.

J’espère que cet article vous aura plu, si vous avez des questions ou des remarques sur ce que j’ai pu écrire n’hésitez pas à réagir avec moi par mail ou en commentaire !

Merci pour votre lecture et à bientôt !

MRigonnaux

6 Replies to “Raspberry – Thermomètre connecté avec une sonde DHT22”

  1. Il y a peut-être une coquille, on ne branche pas à la « terre » mais à la « masse ».
    Ensuite il ne me semble pas que les pins de la raspberry soient 5V tolerant, donc a priori il vaut mieux toujours utiliser l’alim 3v3 (au moins pour la data et sa résistance de pull up en cas de composant « nu »)

  2. Bonjour,
    Merci pour cet article. Je m’amuse moi même en ce moment avec un capteur de qualité d’air (qui en plus de détecter les particules fines embarque lui aussi un DHT22 pour la température et l’humidité relative). Même si je n’utilise pas la même config, je me retrouve avec un peu les mêmes besoins en terme de visualisation. Mes données sont enregistrées dans une base de données posgresql sur un serveur à part et je les visualise avec Grafana. Plutôt sympa comme outil.
    Sinon en passant, il y a à priori deux adresses mail valides sur ta capture d’écran. Je ne sais pas si c’est volontaire ou pas…

    1. Bonjour Fred,

      Merci pour ton commentaire !

      J’avais pas pensé à utiliser Grafana il faut que je regarde,

      Est-ce que je peux savoir également ce que tu utilises comme sonde de ton côté ? Avec un Raspberry aussi j’imagine ?

      Concernant la capture, j’ai complètement zappé quand j’ai publié l’article… Je viens de corriger !

      Merci d’avance pour ton retour !

      MRigonnaux

      1. En fait, j’ai récupéré un kit de capteur qui s’intègre au projet de mesure de la qualité de l’air de Luftdaten.info . Le kit en question n’utilise pas de Raspberry Pi mais d’autres composants tout à fait standards (µ-controlleur NodeMCU ESP8266, capteur de particules fines SDS011 et le même DTH22 que toi).
        Sinon, j’ai découvert Grafana à cette occasion (ça me donne un prétexte pour jouer avec un nouvel outil). C’est nettement plus lourd que ta solution mais cet outil est vraiment cool. Le projet Luftdaten.info l’utilise d’ailleurs…

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.