Lesson 15 Humiture Sensor

Introduction

The digital temperature and humidity sensor DHT11 is a composite sensor that contains a calibrated digital signal output of temperature and humidity. The technology of a dedicated digital modules collection and the temperature and humidity sensing technology are applied to ensure that the product has high reliability and excellent long-term stability.

The sensor includes a resistive sense of wet component and an NTC temperature measurement device, and is connected with a high-performance 8-bit microcontroller.

Schematic Diagram

The schematic diagram:

../_images/image193.png

Experimental Procedures

Step 1: Build the circuit

../_images/image195.png

Step 2: Open the code file.

Step 3: Select the Board and Port.

Step 4: Upload the sketch to the board.

Now, you can see the value of the current humidity and temperature displayed on the LCD.

../_images/image196.jpeg

Code

Code Analysis

Initialize the humiture and LCD1602

#include <dht.h> // Include the head file dht.h

#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 6, 10, 11, 12, 13); // initialize the LCD1602

dht DHT;

#define DHT11_PIN 3 // the humiture sensor attact to pin3

Read the value of humiture

int chk = DHT.read11(DHT11_PIN);

switch (chk)

{

case DHTLIB_OK:

    Serial.println("OK,\t");

    break;

case DHTLIB_ERROR_CHECKSUM:

    Serial.println("Checksum error,\t");

    break;

case DHTLIB_ERROR_TIMEOUT:

    Serial.println("Time out error,\t");

    break;

default:

    Serial.println("Unknown error,\t");

    break;

}

Use the read11() function to read the value of the temperature and humidity sensor. If OK is displayed on the Serial Monitor, the humiture sensor is working properly.

read11(): Return values:

// DHTLIB_OK: Indicate the humiture sensor is work well.

// DHTLIB_ERROR_CHECKSUM

// DHTLIB_ERROR_TIMEOUT

Display on the LCD1602

lcd.setCursor(0, 0);

lcd.print("Tem:");

lcd.print(DHT.temperature,1); // print the temperature on lcd,keep one decimal point

lcd.print(" C");

lcd.setCursor(0, 1);

lcd.print("Hum:");

lcd.print(DHT.humidity,1); // print the humidity on lcd

lcd.print(" %");

delay(200); // wait a while