《嵌入式物联网应用技术实践教程》_第 9 章 温湿度采集系统设计.pptVIP

  • 0
  • 0
  • 约3.57千字
  • 约 18页
  • 2026-02-13 发布于广东
  • 举报

《嵌入式物联网应用技术实践教程》_第 9 章 温湿度采集系统设计.ppt

9.1系统结构DHT11数字温湿度传感器模块与STM32开发板部分接口电路如图9-1所示。根据STM32开发板的电路原理图得知,图9-1中的GPIO口连接到STM32开发板的PB5口。下面介绍DHT11获取温湿度值的工作原理。通过图9-1可知,DHT11模块的DATA引脚连接到MCU,温湿度的获取只和这个引脚有关,DATA用于微处理器与DHT11之间的通信和同步,采用单总线数据格式,一次通信时间为4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零。操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。下一页返回9.1系统结构数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。STM32发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送的开始信号,DHT11不会主动进行温湿度采集。采集数据后转换到低速模式。通信过程如图9-2、图9-3所示。上一页下一页返回9.1系统结构总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18ms,以保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80μs低电平响应信号。主机发送开始信号结束后,延时等待20~40μs后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平,总线由上拉电阻拉高。数字“0”和“1”的信号表示方法分别如图9-4和图9-5所示。上一页返回9.2软件结构温湿度采集系统的软件流程如图9-6所示。返回9.3程序实现温湿度采集是通过STM32开发板的PB5口模拟DHT11的读取时序,读取DHT11的温湿度数据,读取到温湿度数据后通过串口打印输出。根据温湿度传感器DHT11的工作原理以及温湿度数据读取时序,通过编程实现温湿度值的采集,程序解析过程如下:(1)DHT11I/O资源宏定义。#defineGPIO_CLKRCC_APB2Periph_GPIOB#defineGPIO_PINGPIO_Pin_5#defineGPIO_PORT(2)DHT11模块I/O初始化。voidDHT11_Init(void){RCC_APB2PeriphClockCmd(GPIO_CLK,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_PIN;下一页返回9.3程序实现GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_Init(GPIO_PORT,GPIO_InitStructure);}(3)将DHT11的I/O端口设置成上拉输入。staticvoidDHT11_IO_IN(void){GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIO_PORT,GPIO_InitStructure);}(4)将DHT11的I/O端口设置成推挽输出。staticvoidDHT11_IO_OUT(void)上一页下一页返回9.3程序实现{GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIO_PORT,GPIO_InitStructure);}(5)I/O端口电平输出。staticvoidDHT11_DQ_OUT(uint8_tdat){GPIO_WriteBit(GPIO_PORT,GPIO_PIN,dat);}(6)读取I/O端口的电平值。staticuint8_tDHT11_DQ_IN(void){returnGPIO_Re

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档