10.DHT11温湿度传感器详解:原理、时序与程序设计

传感器笔记(1)——DHT11温湿度传感器 DHT11是一款湿温度一体化的数字传感器. 阅读详情

摘要:本文围绕 DHT11 数字温湿度传感器展开,系统介绍其内部结构、工作原理与典型应用场景,并结合数据手册梳理单总线通信协议、40bit 数据格式与校验规则。文章重点对起始信号、响应握手及数据接收等关键时序进行图解分析,随后基于 STM32 HAL 库给出完整的驱动程序设计,涵盖 GPIO 输入输出初始化、起始信号发送、响应检测、逐位与逐字节读取、校验和验证及上电初始化等函数,并补充延时初始化与上电稳定时间的注意事项,帮助读者从原理到代码完整掌握 DHT11 的驱动开发。

1、DHT11简介

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接,因此具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准,校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中会调用这些校准系数。单线制串行接口使系统集成变得简易快捷,超小的体积、极低的功耗以及可达20米以上的信号传输距离,使其成为各类应用场合的最佳选择。产品为4针单排引脚封装,连接方便,特殊封装形式可根据用户需求提供(以上内容来自数据手册)。

2、原理分析

由简介可知,DHT11内部包含一个电阻式感湿元件、一个NTC测温元件和一个高性能8位单片机。其工作原理是:单片机通过ADC采集感湿电阻和NTC测温元件两端的电压,再将处理后的数据按照一定的协议与其他设备进行通信。

感湿电阻和NTC(温感电阻)的阻值会随温湿度变化而变化,因此采集到的电压值也会随之改变(概念电路图如下)。

封装:

3、应用

暖通空调、测试及检测设备、汽车、数据记录器、消费品、自动控制、气象站、家电、湿度调节器、医疗、除湿器。

4、DHT11数据手册知识点概述

DATA引脚用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间约4ms。数据分为小数部分和整数部分,当前小数部分用于以后扩展,现读出为零。一次完整的数据传输为40bit,高位先出。数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。数据传送正确时,校验和数据等于前四个字节之和。

从上述描述可以归纳出 3 个要点:

  • 采用单总线方式进行数据传输(一根线完成数据的收发);
  • 一次完整的数据为 40bit(需要连续读取 40 次);
  • 明确了数据格式(可确定温湿度数据在哪些位表示)。

5、时序图分析

1)总的通信过程

首先对总的通信过程进行分析:单片机作为主机,先将数据总线由高电平拉低,持续一段时间后再拉高总线。随后总线由输出变为输入,接收DHT11发送的低电平信号。该低电平持续一段时间后,DHT11再次拉高总线,之后开始数据传输。可以看到,数据0和1都是通过高电平实现的,通过高电平持续的时间来区分数据1和数据0。此外,每个数据传输之间有一段低电平作为间隔。

2)起始和响应时序图分析(握手)

后面的时序图都是对总通信过程中各部分的详细展开。根据上图,单片机先将总线电平由高拉低,持续至少18ms,然后再拉高20-40us,这个过程为起始信号。随后总线状态由输出变为输入,如果DHT11正常接收到起始信号,会将总线拉低80us后再拉高80us作为回应。这段就是握手过程:单片机告知DHT11准备接收数据,DHT11回应已准备就绪。之后DHT11便开始发送温湿度数据。

3)数据接收时序图分析

根据数据接收时序图,每次数据发送前会有一段50us的低电平信号,之后进行1bit的数据传输。若传输数据0,高电平持续26us-28us;若传输数据1,高电平持续70us。

6、程序设计

1)GPIO 输入与输出初始化

由于需要对同一个 GPIO 口实现收发两种功能,首先编写输入初始化和输出初始化两个函数。

/**
 * @brief  将DHT11数据引脚配置为输入模式
 * @note   对应时序图"握手阶段":主机发送起始信号后需释放总线,
 *         将IO切换为输入以接收DHT11的响应低电平(80us)。
 * @param  无
 * @retval 无
 */
