DHT11是单片机的单总线数字温湿度传感器IO读取数字温度和湿度,改变输入输出方向。相对湿度测量范围为20-90%RH,相对湿度测量精度为正负%RH,温度测量范围0-5℃,温度测量精度为正负2℃,测量精度相对较低。
常见的市场DHT11模块是在DHT11芯片基础上增加了4.7K上拉电阻,如下图所示,只需三条线即可和解STM32进行通信,DATA用脚读取温湿度。

DHT11温湿度传感器封装信息及管脚:
注:使用STM32和DHT11通信时VDD采用3.3V
STM32读取DHT11温湿度传感器首先DATA脚设为输出并发送开始信号,开始信号为DATA脚输出18ms然后输出20-40个以上的低电平us高电平,STM32开始信号输出后DATA脚设置为输入和等待DHT11响应。DHT11接收到STM32发送开始信号后,先发送80us低电平再发送80us高电平,然后开始传输数据。
DHT11每一bit数据都是以50us当最后一个开始时,高电平的长度决定了数据位是0还是1bit数据传输后,DHT11拉低总线50us,然后总线从上拉电阻拉高到空闲状态。
数字0表示方法:
数字1表示方法:
使用STM读取一字节示例代码:
DHT11完整的数据传输为40bit,数据格式为8bit湿度数据 8bit湿度小数据 8bit温度整数据 8bit温度小数据 8bit验证和。验证和降低前四个字节之和bit。
使用STM32读取DHT11温湿度示例代码:
注:验证温湿度结果OK使用前。