Lire une sonde DHT22 avec un Raspberry Pi

Montage du Raspberry pi et du DHT22
Montage du Raspberry pi et du DHT22

Bonjour,

Nous allons maintenant lire une sonde DHT22 à l’aide du Raspberry Pi afin de relever la température et l’humidité. Vous allez voir, c’est on ne peut plus simple. Nous allons utiliser pour cela nous allons utiliser le matériel suivant :

  • Un Raspberry Pi
  • Une sonde DHT22
  • Une résistance de 4700 Ohms
  • Quelques câbles de connexion (mâle/mâle et mâle/femelle)

Et c’est tout. C’est tout aussi simple que le montage pour l’arduino.

Pourquoi choisir une sonde DHT22 par rapport à une DS18B20 ? Certe la DS28B20 ne coute quasi rien, mais du coup, elle est moins complète puisqu’elle ne permet de pas de relever l’humidité.

Le montage

Avec aussi peu de composants, c’est on ne peut plus facile. Voici le schéma du montage :

Montage Raspberry Pi et DHT22
Montage Raspberry Pi et DHT22

Facile encore une fois ! Quand je vous disais que c’est le même montage que pour l’arduino…

Les branchements sont les suivants :

  • Le Pin 1 de la sonde va vers l’alim 3,3V du Raspberry
  • Le Pin 2 va vers un pin du Raspberry Pi (le pin 4 dans mon exemple).
  • Le Pin 3 … ne sert à rien 🙂
  • Le Pin 4 va vers le Ground du Raspberry Pi
  • Une resistance (de 4700 ohm à 10K Ohm) se branche entre le pin 2 et l’alim (à connecter en premier, avant la sortie vers le pin 4 du raspberry pi).

Voila, le montage est complet. Si vous il ne fonctionne pas, pensez à vérifier votre résistance. Il m’est arrivé d’en griller.

Attention : Ne pas connecter au 5V ! Cette sonde est adaptée au 3,3V donc soit vous grillez votre sonde, soit vous grillez votre résistance, mais dans tout les cas, ça ne va pas le faire …

Le code

Encore une fois, on va exploiter les librairies mises à disposition par adafruit.

Commencez par vous créer un répertoire de travail pour les sondes adafruit :

mkdir adafruit
cd adafruit

Voila, maintenant, on télécharger les librairies adafruit :

wget https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/archive/master.zip
unzip master.zip

Et hop, vous avez récupéré l’ensemble des librairies utiles d’adafruit. Allez dans le dossier spécifique au DHT :

cd Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_DHT_Driver/

voila, vous êtes maintenant au bon endroit pour lire votre capteur. Si votre branchement est correct, exécuter alors la commande suivante :

sudo ./Adafruit_DHT 22 4

Le premier paramètre désigne le type de capteur (ici un 22), le second désigne le pin utilisé sur votre Raspberry Pi. Vous obtenez normalement cet affichage :

Using pin #4
Data (40): 0x0 0xfa 0x0 0xee 0xe8
Temp =  23.8 *C, Hum = 25.0 %

Et voila !

Ça c’est si tout se passe bien ! Ce n’est pas ce que j’ai rencontré. Moi, à la place j’ai eut ça :

sudo: unable to execute ./Adafruit_DHT: No such file or directory

Ettttt ouiiiii…. c’est la loose !

Heureusement voici une solution fiable (encore une fois donnée par Adafruit). Pour nous en sortir on doit recompiler la source d’adafruit en ajoutant une autre bibliothèque : bcm2835, une bibliothèque C de bas niveau permettant d’interagir correctement avec la sonde DHT22.

Dans un premier temps on récupère la bibliothèque et on l’ajoute à notre système :

$ wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.8.tar.gz
$ tar -zxvf bcm2835-1.8.tar.gz
$ cd bcm2835-1.8
$ ./configure
$ make
$ sudo make install

Ensuite, on revient dans le répertoire Adafruit_DHT_Driver, puis on recompile la source d’adafruit en ajoutant la librairie :

gcc Adafruit_DHT.c -l bcm2835 -std=gnu99 -o Adafruit_DHT

On reprend ensuite là où on avait ajouté :

sudo ./Adafruit_DHT 22 4

Et hop ! ça fonctionne 🙂

Using pin #4
Data (40): 0x0 0xf7 0x0 0xed 0xe4
Temp =  23.7 *C, Hum = 24.7 %

Si votre montage ne fonctionne toujours pas, là…. vous avez un problème. Tester votre DHT22 avec l’arduino si vous en avez un, essayer de changer de résistance.

N’hésitez pas à poser vos questions si ce n’est pas assez clair.

Amusez vous bien.

Laisser un commentaire

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