(一)简介

工作原理

  • 温度测量:内部的负温度系数(NTC)测温元件,其电阻值会随着环境温度的变化而改变。通过测量该电阻值的变化,将环境温度转换成数字信号。
  • 湿度测量:基于电阻式感湿元件,其电阻值会随环境湿度的变化而变化。利用信号调理电路将这种电阻值的变化转换成数字信号输出。

内部结构

主要由一个电阻式感湿元件、一个 NTC 测温元件以及一个高性能 8 位单片机组成。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准,校准系数以程序的形式存在 OTP 内存中,在检测信号处理时调用。

性能参数

  • 测量范围:湿度为 20%~90% RH,温度为 0~50℃。
  • 测量精度:湿度精度为 ±5%,温度精度为 ±2℃。
  • 分辨率:湿度和温度的分辨率均为 1% 和 1℃。
  • 工作电压:工作电压范围为 3.3~5.5V ,在 5V 电源电压下,平均工作电流为 0.5mA 。
  • 响应时间:温度响应时间约为 2 秒,湿度响应时间约为 2-5 秒 。

接口及通信

  • 引脚:总共只有三个引脚,分别是电源引脚、信号输入输出引脚以及接地引脚1。
  • 通信方式:采用单线制串行接口,即单总线通信,通常要求外接一个约 5.1k 欧姆的上拉电阻。

特点及优势

  • 性价比高:价格相对较低,且性能稳定可靠。
  • 使用方便:数字信号输出,可直接与各种微控制器连接,易于接入各种应用系统。
  • 响应快速:能够实时监测环境的温湿度变化。
  • 体积小巧:超小的体积使其在各种应用场景中安装方便。
  • 低功耗:在 5V 电源电压下,平均工作电流仅为 0.5mA,适用于一些对功耗要求较高的场合。



(二)讲解
其实dht11传感器蛮简单的,包括驱动也是很简单,以后会讲解,我们这次先了解如何应用,并搭配oled可以做一个最简单的温湿度计

接线配置
VCC----3V
GND----GND
D----PB11

调用库
  1. #include "OLED.h"
  2. #include "OLED_Data.h"
  3. #include "dht.h"


  我们要初始化两个变量
  uint8_t buffer[5];这个是保存DHT11传来的无符号整数数组,里面会储存,温度湿度的高低位和校验位
再创建一个int或者float,用于储存温度和湿度
  1. uint8_t buffer[5];
  2.         float h, t;

我们需要用到温湿度数据时,只需要调用DHT_ReadData(buffer)函数
数据为0时,为数据正确,数据为1时,为数据出错
数组的0和1位是湿度的高位和低位
数组的2和3位是温度的高位和低位

高位就是整数,低位就是小数位,如果要将整数和小数加一起,小数要除10
  1.   if(DHT_ReadData(buffer) == 0)
  2.                 {
  3.    h = buffer[0] + buffer[1] / 10.0;
  4.    t = buffer[2] + buffer[3] / 10.0;
  5.                         }

显示到OLED屏幕上
中文我已经帮大家取模好了
显示部分我们可以用OLED_ShowFloatNum函数,用来显示小数
由于精确到1位小数,所以取1位小数限制就可以了
  1.   if(DHT_ReadData(buffer) == 0)
  2.                 {
  3.                         h = buffer[0] + buffer[1] / 10.0;
  4.                         t = buffer[2] + buffer[3] / 10.0;
  5.                        

  6.                 OLED_ShowFloatNum(80, 10, t, 2, 1,OLED_8X16);       
  7.                 OLED_ShowFloatNum(80, 40, h, 2,1, OLED_8X16);
  8.                 OLED_ShowChinese(40, 10, "温度");               
  9.                 OLED_ShowChinese(40, 40, "湿度");               
  10.                
  11.                
  12.                                 OLED_Update();       

  13.                        
  14.                 }



(三)程序展示
24ca6c80029a18a6856549231c2afd4.jpg