static void DHT11_IO_IN(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = DHT11_GPIO_PIN;      // DHT11与单片机连接的GPIO引脚
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;    // 输入模式
GPIO_InitStruct.Pull = GPIO_PULLUP;        // 上拉输入(总线空闲时为高电平)
HAL_GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStruct);
}
/**
@brief  将DHT11数据引脚配置为推挽输出模式
@note   对应时序图"起始信号阶段":主机需主动拉低总线至少18ms,
    因此必须先切换为输出模式才能控制总线电平。
@param  无
@retval 无
*/
static void DHT11_IO_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = DHT11_GPIO_PIN;          // DHT11与单片机连接的GPIO引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;    // 推挽输出
GPIO_InitStruct.Pull = GPIO_PULLUP;            // 上拉(输出模式下无实际影响)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  // 高速输出,保证电平跳变沿陡峭
HAL_GPIO_Init(DHT11_GPIO_PORT, &GPIO_InitStruct);
}

2)接下来按照通信时序图逐步编写函数。

a、单片机发送起始信号函数

/**
 * @brief  主机发送起始信号(对应时序图"起始信号阶段")
 * @note   时序要求:
 *         1. 总线默认高电平(上拉),主机拉低至少18ms(代码延时20ms);
 *         2. 再拉高20~40us(代码延时30us),表示起始信号结束;
 *         3. 之后总线交由DHT11控制,等待其响应。
 * @param  无
 * @retval 无
 */
void DHT11_Rst(void)
{
    DHT11_IO_OUT();  // 切换为输出模式,准备控制总线电平
// —— 起始信号第1步:拉低总线(对应时序图红色部分,低电平≥18ms)——
HAL_GPIO_WritePin(DHT11_GPIO_PORT, DHT11_GPIO_PIN, GPIO_PIN_RESET);  // 总线由高变低
HAL_Delay(20);   // 延时20ms,满足"至少18ms"的时序要求
// —— 起始信号第2步:拉高总线(对应时序图黄色部分,高电平20~40us)——
HAL_GPIO_WritePin(DHT11_GPIO_PORT, DHT11_GPIO_PIN, GPIO_PIN_SET);    // 总线拉高
delay_us(30);    // 延时30us,处于20~40us允许范围内
}

起始信号函数中,GPIO配置为输出模式。由于DHT11数据总线默认连接了上拉电阻,总线默认是高电平,因此直接输出低电平即可实现由高变低。低电平持续时间最少18ms,这里延时20ms以保证持续时间足够(对应上图红色部分)。之后拉高电平20到40us,通过输出高电平并延时30us实现(对应上图黄色部分)。

b、检测DHT11响应函数

/**
 * @brief  读取DHT11数据引脚电平的宏定义
 * @note   等价于 HAL_GPIO_ReadPin(DHT11_GPIO_PORT, DHT11_GPIO_PIN)
 */
#define DHT11_DQ_IN   HAL_GPIO_ReadPin(DHT11_GPIO_PORT, DHT11_GPIO_PIN)
/**
@brief  检测DHT11是否响应(对应时序图"响应阶段/握手过程")
@note   时序要求:
    1. DHT11收到起始信号后,会先拉低总线80us(响应低电平);
    2. 随后再拉高80us(响应高电平),表示准备就绪。
@param  无
@retval 0 - 检测到DHT11响应(存在);1 - 未检测到DHT11(超时/不存在)
*/
uint8_t DHT11_Check(void)
{
uint8_t retry = 0;
DHT11_IO_IN();  // 切换为输入模式,准备接收DHT11的响应信号
// —— 等待DHT11拉低总线(对应时序图红色部分:响应低电平80us)——
// 若总线一直为高且超时(>100us),说明DHT11未拉低,判定无响应
while (DHT11_DQ_IN && retry < 100)
{
retry++;
delay_us(1);
}
if (retry >= 100) return 1;  // 超时未检测到低电平,返回"不存在"
// —— 等待DHT11再次拉高总线(对应时序图黄色部分:响应高电平80us)——
// 若总线一直为低且超时(>100us),说明DHT11未拉高,判定无响应
retry = 0;
while (!DHT11_DQ_IN && retry < 100)
{
retry++;
delay_us(1);
}
if (retry >= 100) return 1;  // 超时未检测到高电平,返回"不存在"
return 0;  // 成功检测到完整的响应握手,返回"存在"
}

此函数用于读取DHT11的响应信号。首先将IO配置为输入模式。DHT11_DQ_IN是读取IO电平的宏定义,等价于HAL_GPIO_ReadPin(DHT11_GPIO_PORT, DHT11_GPIO_PIN)。第一个while循环中,若IO电平为高且retry小于100,则延时1us并递增retry。若超过100us电平仍为高,则返回1,表示未检测到DHT11——因为根据时序图,DHT11正常响应时会拉低总线80us(上图红色部分)。第二个while循环判断上图黄色部分:将读取值取反,即检测总线是否被拉高。若超过100us仍未检测到高电平响应,同样返回1;正常检测到响应则返回0。

c、读取数据

读取数据需要编写3个函数:读取1位、读取8位(1个字节)、读取40位(DHT11发送的一次完整数据)。

/**
 * @brief  从DHT11读取1位数据(对应时序图"数据接收阶段")
 * @note   时序要求:
 *         1. 每位数据前有50us低电平作为起始标志;
 *         2. 随后高电平持续26~28us表示数据"0",持续70us表示数据"1";
 *         3. 采样点选在高电平开始后40us处:此时数据0已结束(低电平),
 *            数据1仍在持续(高电平),据此区分0和1。
 * @param  无
 * @retval 1 - 读到数据"1";0 - 读到数据"0"
 */
uint8_t DHT11_Read_Bit(void)
{
    uint8_t retry = 0;
// —— 等待50us低电平结束(对应时序图红色部分:位起始低电平)——
// 总线被DHT11拉低,等待其释放
while (DHT11_DQ_IN &amp;&amp; retry &lt; 100)
{
    retry++;
    delay_us(1);
}
// —— 等待高电平到来(数据位开始传输)——
retry = 0;
while (!DHT11_DQ_IN &amp;&amp; retry &lt; 100)
{
retry++;
delay_us(1);
}
// —— 在高电平持续40us处采样(对应时序图黄色部分:数据位判断点)——
// 数据0高电平仅26~28us,此时已结束(总线为低);
// 数据1高电平持续70us,此时仍在持续(总线为高)
delay_us(40);
if (DHT11_DQ_IN) return 1;  // 采样点仍为高电平 → 数据"1"
else return 0;              // 采样点已为低电平 → 数据"0"
}

读取1位数据时,首先通过while循环等待50us的低电平结束(上图红色部分),再等待高电平到来。高电平即我们要接收的数据0或1。检测到高电平后,延时40us——该时长远大于数据0的高电平持续时间28us(图中黄色部分),又远小于数据1的70us。延时后判断IO电平:若仍为高电平,说明是数据1,返回1;若已变为低电平,则为数据0,返回0。

/**
 * @brief  从DHT11读取1个字节(8位数据)
 * @note   高位先出:每次将已读数据左移1位,再并入新读取的1位。
 *         连续调用8次DHT11_Read_Bit()完成一个字节的接收。
 * @param  无
 * @retval 读到的8位数据(uint8_t)
 */
uint8_t DHT11_Read_Byte(void)
{
    uint8_t i, dat;
    dat = 0;
    for (i = 0; i < 8; i++)   // 循环8次,逐位读取
    {
        dat <<= 1;            // 左移1位,为新的数据位腾出最低位
        dat |= DHT11_Read_Bit();  // 读取1位并拼接到最低位
    }
    return dat;               // 返回完整字节
}

读取1个字节的实现较为简单,直接调用读取1位的函数并循环8次即可。

/**
 * @brief  从DHT11读取一次完整数据(40bit = 5字节)
 * @note   数据格式:湿度整数 + 湿度小数 + 温度整数 + 温度小数 + 校验和
 *         校验规则:前4字节之和 == 第5字节(校验和)
 * @param  humiH - 输出:湿度整数部分指针
 * @param  humiL - 输出:湿度小数部分指针
 * @param  tempH - 输出:温度整数部分指针
 * @param  tempL - 输出:温度小数部分指针
 * @retval HAL_OK  - 读取成功且校验通过
 *         HAL_ERROR - DHT11未响应或读取失败
 */
uint8_t DHT11_Read_Data(uint8_t *humiH, uint8_t *humiL, uint8_t *tempH, uint8_t *tempL)
{
    uint8_t buf[5];   // 缓存5个字节:4字节数据 + 1字节校验和
    uint8_t i;
DHT11_Rst();      // 发送起始信号,启动一次通信
// —— 握手检测:确认DHT11已响应 ——
if (DHT11_Check() == 0)   // 返回0表示DHT11正常响应
{
// —— 数据接收阶段:连续读取5个字节(40bit)——
for (i = 0; i &lt; 5; i++)
{
buf[i] = DHT11_Read_Byte();  // 逐字节读取
}
// —— 校验和验证:前4字节之和应等于第5字节 ——
if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])
{
    // 校验通过,将温湿度数据写入输出指针
    *humiH = buf[0];   // 湿度整数部分
    *humiL = buf[1];   // 湿度小数部分
    *tempH = buf[2];   // 温度整数部分
    *tempL = buf[3];   // 温度小数部分
}
// 校验失败时不更新输出值(保持原值)
}
else
{
return HAL_ERROR;  // DHT11未响应起始信号,返回错误
}
return HAL_OK;  // 读取成功
}

读取一次完整数据(40bit)时,首先判断DHT11_Check()的返回值。若返回1,说明DHT11未响应起始信号,直接返回HAL_ERROR;若返回0,说明DHT11正确响应,进入IF分支:先循环5次读出完整数据,再验证校验和——若前4个字节之和等于第5个字节(校验和),则数据正确,将温湿度数据写入对应指针变量并返回HAL_OK。

d、上电初始化

/**
 * @brief  初始化DHT11的IO口并检测DHT11是否存在
 * @note   上电流程:
 *         1. 将IO配置为推挽输出并输出高电平,确保总线空闲时为高;
 *         2. 调用DHT11_Rst()发送起始信号;
 *         3. 调用DHT11_Check()等待并检测DHT11的响应握手。
 * @param  无
 * @retval 0 - DHT11存在且响应正常;1 - DHT11不存在或未响应
 */
uint8_t FS_DHT11_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
// —— 配置GPIO为推挽输出模式 ——
GPIO_InitStruct.Pin = DHT11_GPIO_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   // 推挽输出
GPIO_InitStruct.Pull = GPIO_PULLUP;           // 上拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速
HAL_GPIO_Init(DHT11_GPIO_PORT, &amp;GPIO_InitStruct);
// —— 输出高电平:确保总线空闲状态为高(对应时序图起始前状态)——
HAL_GPIO_WritePin(DHT11_GPIO_PORT, DHT11_GPIO_PIN, GPIO_PIN_SET);
// —— 发送起始信号,启动与DHT11的通信握手 ——
DHT11_Rst();
// —— 检测DHT11响应:返回0表示存在,返回1表示不存在 ——
return DHT11_Check();
}

上电初始化函数先将IO配置为推挽输出模式并输出高电平,从软件层面确保DHT11上电后总线默认为高电平。随后调用DHT11_Rst()发送起始信号,最后通过return DHT11_Check()等待并检测DHT11的响应:正确响应返回0,未响应返回1。

至此,DHT11的程序编写已全部完成。使用时,上电初始化调用FS_DHT11_Init()函数,需要读取温湿度数据时调用DHT11_Read_Data()函数即可。

7、工程实现步骤与源码

static uint32_t fac_us = 0; //us延时倍乘数
void delay_init(uint8_t SYSCLK)
{
  fac_us = SYSCLK;
}
void delay_us(uint32_t nus)//100  6800
{
  uint32_t ticks;
  uint32_t told, tnow, tcnt = 0;
  uint32_t reload = SysTick->LOAD; //LOAD的值
  ticks = nus * fac_us;            //需要的节拍数
  told = SysTick->VAL;             // 24  刚进入时的计数器值
  while (1)
  {
    tnow = SysTick->VAL;//22  20  0
    if (tnow != told)
    {
      if (tnow < told)
        tcnt += told - tnow; //这里注意一下SYSTICK是一个递减的计数器就可以了.
      else
        tcnt += reload - tnow + told;
      told = tnow;
      if (tcnt >= ticks)
        break; //时间超过/等于要延迟的时间,则退出.
    }
  };
}
void delay_ms(uint16_t nms)
{
  uint32_t i;
  for (i = 0; i < nms; i++)
    delay_us(1000);
}

delay_init(16); —— 延时函数的初始化

这是延时功能的初始化函数(常见于STM32等单片机的HAL库或自定义驱动中),参数16对应系统时钟频率(16MHz)。其作用是:根据系统时钟配置内部定时器/计数器的参数,确保后续调用HAL_Delay等延时函数时能产生准确的时间延迟。

若缺少此步骤,HAL_Delay可能因时钟配置错误导致延时偏差,直接影响DHT11通信时序的准确性。

HAL_Delay(2500); —— 满足DHT11上电稳定时间

DHT11数据手册明确要求:上电后需等待至少1秒(1000ms)才能开始通信,这段时间用于传感器内部电路稳定和校准。

代码中HAL_Delay(2500)延时2500毫秒(2.5秒),目的是:

  • 给DHT11足够的“上电稳定时间”,确保传感器内部完成初始化、进入可通信状态;
  • 避免因传感器未稳定就发起通信,导致读取失败或数据错误。

总结

这两行代码的核心作用是“为DHT11通信做前置准备”:

  • delay_init(16)保障延时功能的精度;
  • HAL_Delay(2500)满足DHT11的上电稳定时序要求。

只有先完成这些准备,后续才能按照DHT11的通信协议(起始信号、数据读取等)正确获取温湿度数据。

主函数代码:

if(ReadData(&HumiH,&HumiL,&TempH,&TempL) == HAL_OK)
		{
			printf("Humi:%d.%d  Temp:%d.%d C\n\r",HumiH,HumiL,TempH,TempL);
		}
		else
		{
			printf("DHT11_ERR\n\r");
		}
HAL_Delay(2000);

8、参考资料

为便于读者进一步查阅与深入学习,下面列出本文撰写过程中参考的主要资料。这些资料分别对应 DHT11 传感器本身、STM32 HAL 库开发环境以及相关应用实践,可帮助理解本文涉及的通信协议、时序分析与驱动代码。

  • DHT11 数据手册(DHT11 Humidity & Temperature Sensor Datasheet):由 Aosong(奥松)电子提供,是理解 DHT11 内部结构、单总线通信协议、40bit 数据格式、校验规则以及上电稳定时间等关键参数的第一手权威来源。本文第 4 节「DHT11数据手册知识点概述」和第 5 节「时序图分析」中的时序要求均以此手册为准。
  • STM32 HAL 库参考手册(STM32F1xx HAL and Low-layer Driver User Manual,UM1850):由 STMicroelectronics 提供,系统介绍了 HAL 库中 GPIO 初始化、读写引脚电平(HAL_GPIO_Init、HAL_GPIO_ReadPin、HAL_GPIO_WritePin)等 API 的用法与参数含义。本文第 6 节「程序设计」中的 GPIO 输入输出初始化、起始信号发送与响应检测代码均基于该库编写。
  • STM32 参考手册(STM32F10xxx Reference Manual,RM0008):由 STMicroelectronics 提供,详细说明了 SysTick 定时器的工作原理与寄存器配置。本文第 7 节「工程实现步骤与源码」中 delay_init、delay_us 等延时函数正是基于 SysTick 实现,查阅该手册有助于理解延时精度的来源。
  • 应用笔记:DHT11 与 STM32 单总线通信实践(AN 类应用笔记,常见于各开发板厂商与社区):这类资料通常结合具体开发板给出完整的工程示例与调试经验,对理解本文第 7 节「工程实现步骤与源码」中的主函数调用流程、上电稳定时间处理以及实际调试中可能遇到的时序问题具有直接参考价值。
[DHT11]温湿度传感器全面分析 DHT11是一种数字温湿度传感器,它能够测量环境中的温度和湿度。它采用了一种特殊的传感器技术,基于湿度敏感元件和温度敏感元件的变化来测量温湿度。DHT11的工作原理是基于湿度敏感元件和温度敏感元件的电阻值的变化。湿度敏感元件是一种聚合物材料,当湿度增加时,它会吸收水分并膨胀,导致电阻值增加。温度敏感元件是一种热敏电阻,当温度升高时,它的电阻值会减小。DHT11通过内部的微控制器来读取湿度敏感元件和温度敏感元件的电阻值,并将其转换为数字信号。 阅读详情

相关推荐

【STM32Cube】学习笔记(六):DHT11温湿度传感器

本篇文章用STM32CubeMX和STM32CubeIDE软件编程,主控芯片为STM32F103C8T6驱动DHT11温湿度传感器,根据时序编写温湿度传感器的驱动代码,将传感器检测到的温度和湿度通过串口发送到窗口调试助手。由于使用完整的DHT11模块,所以电路结构比较简单。通过本文可以学会DHT11数字温湿度传感器的原理以及时序结构,并且根据其时序编写驱动程序。1、芯片:2、驱动设备:DHT11温湿度传感器3、配置软件:4、IDE:通过本篇文章您将学到:1、DHT11温湿度传感器的工作原理。

weixin_52988524的博客 3万+

STM32学习之温湿度检测——DHT11

一准备材料 1、参考资料 2、器件准备 二、原理说明 三、实物连接 四、代码实现

qq_43441284的博客 1万+

Arduino Uno 实验13——DHT11温湿度传感器

DHT11温湿度传感器模块简介 DHT11概述   数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。   传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。  

weixin_42645653的博客 1万+

【mcuclub】温湿度传感器DHT11

DHT11

weixin_61121477的博客 1万+

DHT11温湿度传感器原理剖析

视频讲解 =================视频教程================== DHT11功能 对温湿度数据进行采集。 DHT11封装尺寸图 在进行PCB封装设计的时候会用到。 引脚说明 1、VDD  供电 3.3~5.5V DC  2、DATA 串行数据,单总线  3、NC  空脚  4、GND  接地,电源负 温湿度采集范围 湿度采集范围5%~95%,...

电子芯的专栏 2万+

DHT11温湿度传感器(zigbee)

DHT11温湿度传感器(zigbee)DHT11简介电路连接时序图详解数据格式 DHT11简介 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数 字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一 个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。 电路连接 VDD 供电 3.5-5....

qq_39206199的博客 8011

DHT11详细介绍(内含51和STM32代码)

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

安赫' 的博客 24万+

dht11温湿度传感器_DHT11温湿度传感器的使用

来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)作者:韦东山本文字数:2379,阅读时长:4分钟这节课开始讲解DH11温湿度传感器的使用,首先查看芯片手册,里面的典型应用电路如下:MCU通过一条数据线与DH11连接,MCU通过这条线发命令给DH11,DH11再通过这条线把数据发送给MCU。因此,温湿度模块的核心就是 MCU发给DH11的命令格式和DH11返...

weixin_36267013的博客 3333

详解DHT11温湿度传感器的原理及驱动程序

一.简介 DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。 DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻...

会飞的鱼的博客 11万+

DHT11-原理图.pdf

温湿度传感器的原理图

基于RK3588与FPGA的SDI视频处理系统:从MIPI CSI-2输入到DSI输出的全链路解析

本文深入解析了基于RK3588与FPGA的SDI视频处理系统全链路。系统利用FPGA作为高速接口转换与流管理核心,将SDI信号转换为MIPI CSI-2数据流送入RK3588进行智能图像处理与AI分析,处理结果再通过MIPI DSI回传,最终由FPGA控制编码为SDI输出,实现了专业视频接口与强大算力的高效协同。

s1t2u3的博客 673

DHT11温湿度传感器详解(STM32)

DHT11是一款含有已校准数字信号输出的温湿度复合传感器,采用了自主研发的集成式数字温湿度元件,应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。DHT11传感器内包含一个温湿度测量元件和一个高性能MCU。以下是DHT11温湿度传感器的参数:供电电压工作范围温度-20~+60℃量程范围湿度5~95%RH温度精度±2℃湿度精度±5%RH重复性温度:±1℃;湿度:±1%RH迟滞温度±0.3℃迟滞湿度±0.3%RH。

qq_44016222的博客 4万+

变压器励磁电感、励磁电流、漏感、漏感折算

励磁、漏感知识整理

HW-BASE的博客 1万+

传感器驱动系列之DHT11温湿度传感器

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点,如图1所示。图1 DHT11温湿度传感器实物图。

JJ_KING123的博客 2万+

NX二次开发入门必看:手把手教你搭建开发环境

想顺利开展nx二次开发,第一步就是配置好开发环境。本文详细讲解从安装准备到环境调试的完整流程,结合实际操作细节,帮你避开常见坑点,快速进入nx二次开发的实战阶段。

weixin_31569663的博客 1459

基于车辆运动学的规划算法 - Hybrid A*/ State Lattice Planning (前置知识:自行车模型、Dubins、Reeds Shepp、多项式曲线、螺旋曲线)

本文将按顺序讲解基于车辆运动学的规划算法,以及需要的前置知识:自行车模型、Dubins和Reeds Shepp曲线、多项式曲线和螺旋曲线

BigDavid123的博客 4860

温湿度传感器---DHT11

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,传感器内部包括一个8位单片机控制一个电阻式感湿元件和一个NTC测温元件类单总线协议传输数据,使用简单便捷测量温度范围在0-50℃,分辨率为1℃,误差在±2℃。湿度的测量范围位20%-95%RH,分辨率为1%RH,误差在±5%RH工作电压:3.3V-5.5V。

m0_51319492的博客 1万+

Python 爬虫实战:医学临床指南爬取(含 PDF 解析与结构化存储)

在当今数字化时代,医学临床指南作为医生进行科学诊疗的重要参考资料,包含大量经过临床验证的诊疗路径和建议。这些指南通常发布在权威医学网站上,数量庞大且更新频繁。如何自动化地抓取并存储这些指南,成为医疗数据分析、医学研究以及医疗 AI 模型训练等工作的关键第一步。本文将系统讲解如何利用 Python 爬虫技术从权威医学网站爬取临床指南内容,并实现 PDF 解析与结构化存储。

u014481728的博客 451

DHT11温湿度传感器

超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条后,传感器会缓慢地向校准状态恢复,加速恢复进程的方法是:置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。在50-60℃和< 10%RH的湿度条件下保持2 小时(烘干);随后在20-30℃和>70%RH的湿度条件下保持5小时以上。在非正常工作条件下长时间使用会加速产品的老化过程。:DHT11模块的串行接口是单线双向的,一次通讯时间在4ms左右。

lzh201864031的博客 1万+

【YOLOv8/v9/v10 实战 01】YOLOv8/v9/v10全系列实战对决:性能矩阵、架构拆解与2026部署指南

2026年YOLO生态已进入“战国时代”,Ultralytics YOLOv8/11/26、阿里YOLO12、清华YOLOv10、微软YOLOv9四大路线并行发展。本文基于官方文档、学术论文及实测数据,系统剖析三大核心版本(YOLOv8/v9/v10)的架构演进逻辑,构建覆盖参数量、mAP、FPS、FLOPs的完整性能矩阵。通过8组工业场景实测、全流程代码实现(训练-导出-部署)、6类硬件适配方案,解决新手选型难、进阶者优化无门、工业开发者部署低效的痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 536

黑猫带你学eMMC协议第2篇:eMMC部分相关名词释义

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 本文背景 本文关键词不包括emmc jedec5.1协议第3章节:《Terms and definitions》内容。关于emmc协议层的关键词,直接查阅spec相关章节即可,清晰明了,此处没必要再列出。 本文为本人工作学习中常听到或常用到关乎于emmc/flash的一些关键词合集,没有固定分类,不需要强行记忆,供查询使用。 1.

黑猫奥利奥的博客 7449

dht11温湿度传感器_详解DHT11温湿度传感器的原理及驱动程序

一.简介DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最...

weixin_36170656的博客 1万+

华为OD机试双机位C卷-敌情监控 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【敌情监控】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 敌情监控。

qq_45776114的博客 938

零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码

介绍了DHT11温湿度传感器模块的原理,参数等,介绍了用STM32F103C8T6如何驱动这个温湿度模块进行温湿度数据采集

光子物联科技主要介绍STM32单片机,GD32单片机以及各种传感器模块原理以及驱动,适合学生,工程师等学习单片机嵌入式开发、传感器驱动、通信协议等。 6509

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[教程]一文搞懂STM32使用DHT11采集温湿度

DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 +8bit校验和 数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据。

小超电子笔记 9070

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 9.STM32 中断系统详解:从基础概念到 EXTI 实战
下一篇: 11.SysTick 详解:从原理到实战,掌握 Cortex-M 系统嘀嗒定时器
硅基造物主
博客等级 码龄4年 17粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值