Accueil > ARDUINO > Capteurs > Arduino & capteur DHT11 : Mesure de température et humidité (...)

Arduino & capteur DHT11 : Mesure de température et humidité relative

mercredi 26 octobre 2016, par thebault

Caractéristiques du capteur

JPEG - 56.6 ko
  • documentation : simplifiée ou plus complète
  • mesure de température de 0°C à 50°C avec une erreur de +/- 2°C
  • mesure d’humidité relative de 20% à 90% avec une erreur de +/- 5%
  • sortie numérique sur un bus 1 fil (DATA)
  • durée entre deux mesures : 2s
  • la conversion de la température et de l’humidité est faite sur 16bit
  • la trame de data est composée de 5 octets (soit 40 bits) dont un contrôle d’erreur (checksum) :
octet 1 octet 2 octet 3 octet 4 octet 5
humidité (poids fort) humidité (poids faible) température (poids fort) température (poids faible) checksum

Branchements

Si on utilise le composant DHT11 sans PCB (différent des modules tout faits que l’on trouve sur ebay), il est nécessaire d’ajouter une résistance de pull-up sur la ligne DATA - cf doc)

  • carte Arduino Leonardo
  • capteur DHT11 sur PCB
    JPEG - 271.4 ko

Programme arduino

Pour communiquer avec le capteur, on va utiliser la bibliothèque DHT11 présentée sur le site arduino.
Il suffit de télécharger ce fichier et de la décompresser dans le répertoire "..Arduino/libraries"

Zip - 1.8 ko
DHT11.zip

Dans les programmes suivants, on va afficher toutes les 2 secondes les valeurs température et humidité sur le port série. Il faut donc ouvrir le terminal série sur l’interface Arduino après avoir "téléversé" le programme.

Sans contrôle de la transmission

  1. #include <dht11.h>
  2. #define DHT11PIN 4 // broche DATA -> broche 4
  3.  
  4. dht11 DHT11;
  5.  
  6. void setup()
  7. {
  8. Serial.begin(9600);
  9. while (!Serial) {
  10. // wait for serial port to connect. Needed for native USB (LEONARDO)
  11. }
  12. Serial.println("DHT11 programme d'essai ");
  13. Serial.print("LIBRARY VERSION: ");
  14. Serial.println(DHT11LIB_VERSION);
  15. Serial.println();
  16. }
  17.  
  18. void loop()
  19. {
  20. DHT11.read(DHT11PIN);
  21.  
  22. Serial.print("Humidité (%): ");
  23. Serial.print((float)DHT11.humidity, 2);
  24. Serial.print("\t");
  25. Serial.print("Température (°C): ");
  26. Serial.println((float)DHT11.temperature, 2);
  27.  
  28. delay(2000);
  29. }

Télécharger

PNG - 62.5 ko

Avec contrôle de la transmission et affichage des erreurs si nécessaire (si on débranche le câble data, on a un "time out" qui est signalé).

  1. #include <dht11.h>
  2. #define DHT11PIN 4 // broche DATA -> broche 4
  3.  
  4. int check;
  5. dht11 DHT11;
  6.  
  7. void setup()
  8. {
  9. Serial.begin(9600);
  10. while (!Serial) {
  11. // wait for serial port to connect. Needed for native USB (LEONARDO)
  12. }
  13. Serial.println("DHT11 programme d'essai ");
  14. Serial.print("LIBRARY VERSION: ");
  15. Serial.println(DHT11LIB_VERSION);
  16. Serial.println();
  17. }
  18.  
  19. void loop()
  20. {
  21. check= DHT11.read(DHT11PIN);
  22. Serial.print("lecture capteur: ");
  23. switch (check)
  24. {
  25. case DHTLIB_OK:
  26. Serial.println("OK");
  27. break;
  28. case DHTLIB_ERROR_CHECKSUM:
  29. Serial.println("Checksum error");
  30. break;
  31. case DHTLIB_ERROR_TIMEOUT:
  32. Serial.println("Time out error");
  33. break;
  34. default:
  35. Serial.println("Unknown error");
  36. break;
  37. }
  38.  
  39. Serial.print("Humidité (%): ");
  40. Serial.print((float)DHT11.humidity, 2);
  41. Serial.print("\t");
  42. Serial.print("Température (°C): ");
  43. Serial.println((float)DHT11.temperature, 2);
  44.  
  45. delay(2000);
  46. }

Télécharger

PNG - 46.3 ko
SPIP | | Plan du site | Suivre la vie du site RSS 2.0
Habillage visuel © digitalnature sous Licence GPL