TEMPERATURE + HUMIDITY (DHT11) []

Outils pour utilisateurs

Outils du site


TEMPERATURE + HUMIDITY (DHT11)

Ceci est une ancienne révision du document !


TEMPERATURE + HUMIDITY (DHT11)

CHARACTERISTICS

  • Operating Voltage 3.3V to 5.5V
  • Humidity measurement range 20% to 90% RH
  • Humidity measurement accuracy ±5% RH
  • Humidity measurement resolution 1% RH
  • Temperature measurement range 0ºC to 50ºC [32ºF to 122ºF]
  • Temperature measurement accuracy ±2ºC
  • Temperature measurement resolution 1ºC
  • Signal transmission range 20m

ARDUINO WIRING

HOT TO USE A DHTXX

CODE SAMPLE

#include <dht.h>
 
dht DHT;
 
#define DHT11_PIN 7
 
void setup(){
}
 
void loop(){
  int chk = DHT.read11(DHT11_PIN);
  delay(1000);
}
int DHpin = 8; // input/output pin
byte dat[5];   
 
byte read_data()
{
  byte i = 0;
  byte result = 0;
  for (i = 0; i < 8; i++) {
      while (digitalRead(DHpin) == LOW); // wait 50us
      delayMicroseconds(30); //The duration of the high level is judged to determine whether the data is '0' or '1'
      if (digitalRead(DHpin) == HIGH)
        result |= (1 << (8 - i)); //High in the former, low in the post
    while (digitalRead(DHpin) == HIGH); //Data '1', waiting for the next bit of reception
    }
  return result;
}
 
void start_test()
{
  digitalWrite(DHpin, LOW); //Pull down the bus to send the start signal
  delay(30); //The delay is greater than 18 ms so that DHT 11 can detect the start signal
  digitalWrite(DHpin, HIGH);
  delayMicroseconds(40); //Wait for DHT11 to respond
  pinMode(DHpin, INPUT);
  while(digitalRead(DHpin) == HIGH);
  delayMicroseconds(80); //The DHT11 responds by pulling the bus low for 80us;
 
  if(digitalRead(DHpin) == LOW)
    delayMicroseconds(80); //DHT11 pulled up after the bus 80us to start sending data;
  for(int i = 0; i < 5; i++) //Receiving temperature and humidity data, check bits are not considered;
    dat[i] = read_data();
  pinMode(DHpin, OUTPUT);
  digitalWrite(DHpin, HIGH); //After the completion of a release of data bus, waiting for the host to start the next signal
}
 
void setup()
{
  Serial.begin(9600);
  pinMode(DHpin, OUTPUT);
}
 
void loop()
{
  start_test();
  Serial.print("Humdity = ");
  Serial.print(dat[0], DEC); //Displays the integer bits of humidity;
  Serial.print('.');
  Serial.print(dat[1], DEC); //Displays the decimal places of the humidity;
  Serial.println('%');
  Serial.print("Temperature = ");
  Serial.print(dat[2], DEC); //Displays the integer bits of temperature;
  Serial.print('.');
  Serial.print(dat[3], DEC); //Displays the decimal places of the temperature;
  Serial.println('C');
 
  byte checksum = dat[0] + dat[1] + dat[2] + dat[3];
  if (dat[4] != checksum) 
    Serial.println("-- Checksum Error!");
  else
    Serial.println("-- OK");
 
  delay(1000);
}
projets/atb/sensor_temp_humid/index.1614820481.txt.gz · Dernière modification : de f1sls