湿度传感器 主页 > 湿度传感器 >

STM32 模块篇-温湿度传感器模块(DHT11)实验

发布时间:2021-09-24

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

  DHT11数字温湿度传感器模块为4针PH2.0封装。连接方便。如右图所示。

  DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:

  数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

  用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

  总线空闲状态为高电平,主机把总线响应,主机把总线能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。

  总线发送响应信号后,再把总线us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线us,随后总线由上拉电阻拉高进入空闲状态。

  2.掌握单片机实现温度采集模块DHT11数据采集的基本方法,其中包括硬件和软件实现两部分;

  3.熟悉单片机数据采集系统中,温度采集模块DHT11作为传感器对象的系统设计方法。

  选用大黄蜂实验板,温度采集模块DHT11是成品模块,直接插接到实验板上即可。硬件设计见“图5.03.5温度采集模块DHT11连线图”。

  温度采集模块DHT11是成品模块,直接插接到实验板上即可。按照上一章介绍的工作原理,我们就可以按照工作时序编写出数据采集程序。我们还是采用库函数的方式进行程序设计。

  在这节程序设计中,用到了外部中断函数;prinif重定向打印输出函数;USART串口通讯函数;定时器函数。

  本节实验及以后的实验我们都是用到库文件,其中stm32f10x_gpio.h头文件包含了GPIO端口的定义。stm32f10x_rcc.h头文件包含了系统时钟配置函数以及相关的外设时钟使能函数,所以我们要把这两个头文件对应的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c库函数主要包含了中断优先级的设置,stm32f10x_exti.c库函数主要包含了外部中断设置参数,tm32f10x_tim.c库函数主要包含定时器设置,tm32f10x_usart.c库函数主要包含串行通讯设置,这些函数也要添加到函数库中。以上库文件包含了本次实验所有要用到的函数使用功能。

  我们在每个工程设计中都要创建了两个公共的文件,这两个文件主要存放我们自定义的公共函数和全局变量,以方便以后每个功能模块(函数)之间传递参数。

  语句#ifndef、#endif是为了防止pbdata.h文件被多个文件调用时出现错误提示。如果不加这两条语句,当两个文件同时调用pbdata文件时,会提示重复调用错误。

  下面是pbdata.c文件详细内容,在文件开始还是引用“pbdata.h”文件。

  在每个工程中必须在开始时配置并启动STM32系统时钟,这是基础,这次也不例外。

  在主程序中采用while(1)循环语句,采用查询方式不停的读取温湿度数据,然后直接通过串口送打印输出到屏幕。

  在中断处理stm32f10x_it.c文件里中仅串口1子函数非空,进入中断处理函数后,只有串口1有参数输出。

  函数dht11.h在这里是为符合温湿度模块功能自定义的专用功能函数,dht11.h的内容如下:

  USART_InitStructure.USART_Mode=USART_Mode_RxUSART_Mode_Tx;

  问题背景:因为工程中加入了独立看门狗IWDG,但是有时候需要硬件仿真单步调试设置个断点啥的,这时候看门狗就会因为没有及时喂狗复位,弹窗报错,整个仿真都不能继续了。实测JLINK会弹窗如下图所示,但是亲儿子STLINK没有任何弹窗…之前一直都是在debug的时候关掉看门狗宏定义,但是这样麻烦不说,会有一个隐患存在就是,真正的项目工程是需要看门狗的,我们随意关掉的话,终究会存在debug完之后忘记再重新打开看门狗的问题,所以我们最好的办法是能够在debug这个特定的条件下,冻结掉看门狗,就像低功耗下冻结看门狗一样。解决办法:翻阅参考手册#define __HAL_DBGMCU_FREEZE_IWDG() &nb

  】Debug下禁用看门狗 /

  】HAL库调用HAL_SPI_Transmit出现HartFault问题

  txLength 发送长度* @return spi发送的长度* */uint32_t spi1_write(SPIChannel channel, uint8_t *txBuffer, uint32_t txLength){ if(channel == W25QXX_CHANNEL) { W25QXX_CHANNEL_ON; } HAL_SPI_Transmit(&hspi2, txBuffer, txLength, 500); if(channel == W25QXX_CHANNEL) {

  】HAL库调用HAL_SPI_Transmit出现HartFault问题 /

  项目场景:因为项目的一个功能需求,需要输出一个高电平为5V的PWM。问题描述:发现输出的PWM高电平最高只有4V不到的样子,很接近于4V。实测过普通开漏输出,高电平完全可以达到外部上拉的5V。HAL库也试过了,也是完全可以达到5V的,但是标准库的配置一直上不去。原因分析:仔细对比发现没啥异常,配的都是对的,但是可以肯定的是,肯定还是配置,因为HAL库可以实现,那就说明一定还是某个地方配的有问题。最后才知道开漏输出脚必须配置为浮空,不配置的话实测默认的是内部上拉。1.内部下拉:2.内部上拉:3.浮空:解决方案:一句话:GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

  】解决引脚复用成PWM开漏输出峰值达不到外部上拉的电 /

  说到伪指令宏一般就会联想到指令、宏指令和伪指令。先借用别人的话简单介绍一下三者之间的关联和区别(看到一个博主写的很不错):我们使用的各种指令,都是写给“编译软件”看的。要由“编译软件”翻译成计算机可以识别的机器语言,即机器码。通俗地讲:就好像召开新闻发布会,主持人用中文讲话,由一个翻译,现场翻译成英文,讲给外国记者听。主持人说的中文,大部分都是要翻译成英文的;少数几句,是说给翻译听的,告诉他如何翻译。我们写的指令,由“编译软件”翻译成机器码的,称为指令语句;有一些是写给“编译软件”看的,不翻译成机器码,这样的就是“伪指令”。一条条计算机的指令,一般来说,功能都是极为简单的。我们可以把几条、几十条指令,编写成一个“宏指令”,来完成一个

  ADC详解前面的博客中详细介绍了STM32中ADC的相关信息,这篇博客是对ADC内容的一个总结提升,ADC的详细介绍:ADC详解程序说明为了使这次代码阅读方便,博主没有在头文件中宏定义变量,都是直接采样库函数中的规定形参。此次采用多通道采集电压,使用ADC1的通道10、11、12、13、14、15一共六个通道,采用DMA将转换结果传输至内存。函数主体引脚配置引脚配置的时候,将所有引脚一次性配置好,过于简单,不作详细说明。void ADC_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC

  FLASH简介FLASH俗称闪存,和EEPROM一样,都是掉电数据不丢失的非易失行存储器,但FLASH的存储容量普遍大于EEPROM,现在像如U盘、SD卡、SSD固态硬盘以及STM32芯片内部存储程序的设备都是FLASH类型的存储器。由此可见FLASH对于我们学习和工作的重要性,EEPROM可以实现单字节的擦写,而FLASH都是一大片的擦写,就像是大规模杀伤性武器,其最小擦除单位:扇区的大小也是4KB。我们此次通过SPI对FLASH存储芯片W25Q64进行读写擦除的操作。对于FLASH内部结构的详细说明博主会专门整理一篇博客来说明,所以关于FLASH芯片的相关原理,本文中只做简单说明,侧重代码部分。FLASH详细说明的博客链接

  —SPI读写FLASH /

  【下载】STM32L5产品培训:从Cortex-M33内核认识TrustZone

  【干货】放大招!STM32U5,ST首个获得PSA和SESIP 3级认证的MCU!

  【干货】最新版TouchGFX Designer 4.17上线 改版后用户界面更直观

  【干货】放大招!STM32U5,ST首个获得PSA和SESIP 3级认证的MCU!

  福特推出“RoadSafe”仪表板 使用互联汽车技术帮助驾驶员避开高风险地区

  马勒与Allotrope Energy推出全新锂碳技术 可实现超快速充电

  联想栗子工业智能开发板抢先首发!免费申请进行时~另有12 月 22 日深圳技术沙龙邀您莅临!

  抢先体验NUCLEO家族新贵,ST STM32 NUCLEO-F091RC开发板28元包邮!

  选修有礼:Keysisht“测试测量”系列12节新课程,炎夏预约开启~

  【看电源研讨会,瓜分3000元红包】 如何正确完成模块化DC-DC系统设计

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: