본문 바로가기
Computer/Arduino

[KY-015] 디지털 온,습도 모듈

by 생각하는달팽이 2015. 5. 5.




Overview


DHT11 digital temperature and humidity sensor is a calibrated digital signal output temperature and humidity combined sensor, which Application-specific modules capture technology and digital temperature and humidity sensor technology to ensure that products with high reliability and excellent Long-term stability. The product has excellent quality, fast response, anti-interference ability, high cost and other advantages. Single Wire serial interface that allows quick and easy system integration. Ultra-small size, low power consumption, signal transmission distance Up to 20 meters, making it to the class of applications and even the most demanding applications is the best choice. Products for the 4-pin single row Pin package, easy connection.



Specification


Supply voltage: 3.3 ~ 5.5V DC

Output: single-bus digital signal

Measuring range: Humidity 20-90% RH, Temperature 0 ~ 50 ℃

Accuracy: Humidity + -5% RH, temperature + -2 ℃

Resolution: Humidity 1% RH, temperature 1 ℃

Long-term stability: <± 1% RH / Year



Schematic


Arduino pin 8 --> Pin S module

Arduino GND --> Pin - module

Arduino +5 --> Pin Middle



Example 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);
}



Reference

https://tkkrlab.nl/wiki/Arduino_KY-015_Temperature_and_humidity_sensor_module


반응형

'Computer > Arduino' 카테고리의 다른 글

[KY-018] CDS 광센서 모듈  (0) 2015.05.05