简易环境温湿度测量仪设计

2017-08-03 21:16蔡明邓萍唐军
速读·下旬 2017年7期
关键词:温湿度串口端口

蔡明 邓萍 唐军

本文利用温湿度传感器DHT11和STM32单片机设计了一个简易简易环境温湿度测量系统,并利用PC机上的串口调试助手软件对采集到的数据进行了显示。

1引言

在日常办公教学中,大部分的活动都在室内完成,在夏天温度较高的时候,需要对室内开空调进行降温处理,以保证教学活动的顺利进行,故室内环境温度、湿度是一个重要的参数,对于我校教室空调的使用,起到了决策依据的作用。因此,快速、准确地测量出环境温湿度,具有重要意义。

本文利用温湿度传感器DHT11和STM32单片机进行温湿度数据采集设计,并从节约成本的角度出发,考虑实际使用的便利,利用PC机上的串口调试助手完成数据显示。

2硬件设计

系统利用DHT11完成温湿度基础数据采集,采集到的数据通过单总线传送到STM32单片机上,再利用STM32的USART0与PC进行通信,将数据通过PC上的串口调试助手显示出来。

DHT11是一款有已校准数字信号输出的温湿度传感器。精度湿度+-5%RH,温度+-2℃,量程湿度20~90%RH,温度0~50℃,其接口为4引脚封装,1脚VDD供电,2脚为单总线的DATA串行数据引脚,在本设计中,DATA引脚接STM32的PE0进行数据通信,3脚为NC空脚,4脚为电源地。

STM32单片机是ST公司生产的Cortex-M3内核ARM单片机,多应用在高性能、低成本、低功耗的嵌入式设计中,本设计采用的型号为STM32F103VET6,经过PLL的9倍频,可以运行在72MHz的时钟频率上。

由于STM32的USART0通信引脚(PA9和PA10)无法直接和PC进行通信,因此在STM32和PC之间还需要一个串口转换芯片进行数据转换。

3软件设计

在软件设计中,重点是设计DHT11的驱动,如前所述,DHT11是单总线器件,通过DATA与STM32进行通信,每次只能传送1bit数据,而依据DHT11数据手册,一次完整的通信包括40bit,即5byte数据。40bit数据在传输时,先传输高位信号,再传低位信号,当40bit传送完成,在STM32内存变量中,将用5个byte变量存放其数据,我们设计了一个数组bufer[5]来存储。当一次正确的数据传输完成后,bufer[0]存储的数据为湿度的整数部分,bufer[1]存储的数据为湿度的小数部分;bufer[2]存储的数据为温度的整数部分,bufer[3]存储的数据为温度的整数部分。定义的5个字节数组还剩下了一个bufer[4],为校验字节,用于指示传送数据是否正确,其判定根据为:如果bufer[4]=buf[0]+buf[1]+buf[2]+buf[3],那么整个流程传送过程正确,否则错误。

由于DHT11单总线传输数据,因此,除了设计接收好字节数据的处理之外,更重要的是依据其时序图,设计基本的字节传送驱动函数。

在传输过程中,首先由STM32发起开始信号,开始信号发送完成后,STM32延时等待20us~40us,再读取DH11T的DATA单总线的回应信号,如果读取的值为0,即说明DHT11发送了回应信号,否则就判定没有接收到DHT11的响应信号,需重由STM32重新对DHT11发送开始信号。下面就传送过程中的起始信号、响应信号、位“0”,位“1”进行阐述。

3.1起始信号、响应信号

结合STM32程序设计来讲起始信号的过程,首先将STM32对应的端口配置为推挽输出模式,然后将DATA端口置0,即PE0输出0,输出0的时间至少要为18ms以上,程序中设计选择为20ms;延时20ms时间到了之后,将数据端口DATA置1,再延时30us,至此由STM32发出的起始信号完成,系统进去等待DHT11响应阶段。

在響应过程阶段,STM32首先应该将DATA端口PE0的端口方向改为浮空输入,然后再去读取端口PE0的值。DHT11正常响应会将DATA端口数据先拉低40~80us,然后再拉高40~80us,设计STM32程序,如果检测上上述过程,则认为响应信号正常,进入信号传输阶段,否则就认为无响应,返回响应失败标志。

当由STM32发出的起始信号得到DHT11正确的响应信号后,系统即进入读取数据阶段。在此阶段主要是由DHT11发出的高电平脉冲时间来判定就是总线传输数据是0还是1,如图5所示,如果传送的是0,那么其高电平时间将在其高电平时间将在28us以下,如果传送的是1,那么其高电平时间在70us左右。因此,在程序设计中,当检测到DATA信号为1开始计时,40us延时以后,再去读取DATA的值,如果此时读取的值为0,那么说明传送的值为0,否则为1。

这样的操作将会连续进行40次,将其存储到bufer寄存器里边,当40次完成后,即可利用前述字节出来方法进行数据处理,得到温度与湿度。

由于系统的设计目的是采集温湿度信息,为空调开启提供依据,因此,并不需要很高的精度,从化简程序出发,我们只保留了温湿度的整数信息,即buffer[0]表示湿度,buffer[1]表示温度。

采集到的信号通过STM32的USART1发送给PC机,USART1配置成波特率为9600,数据长8bit,停止位为1bit,无校验位的格式。

4系统调试

系统设计完成后,我们利用单片机小系统板、DHT11传感器模块和PC进行了调试,实验证明,可以在PC机上正确显示出数据。

5结语

本文利用温湿度传感器DHT11,STM32小系统板实现了温湿度数据的测量,并利用PC串口助手进行的温湿度信息显示,经过测试,达到了设计要求。

参考文献:

[1]王志宏,白翠珍.基于DHT11的实验室多点温湿度报警系统设计[J].山西电子技术,2011(04).

[2]张卫星,张桂香,谭成午.基于STM32的环境多点监测系统设计[J].计算机测量与控制,2014(10).

作者简介:

蔡明(1977—),男,汉族,宜宾,宜宾市骨干教师,中教一级,长期从事中学教学与管理工作,参与多项教学改革课题。

猜你喜欢
温湿度串口端口
温湿度控制器在回收砂冷却系统中的应用
浅谈AB PLC串口跟RFID传感器的通讯应用
基于DSP的多路温湿度监测系统
基于温湿度控制的天气预测装置
端口阻塞与优先级
蒸发冷却温湿度独立控制空调系统的应用
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
初识电脑端口
8端口IO-Link参考设计套件加快开发速度