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.