Bonjour à tous, dans cet article je vais vous présenter comment j’ai mesuré la température et le taux d’humidité d’une pièce avec le DHT 11.

Vous pouvez aussi utiliser le DHT 22 qui a des capacités plus élevées.

Pour réaliser ce tutoriel vous avez besoin:

  • capteur DHT11 (2€)
  • de fils
  • d’un arduino

Suivez ensuite le montage ci-dessous:

Collez ensuite le code ci-dessous dans votre Arduino IDE.

Téléversez le.

Ouvrez le moniteur série, vous verrez s’afficher la température et le taux d’humidité mesurés par le DHT11.

#define dht_dpin A0
 byte bGlobalErr;
 byte dht_dat[5];

void setup(){
 InitDHT();
 Serial.begin(9600);
 delay(300);
 Serial.println("Humidite et temperature\n\n");
 delay(700);
 }

void loop(){
 ReadDHT();
 switch (bGlobalErr){
 case 0:
 Serial.print("Humidite actuelle = ");
 Serial.print(dht_dat[0], DEC);
 Serial.print(".");
 Serial.print(dht_dat[1], DEC);
 Serial.print("% ");
 Serial.print("temperature = ");
 Serial.print(dht_dat[2], DEC);
 Serial.print(".");
 Serial.print(dht_dat[3], DEC);
 Serial.println("C ");
 break;
 case 1:
 Serial.println("Erreur 1: la condition de démarrage DHT 1 n'est pas remplie.");
 break;
 case 2:
 Serial.println("Erreur 2: la condition de démarrage DHT 2 n'est pas remplie.");
 break;
 case 3:
 Serial.println("Erreur 3: Erreur de somme de contrôle DHT.");
 break;
 default:
 Serial.println("Erreur: code non reconnu.");
 break;
 }
 delay(800);
 }

void InitDHT(){
 pinMode(dht_dpin,OUTPUT);
 digitalWrite(dht_dpin,HIGH);
 }

void ReadDHT(){
 bGlobalErr=0;
 byte dht_in;
 byte i;
 digitalWrite(dht_dpin,LOW);
 delay(20);

digitalWrite(dht_dpin,HIGH);
 delayMicroseconds(40);
 pinMode(dht_dpin,INPUT);
 dht_in=digitalRead(dht_dpin);

if(dht_in){
 bGlobalErr=1;
 return;
 }
 delayMicroseconds(80);
 dht_in=digitalRead(dht_dpin);

if(!dht_in){
 bGlobalErr=2;
 return;
 }
 delayMicroseconds(80);
 for (i=0; i<5; i++)
 dht_dat[i] = read_dht_dat();
 pinMode(dht_dpin,OUTPUT);
 digitalWrite(dht_dpin,HIGH);
 byte dht_check_sum =
 dht_dat[0]+dht_dat[1]+dht_dat[2]+dht_dat[3];
 if(dht_dat[4]!= dht_check_sum)
 {bGlobalErr=3;}
 };

byte read_dht_dat(){
 byte i = 0;
 byte result=0;
 for(i=0; i<8; i++){
 while(digitalRead(dht_dpin)==LOW);
 delayMicroseconds(30);
 if (digitalRead(dht_dpin)==HIGH)
 result |=(1<<(7-i));
 while (digitalRead(dht_dpin)==HIGH);
 }
 return result;
 }

 

Voilà c’est terminé pour aujourd’hui, j’espère que ce tutoriel vous a plu !

Amusez-vous bien !!!!