KY-015 37-1 Temperature and humidity sensor module (DHT11)
Hardware
Connections between the Arduino for this temperature and humidity sensor from the 37in1 sensor kit with the KY-015 DHT11 module- Arduino pin 8 --> Pin S module
- Arduino GND --> Pin - module
- Arduino +5 --> Pin Middle
Program
The temperature and humidity values are displayed on the Serial monitor (To use the Codebender Serial monitor you need to connect it !)Serial monitor
More info
- https://tkkrlab.nl/wiki/Arduino_KY-015_Temperature_and_humidity_sensor_module
- http://linksprite.com/wiki/index.php5?title=Advanced_Sensors_Kit_for_Arduino
// ** Arduino KY-015 Temperature and humidity sensor module **
/*
** HARDWARE
Arduino pin 8 --> Pin S module
Arduino GND --> Pin - module
Arduino +5 --> Pin Middle
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
}
// *** SETUP ***
void setup ()
{
Serial.begin (9600);
pinMode (DHpin, OUTPUT);
}
// *** LOOP ***
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);
}