Go Down

Topic: [Partage] Code Sonde DHT11 - Bluetooth HC-06 - Android (Read 64 times) previous topic - next topic

KoRo

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 :
Code: [Select]
#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.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy