stm32获取DHT11模块温湿度数据原理解析

stm32获取DHT11模块温湿度数据原理解析

stm32单片机如何从DHT11获取到温湿度的呢?
首先可以通过DHT11手册了解一下DHT11模块,掌握该温湿度模块的通讯过程在这里插入图片描述
简单分析stm32与模块建立通讯的过程:通过高低电平的持续时间和切换来控制模块开始采集和传输数据。
首先了解如何控制该模块,分析时序图:
在这里插入图片描述
假设连接该模块的引脚为A,那么与模块建立通讯需按照一下步骤:
1.A为输出模式并且输出低电平持续大于等于18ms(根据图中主机至少拉低18ms)
2.A输出高电平持续20-40μs(图示主机拉高20-40μs)
3.A改变为输入模式并且接收到DHT响应信号80μs(图中DHT响应信号80μs)
4.A接收到高电平持续80μs,为DHT11发送的响应信号(图中DHT拉高80μs)

与DHT11模块建立通讯完成。


接下来主要解析如何接收DHT11温湿度模块返回的温湿度数据
阅读DTH11手册得知,该模块温湿度数据传输为40bit,高位先出,传输格式如下:

8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验和

那么如何传输这40bit的数据呢?

建立通讯后,模块进入高速模式,并且触发一次数据采集,送出40bit的数据

40bit数据以二进制的形式通过波形传播

该模块会返回两种波形,一种波形代表数字 0 ,另一种代表数字 1 ,一共返回 40 个波形,每个波形代表一位二进制数( 0 或 1 ),每 8 个波形为一组,一共五组,每一组组成一个 8 位的二进制数分别代表湿度整数部分、小数部分 和 温度整数部分、小数部分,最后是校验和

接下来看下返回的两种波形
图一,表示数字 0,图二表示数字 1 ,如下图所示


图一:
在这里插入图片描述


图二:在这里插入图片描述


对原理有一定的了解之后
就可以根据温湿度模块输出的波形进行解码得到温湿度数据
初始化配置代码就不一一列出了

主要编写的是如何对模块返回的波形进行解码ÿ

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DHT11温湿度传感器是一种数字式温湿度传感器,通过单总线数据传输方式,能够测量环境温度和相对湿度。它采用的是一种专有的数字信号输出方式,具有良好的稳定性和可靠性,而且价格相对较为便宜。 基于STM32DHT11温湿度传感器原理如下: 1. 硬件连接 将DHT11的VCC引脚接到STM32的5V电源引脚,GND引脚接到STM32的GND引脚,DATA引脚接到STM32的GPIO引脚上。 2. 数据读取流程 数据读取流程如下: (1)主机向DHT11发送起始信号,主机将数据总线拉低至少18ms,然后将总线拉高20-40us,等待DHT11响应。 (2)DHT11接收到起始信号后,将数据总线拉低80us,然后将总线拉高80us,表示DHT11已准备好发送数据。 (3)DHT11发送数据,每个数据位的持续时间为50us,高电平表示1,低电平表示0。 (4)主机接收到数据后,进行计算并验证,得到温度和湿度值。 3. 数据计算和验证 主机接收到DHT11发送的数据后,需要进行计算和验证,得到真实的温度和湿度值。 (1)先接收40个位的数据,分别是8位湿度整数、8位湿度小数、8位温度整数、8位温度小数和8位校验和。 (2)将湿度整数和湿度小数拼接成16位整数,温度整数和温度小数拼接成16位整数。 (3)校验和的计算方法为,将湿度整数、湿度小数、温度整数、温度小数的低8位相加,得到的结果与校验和比较,如果相等,则数据正确。 (4)根据DHT11的数据格式,将湿度和温度的数据转换成实际值,最终得到真实的温度和湿度值。 以上就是基于STM32DHT11温湿度传感器的原理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值