一:DHT11温湿度介绍
DHT11 是一款集温度与湿度测量于一体的数字温湿度复合传感器,内部由电容式湿度感应元件和 NTC 热敏电阻测温元件组成,通过单总线协议将测量结果以数字信号输出,可直接与 MCU 的普通 GPIO 相连,无需外接 ADC 或复杂的调理电路,是嵌入式开发与物联网项目中最常用的低成本环境传感器之一。
二:主要特点
数字单总线输出:仅需一根数据线即可完成双向通信,接线简单,占用 MCU 引脚少,配合时序程序即可读取数据。
温湿度一体测量:一颗传感器同时输出温度与湿度两路数据,无需分别部署两种器件。
测量范围:温度 0~50℃,湿度 20%~90%RH,可覆盖日常室内与一般环境监测需求。
测量精度:温度 ±2℃,湿度 ±5%RH,分辨率均为 1(整数输出),适合对精度要求不高的常规场景。
低功耗:供电电压 3.3V~5.5V,测量时工作电流约 0.5mA,待机电流约 100µA,适合电池供电的便携设备。
采样周期约 1~2 秒:单次读取间隔建议不小于 1 秒,数据更新频率较低,适合缓变环境参数的采集。
数据格式规范:一次传输 40 位数据,依次为湿度整数、湿度小数、温度整数、温度小数和校验位,末尾 8 位用于校验,便于程序判错。
体积小巧、成本低:常见 4 引脚封装(VCC、DATA、GND、NC),也有带滤波电容和上拉电阻的模块版本,易于集成到面包板或 PCB 上。
三:软件代码
3.1 软件代码展示如下所示:
//复位DHT11
void DHT11_Rst(void)
{
PB01_DIR_OUTPUT(); //PB12配置成输出
PB01_SETLOW(); //拉低DQ
delay1ms(20);
PB01_SETHIGH(); //DQ=1
delay10us(3);
}
//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
uint8_t DHT11_Check(void)
{
uint8_t retry=0;
PB01_DIR_INPUT(); //PB12配置成输入
while (PB01_GETVALUE()&&retry<10)//DHT11会拉低40~80us
{
retry++;
delay10us(1);
};
if(retry>=10)return 1;
else retry=0;
while (!PB01_GETVALUE()&&retry<10)//DHT11拉低后会再次拉高40~80us
{
retry++;
delay10us(1);
};
if(retry>=10)return 1;
return 0;
}
//从DHT11读取一个位
//返回值:1/0
uint8_t DHT11_Read_Bit(void)
{
uint8_t retry=0;
while(PB01_GETVALUE()&&retry<10)//等待变为低电平
{
retry++;
delay10us(1);
}
retry=0;
while(!PB01_GETVALUE()&&retry<10)//等待变高电平
{
retry++;
delay10us(1);
}
delay10us(4);//等待40us
if(PB01_GETVALUE())return 1;
else return 0;
}
//从DHT11读取一个字节
//返回值:读到的数据
uint8_t DHT11_Read_Byte(void)
{
uint8_t i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Read_Bit();
}
return dat;
}
//从DHT11读取一次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
uint8_t DHT11_Read_Data(float *temp,uint8_t *humi)
{
// uint8_t buf[5];
char buf[5];
uint8_t i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)//读取40位数据
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}else return 1;
return 0;
}3.2 实物展示如下所示:
四:应用场景
智能家居:用于空调、加湿器、除湿机、智能温控器等设备的自动控制,根据室内温湿度自动调节运行状态。
农业与养殖:在温室大棚、菌菇房、畜禽养殖场中监测环境温湿度,为通风、灌溉和控温提供依据。
仓储与机房:监测仓库、档案室、机房、配电房的温湿度,防止货物受潮或设备过热,配合告警实现远程值守。
工业与冷链:用于车间环境监测、冷链运输与存储环节的温湿度记录,保障产品品质。
气象与环境监测:搭建小型气象站、环境监测终端,采集户外或室内的温湿度数据并上传云端。
教育与 DIY 创客:作为单片机入门、课程设计、电子竞赛和创客项目的经典教学元件,常用于学习单总线协议与传感器驱动开发,例如配合 CW32F030 等 MCU 完成数据采集与显示。
医疗与健康:用于药品存储、实验室环境的温湿度监控,辅助满足相应的存储条件要求。
五:结语
DHT11 以极低的成本和简单的接口实现了温湿度的一体化测量,虽然在精度、响应速度和采样频率上不及更高阶的数字传感器,但在大多数对精度要求不高的民用与教学场景中,它仍然是一个稳定、易用、生态成熟的入门级选择。理解其单总线时序和 40 位数据格式,也是掌握更多单总线类传感器驱动开发的良好起点。
我要赚赏金
