(一)简介

一、工作原理

DHT11内部包含一个电容式感湿元件和一个NTC测温元件,这两个元件分别用于测量环境的湿度和温度。传感器通过内部的信号调理电路,将测量的温湿度转换成数字信号输出。其中,湿度测量基于湿度对电容的影响,当环境湿度变化时,传感器的电容值也会随之变化,DHT11利用信号调理电路将这种变化转换成数字信号输出。而温度测量则基于热敏电阻的原理,温度变化时,热敏电阻的电阻值会相应地变化,DHT11测量这种电阻值的变化,并将其转换成数字信号,表示环境的温度。

二、性能参数

  • 测量范围:湿度为5%95%RH(也有说法为20%90%RH),温度为-20+60℃(也有说法为050℃)。
  • 测量精度:湿度为±5%RH,温度为±2℃。
  • 分辨率:湿度为1%RH,温度为0.1℃。
  • 供电电压:3.3~5.5V DC。
  • 功耗:待机时为0.06mA,测量时为1mA。

三、特性与优势

  • 数字信号输出:DHT11通过单一的数据线将温度和湿度数据以数字信号的形式传输给主控制器,数据格式为40位的脉冲信号,其中包含16位的湿度数据、16位的温度数据和8位的校验和。这使得DHT11无需复杂的模拟信号处理,可直接与各种微控制器连接。
  • 高精度与稳定性:DHT11采用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。
  • 超快响应与抗干扰能力强:DHT11具有超快的响应速度,能够快速准确地测量环境温湿度变化,并且抗干扰能力强。


(二)库文件
DHT11库
库文件下载:https://wwmg.lanzouj.com/id6GV2fydzpa
①定义DHT11传感器类型
  1. dht11 DHT11;

②定义传感器引脚
  1. #define   DHT11PIN    2

③实时更新传感器信息
  1. DHT11.read(DHT11PIN);

④获取温湿度信息
将温湿度分别保存到变量内
  1. humi = DHT11.humidity;
  2.   temp = DHT11.temperature;

⑤串口打印温湿度信息
  1. Serial.print("当前温度 (℃): ");
  2.   Serial.println(temp);

  3.   Serial.print("当前湿度 (%): ");
  4.   Serial.println(humi);



(三)程序
①引用DHT11库,并且定义传感器类型和传感器引脚
选择arduino uno板子上的2号引脚
  1. #include <dht11.h>//引入DHT11库

  2. /********************###定义###********************/
  3. dht11 DHT11;//定义传感器类型
  4. #define DHT11PIN 2//定义传感器连接引脚。

②初始化函数
由于我们将数据输出到串口,所以设置串口通信,波特率115200
  1. void setup()
  2. {  
  3.   Serial.begin(115200);  
  4. }

③循环函数
先定义两个变量,一个是温度,一个是湿度
  1. int temp = 0;
  2.   int humi = 0;

更新传感器信息,然后将温度湿度信息保存到变量内
  1. DHT11.read(DHT11PIN); //更新传感器所有信息
  2.   humi = DHT11.humidity;
  3.   temp = DHT11.temperature;

串口打印变量,输出温湿度数据
  1. Serial.print("当前温度 (℃): ");
  2.   Serial.println(temp);

  3.   Serial.print("当前湿度 (%): ");
  4.   Serial.println(humi);


④现象演示
image.png


⑤完整代码
  1. #include <dht11.h>//引入DHT11库

  2. /********************###定义###********************/
  3. dht11 DHT11;//定义传感器类型
  4. #define DHT11PIN 2//定义传感器连接引脚。

  5. void setup()
  6. {  
  7.   Serial.begin(115200);  
  8. }

  9. void loop() {
  10.   int temp = 0;
  11.   int humi = 0;
  12.   DHT11.read(DHT11PIN); //更新传感器所有信息
  13.   
  14.   
  15.   humi = DHT11.humidity;
  16.   temp = DHT11.temperature;
  17.   
  18.   Serial.print("当前温度 (℃): ");
  19.   Serial.println(temp);

  20.   Serial.print("当前湿度 (%): ");
  21.   Serial.println(humi);


  22.   delay(2000);

  23. }