(一)简介

工作原理

  • 温度测量:内部的负温度系数(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

调用库
#include "OLED.h"
  • #include "OLED_Data.h"
  • #include "dht.h"
  • 复制代码


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

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

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

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

  •                 OLED_ShowFloatNum(80, 10, t, 2, 1,OLED_8X16);       
  •                 OLED_ShowFloatNum(80, 40, h, 2,1, OLED_8X16);
  •                 OLED_ShowChinese(40, 10, "温度");               
  •                 OLED_ShowChinese(40, 40, "湿度");               
  •                
  •                
  •                                 OLED_Update();       

  •                        
  •                 }
  • 复制代码



    (三)程序展示
    24ca6c80029a18a6856549231c2afd4.jpg