KY-015 - Temperatur und Feuchtesensor

KY 015Einführung

Der digitale Temperatur und Feuchtesensor DHT11 verfügt über einen Kalibrierten Digitalausgang für Temperatur und Luftfeuchtigkeit, um eine hohe Zuverlässigkeit und Langzeit-Stabilität zu gewährleisten.

Das „Single Wire serial interface“ erlaubt schnelle und einfache Systemintegration.

Spezifikationen

Versorgungsspannung: 3.3 ~ 5.5V DC
Ausgang: single-bus digital signal
Messbereich: Humidity 20-90% RH, Temperature 0 ~ 50 ℃
Genauigkeit: Humidity + -5% RH, temperature + -2 ℃
Auflösung: Humidity 1% RH, temperature 1 ℃
Langzeit-Stabilität: <± 1% RH / Year
 

Anmerkungen

Um Kondensation im Sensor zu vermeiden, sollte der Sensor bei 10-40 °C und einer Luftfeuchtigkeit von unter 60% gelagert werden

Anschluss

  • Arduino pin 8 –> Pin S module
  • Arduino GND –> Pin - module
  • Arduino +5 –> Pin Middle
 

Voraussetzungen

  • Arduino controller × 1
  • USB data cable × 1
  • DHT 11 module × 1

 Beispiel Code

//KY015 DHT11 Temperature and humidity sensor 
int DHpin = 8;
byte dat [5];
byte read_data () {
  byte data;
  for (int i = 0; i < 8; i ++) {
    if (digitalRead (DHpin) == LOW) {
      while (digitalRead (DHpin) == LOW); // wait for 50us
      delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'
      if (digitalRead (DHpin) == HIGH)
        data |= (1 << (7-i)); // high front and low in the post
      while (digitalRead (DHpin) == HIGH); // data '1 ', wait for the next one receiver
     }
  }
return data;
}
 
void start_test () {
  digitalWrite (DHpin, LOW); // bus down, send start signal
  delay (30); // delay greater than 18ms, so DHT11 start signal can be detected
 
  digitalWrite (DHpin, HIGH);
  delayMicroseconds (40); // Wait for DHT11 response
 
  pinMode (DHpin, INPUT);
  while (digitalRead (DHpin) == HIGH);
  delayMicroseconds (80); // DHT11 response, pulled the bus 80us
  if (digitalRead (DHpin) == LOW);
  delayMicroseconds (80); // DHT11 80us after the bus pulled to start sending data
 
  for (int i = 0; i < 4; i ++) // receive temperature and humidity data, the parity bit is not considered
    dat[i] = read_data ();
 
  pinMode (DHpin, OUTPUT);
  digitalWrite (DHpin, HIGH); // send data once after releasing the bus, wait for the host to open the next Start signal
}
 
void setup () {
  Serial.begin (9600);
  pinMode (DHpin, OUTPUT);
}
 
void loop () {
  start_test ();
  Serial.print ("Current humdity =");
  Serial.print (dat [0], DEC); // display the humidity-bit integer;
  Serial.print ('.');
  Serial.print (dat [1], DEC); // display the humidity decimal places;
  Serial.println ('%');
  Serial.print ("Current temperature =");
  Serial.print (dat [2], DEC); // display the temperature of integer bits;
  Serial.print ('.');
  Serial.print (dat [3], DEC); // display the temperature of decimal places;
  Serial.println ('C');
  delay (700);
}