Test capteur DHT22 avec carte Arduino UNO

Le DHT22 est capteur de température et de taux d’humidité qui peut être utilisé en extérieur car sa plage de fonctionnement est :

  • Pour la température de -40°C à +125°C avec une précision de 0.1°C
  • Pour l’humidité de 0% à 100% avec une précision de 0.1%

Le capteur possède 4 broches mais la 3ème de sert à rien. On utilise :

  • 1: Alimentation de 3v à 5v – avec 2,5 mA Max
  • 2: Données
  • 4: GND

Pour le test le capteur est branché sur une carte Arduino Uno en utilisant une platine d’essai. Dans l’exemple, j’ai choisi d’alimenter le capteur 3,3v et d’utiliser PIN 2 pour remonter les données du capteur. J’ai également ajouter une résistance de 4,7 KΩ entre l’alimentation et le pin de données pour amplifier le signal généré.

 

Ensuite, il faut réaliser un petit bout de programme avec l’IDE Arduino. Voici la version simplifiée, j’ai également réalisé un test plus complet que vous retrouverez sur GitHub Test_DHT22 .

[pastacode lang=”cpp” manual=”%2F%2F——————————————–%0A%2F%2F%20%20%20%20%20%20%20%20Test%20du%20capteur%20DHT22%0A%2F%2F——————————————-%0A%2F%2F%20EpixFR%20-%20F%C3%A9vrier%202017%0A%2F%2F%20Attention%20fonctionnement%20en%203.3V%0A%2F%2F——————————————-%0A%20%0A%2F%2F%20Inclusion%20des%20biblioth%C3%A8ques%20pour%20le%20capteur%20DHT22%0A%23include%20%3CAdafruit_Sensor.h%3E%20%2F%2FSource%20%3A%20https%3A%2F%2Fgithub.com%2Fadafruit%2FAdafruit_Sensor%0A%23include%20%3CDHT_U.h%3E%20%2F%2FSource%20%3A%20https%3A%2F%2Fgithub.com%2Fadafruit%2FDHT-sensor-library%0A%0A%2F%2F%20Inclusion%20de%20la%20biblioth%C3%A8que%20pour%20les%20messages%20en%20Fran%C3%A7ais%0A%23include%20%3CPrintFr.h%3E%20%2F%2FSource%20%3A%20https%3A%2F%2Fgithub.com%2FEpixFr%2FArduino-PrintFr%0A%0A%2F%2F%20D%C3%A9finition%20du%20type%20de%20capteur%0A%2F%2F%20D%C3%A9claration%20de%20l’input%20utilis%C3%A9%20sur%20la%20carte%20Arduino%0A%23define%20DHTPIN%202%0A%2F%2F%20D%C3%A9claration%20du%20type%20de%20capteur%20DHTxx%0A%23define%20DHTTYPE%20DHT22%0A%0A%2F%2F%20Cr%C3%A9ation%20de%20l’objet%20de%20capteur%20DHT22%0ADHT_Unified%20dht(DHTPIN%2C%20DHTTYPE)%3B%0A%0A%2F%2FVariable%20du%20d%C3%A9lai%20de%20capture%0Afloat%20DelaiCapture%3B%0A%0Avoid%20setup()%20%7B%0A%20%20%2F%2F%20Cr%C3%A9ation%20de%20l’instance%20Message%20de%20type%20PrintFr%20%0A%20%20PrintFr%20Message%3B%0A%20%20%2F%2F%20Initialisation%20du%20capteur%20DHT22%0A%20%20dht.begin()%3B%0A%20%20%2F%2FInitialisation%20de%20la%20capture%0A%20%20sensor_t%20sensor%3B%0A%0A%20%20%2F%2FCalcul%20du%20d%C3%A9lai%20mini%20entre%202%20captures%0A%20%20DelaiCapture%20%3D%20sensor.min_delay%20%2F%201000%3B%0A%0A%20%20Message.Affiche(%22*******************************************%22)%3B%0A%20%20Message.Affiche(%22%20%20%20%20%20%20%20%20%20%20%20Capture%20des%20donn%C3%A9es%22)%3B%0A%20%20Message.Affiche(%22*******************************************%22)%3B%0A%7D%0A%0Avoid%20loop()%20%7B%0A%20%20%2F%2F%20Cr%C3%A9ation%20de%20l’instance%20Message%20de%20type%20PrintFr%20%0A%20%20PrintFr%20Message%3B%20%20%0A%20%20%2F%2FCapture%20des%20donn%C3%A9es%20du%20capteur%20de%20temp%C3%A9rature%0A%20%20sensors_event_t%20event%3B%20%20%0A%20%20dht.temperature().getEvent(%26event)%3B%0A%20%20%2F%2FSi%20on%20n’a%20pas%20d’%C3%A9v%C3%A8nement%20on%20affiche%20un%20message%20d’erreur%0A%20%20%2F%2Fsinon%20on%20affiche%20la%20temp%C3%A9rature%0A%20%20if%20(isnan(event.temperature))%20%7B%0A%20%20%20%20Message.Affiche(%22Lecture%20de%20la%20temp%C3%A9rature%20impossible%20!%22)%3B%0A%20%20%7D%0A%20%20else%20%7B%0A%20%20%20%20Message.Affiche(%22%20Temp%C3%A9rature%20%3A%20%22%2Cfalse)%3B%0A%20%20%20%20Serial.print(event.temperature)%3B%0A%20%20%20%20Message.Affiche(%22%C2%B0C%22%2C%20false)%3B%0A%20%20%7D%0A%20%20%2F%2FAffichage%20s%C3%A9parateur%0A%20%20Message.Affiche(%22%20-%20%22%2Cfalse)%3B%20%20%0A%20%20%2F%2FCapture%20des%20donn%C3%A9es%20du%20capteur%20d’humidit%C3%A9%0A%20%20dht.humidity().getEvent(%26event)%3B%0A%20%20%2F%2FSi%20on%20n’a%20pas%20d’%C3%A9v%C3%A8nement%20on%20affiche%20un%20message%20d’erreur%0A%20%20%2F%2Fsinon%20on%20affiche%20la%20temp%C3%A9rature%0A%20%20if%20(isnan(event.relative_humidity))%20%7B%0A%20%20%20%20Message.Affiche(%22Lecture%20de%20l’humidit%C3%A9%20impossible%20!%22)%3B%0A%20%20%7D%0A%20%20else%20%7B%0A%20%20%20%20Message.Affiche(%22Humidit%C3%A9%20%3A%20%22%2Cfalse)%3B%0A%20%20%20%20Serial.print(event.relative_humidity)%3B%0A%20%20%20%20Message.Affiche(%22%25%22)%3B%0A%20%20%7D%0A%20%20%2F%2FTemporisation%20entre%202%20captures%20(temps%20calcul%C3%A9%20dans%20le%20setup)%0A%20%20delay(DelaiCapture)%3B%0A%7D%0A” message=”” highlight=”” provider=”manual”/]

Attention pour que le code fonctionne, il faut bien posséder les 3 bibliothèques suivantes :

J’ai réalisé la dernière bibliothèque qui permet d’écrire des messages avec des caractères accentués. Plus d’infos ici

Et voici le type de résultat que vous aurez avec la version complète du test  :

La première partie vous donne toutes les caractéristiques du capteur puis le programme boucle sur la capture des données de température et de taux d’humidité.

Sources :