[Partage] Code Sonde DHT11 - Bluetooth HC-06 - Android

Bonjour,

D'abord munissez-vous de :

-Un smartphone avec une application Terminal Bluetooth
-Un Arduino (Mega 2560 R3 pour mon cas)
-Une sonde type DHT11 (branché sur A01 pour arduino mega 2560, sinon mettez le sur A4 et changez le dans le code)
-Un module bluetooth HC06 (rxd banché sur D11 et txd branché sur D10)

Voici le code :

 #include <SoftwareSerial.h>
 SoftwareSerial BT(10, 11); 

#define dht_dpin A0 

 byte bGlobalErr; 
 byte dht_dat[4];

int count = 0;


 void setup()  
 {
   BT.begin(9600);
   
   InitDHT(); 
  delay(300); 
  delay(700); 
 }
 
 char a;
 
 void loop() 

 {
   if (BT.available())
   
   {
     a=(BT.read());
     if (a=='1')
     {
       //---------------------------------
         if (count==0){
   count++; 
   //suite-----------------------------------------------
     ReadDHT(); 
 
  switch (bGlobalErr) 
  { 
     case 0: 
BT.println(dht_dat[2],DEC);
software_Reset();
        break; 
     case 1: 
        BT.println("Error 1: DHT start condition 1 not met."); 
        break; 
     case 2: 
        BT.println("Error 2: DHT start condition 2 not met."); 
        break; 
     case 3: 
        BT.println("Error 3: DHT checksum error."); 
        break; 
     default: 
        BT.println("Error: Unrecognized code encountered."); 
        break;   
        } 
 
  delay(2000);  
   //----------------------------------------------------
  }
  else
  {
    //Ne rien faire
  }
       //----------------------------------
     }
     if (a=='2')
     {
        if (count==0){
   count++; 
   //suite-----------------------------------------------
     ReadDHT(); 
 
  switch (bGlobalErr) 
  { 
     case 0: 
 BT.println(dht_dat[0],DEC);
 software_Reset();
        break; 
     case 1: 
        BT.println("Error 1: DHT start condition 1 not met."); 
        break; 
     case 2: 
        BT.println("Error 2: DHT start condition 2 not met."); 
        break; 
     case 3: 
        BT.println("Error 3: DHT checksum error."); 
        break; 
     default: 
        BT.println("Error: Unrecognized code encountered."); 
        break;   
        } 
 
  delay(2000);  
   //----------------------------------------------------
  }
  else
  {
    //Ne rien faire
  }
     }
    
     if (a=='?')
     {
   BT.println("Tapez '1' pour savoir la température.");
   BT.println("Tapez '2' pour savoir l'humidité.");
     }   
    
   }
 }
 
  void InitDHT() 
 { 
  pinMode(dht_dpin, OUTPUT); 
  digitalWrite(dht_dpin, HIGH); 
 } 
 
 
 void ReadDHT() 
 { 
  bGlobalErr=0; 
  byte dht_in; 
  byte i; 
 
  digitalWrite(dht_dpin, LOW); 
  delay(18); 
  delay(5); 
 
  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; 
    return; 
  } 
 } 
 
 
 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; 
 } 
 
void software_Reset()
{
  asm volatile ("  jmp 0"); 
}

Voila envoyez '1' avec votre smartphone android pour obtenir la température et '2' pour obtenir l'humidité.
'?' pour vous résumer les commandes.

Cordialement,
KoRo.

Merci du partage! :slight_smile:

merci :wink: