KY-015 Temperature and Humidity Sensor Module

Description

KY-015 Arduino temperature and humidity sensor module, provides a digital serial interface to measure humidity and temperature.

KY-015 Specifications

This module consist of a DHT11 digital humidity and temperature sensor and a 1 kΩ resistor.  The DHT11 uses an internal thermistor and a capacitive humidity sensor to determine environment conditions, an internal chip is responsible for converting readings to a serial digital signal.

Operating Voltage3.3V to 5.5V
Humidity measurement range20% to 90% RH
Humidity measurement accuracy±5% RH
Humidity measurement resolution1% RH
Temperature measurement range0ºC to 50ºC [32ºF to 122ºF]
Temperature measurement accuracy±2ºC
Temperature measurement resolution1ºC
Signal transmission range20m

KY-015 Connection Diagram

Connect the Power line (middle) and ground (-) to +5 and GND respectively. Connect signal (S) to pin 8 on the Arduino.

KY-015Arduino
SPin 8
middle+5V
-GND
Temperature and humidity sensor KY-022 Arduino connection diagramclick to enlarge

KY-015 Arduino Code

The following sketch uses pin 8 on the Arduino to serially send and receive data from the KY-015 sensor. Serial communication is archived by sending specific high/low signals to the sensor and waiting for a response. Temperature and humidity data is read bit by bit and returned as an array of bytes.

int DHpin = 8; // input/output pin
byte dat[5];   

byte read_data()
{
	byte data;
	for(int i = 0; i < 8; i++)
	{
		if(digitalRead(DHpin) == LOW)
		{
			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)
				data |= (1<<(7 - i)); //High in the former, low in the post;
			while(digitalRead(DHpin) == HIGH); //Data '1', waiting for the next bit of reception;
		}
	}
	return data;
}

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 < 4; 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("Current 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("Current 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');
	delay(700);
}

Leave a Reply

2 Comments on "KY-015 Temperature and Humidity Sensor Module"

avatar
Martin
Martin

Unfortunately I keep getting the message “undefined” after I solved the captcha here:
https://arduinomodules.info/download/ky-015-temperature-humidity-sensor-module-zip-file/

I even let a friend try to ensure it´s not my device or my network causing the issue.
Can you check on that? I get it with other modules as well 🙁
Thanks!

Martin
Martin

Thank you. It worked now 🙂