基于STM32CubeMX和HAL库开发的温湿度监测反馈系统的设计

2021-04-01 08:14吴亮亮曹江涛
现代计算机 2021年5期
关键词:外设温湿度端口

吴亮亮,曹江涛

(1.厦门南洋职业学院航空机电学院,厦门361102;2.北京高伟达钽云科技有限公司云运营服务部,北京100000)

0 引言

单片机开发设计电路已广泛深入应用于生产生活中,温湿度检测反馈系统在地铁、冷链存储运输、纺织定型机、烟叶发酵、农业、机房等诸多领域有重要的实用价值。以往设计的温湿度检测系统较多采用51单片机进行设计开发,且系统设计针对具体一种特定应用场合,不便于移植,通用性差。温湿度检测反馈系统往大存储、智能化方向发展已经成为市场主流趋势[1],并且,主流MCU单片机公司之一的ST意法半导体公司自2014年起,已经不再更新固件库。结合可视化、图形化的CubeMX软件和HAL库,以其抽象和可移植性等诸多优势,取代固件库开发也是大势所趋。基于STM32和HAL驱动库,结合CubeMX软件设计的温湿度监测反馈系统,可以自主调节温湿度上下限值以实现不同场合的运用,具备功能更强、功耗更低、开发周期更短等显著优势。

1 系统整体规划

温湿度监测反馈系统整体规划有六个部分:STM32单片机、温湿度采集、显示电路、阈值设置、声光报警电路、外设反馈控制电路。系统整体框图见图1。

图1系统整体框图

1.1 单片机

主流MCU(单片机)公司之一意法半导体(ST),推出的产品STM32 MCU融高性能、实时性、数字信号处理、低功耗、低电压于一身,同时保持高集成度和开发简易的特点。本系统正是采用Cortex-M3基础型MCU主流级的STM32F103C8T6。该系列有丰富的外设、低压、低功耗、高集成度、高性能,同时价格适中。工作频率达72MHz,集成了512KBFlash和64KBSRAM,具有I2C、SPI、SDIO等接口模块,并且具有8个16位的定时器[2]。软件实现部分结合可视化软件CubeMX和HAL驱动库。高效便捷开发周期短,可移植性强。

单片机STM32F103核心电路设计方面针对系统所需,省去非必要环节,有效降低成本。核心电路设计包含以下内容:

(1)电源:采用5V充电器接DC直流电源插座,核心电路使用ASM1117得到单片机所需的3.3V供电电压;电源和地之间接电容以提高电源稳定性。

(2)时钟:单接外部8M晶振,省去RTC时钟。单片机引脚数量少,设计上原本接RTC晶振的两个引脚PC14(OSC32_IN)和PC15(OSC32_OUT)通过10K电阻直接接地。硬件设计上也可把两个引脚重映射到PD0/PD1,设置推挽输出0,节省两个电阻。

(3)复位:采用按键连接NRST端口完成复位电路,并联电容以消除抖动。

(4)启动:BOOT1接地,BOOT0通过跳线帽完成高/低电平转换,实现程序运行和在线调试的转换。

(5)下载:用最节省资源的SWD下载方式,实际接线时候只接SWIO/SWCLK/GND三条线,仅占用单片机两个引脚。

1.2 温湿度采集

温湿度采集选用DHT11数字温湿度传感器,这是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,产品具有极高的可靠性和卓越的长期稳定性。精度为湿度+-5%RH,温度+-2℃,湿度量程20-90%RH,温度量程0~50℃,可满足多种场合要求。

硬件上DHT11脚1接5V电源;2脚通过5K电阻接电源,同时连接单片机PA1输入数据;3脚悬空;4脚接地。

1.3 显示电路

显示采用微功耗、体积小、显示内容丰富、超薄轻巧,抗震性能更好等诸多优点的OLED,相比LCD,OLED不需要背光。在数据传输方面,提供多种对外接口方式,例如I2C(Inter-Integrated Circuit)接口,串行SPI(Serial Peripheral Interface)接口,6800、8080并行接口[3]。

七针OLED模块共有七个管脚,硬件设置上1(GND)脚接地、2(VCC)脚节电源、3(SCLK)时钟管脚接PA5、4(SDA)数据管脚接PA7、5(REST)低电平复位接PB1、6(DC)数据和命令控制管脚接PB0、7(CS)片选管脚接PA4,采用SPI方式驱动OLED。

1.4 阈值设置

用四个按键开关,分别接单片机PB3/PB4/PB5/PB6引脚,以设置温湿度上下限值。

1.5 声光报警

用红色LED和喇叭,当前温度或者湿度超过设定的阈值,LED点亮同时喇叭响起实现声光报警。

LED阳极通过IK限流电阻接3.3V电源,阴极接单片机PB10,低电平驱动;蜂鸣器通过PNP接单片机PB11,低电平驱动。

1.6 外设反馈控制电路

单片机PB12/PB13/PB14/PB15四个引脚分别通过三极管8050驱动四路继电器输入端,继电器输出端分别接排湿、加湿、降温、升温设备。每个继电器反并联一个二极管以避免过高的感应电压损坏三极管,设计上继电器和单片机不共地。产品在结合实际应用场合可采用不同的控制设备。

系统设计原理图如图2所示。

图2系统原理图

2 系统工作流程和软件设计

2.1 CubeMX设置流程

(1)默认使用STM32F103C8T6的8M内部时钟源。

(2)开启ST-Link调试口(PA13和PA14)

(3)开启SPI1端口,使用硬件NSS端口,驱动OLED,使用端口PA4、PA5、PA7、PB0、PB1。

(4)开启外部中断,接收处理按键输入,使用端口为PB3、PB4、PB5、PB6。

(5)温湿度模块接PA1,需动态配置输入输出,输出为唤醒模块,输入为读取模块数据。

(6)声光报警端口,PB10/PB11设置为GPIO_Out-Put模式。

(7)外设开关端口,引脚PB12、PB13、PB14、PB15设置为GPIO_OutPut模式。

2.2 软件设计

软件实现是结合CubeMX软件,采用HAL驱动库,在Keil uVision5平台开发,方便实现移植。Keil5支持常见的ARM公司系列产品,最主要的是与STM32系列完美兼容,提供了直接可用的启动文件,直接进行C语言编程开发,适用于多种机型和多种操作系统[4]。可以通过开发软件自动寻找中断地址,不需要重新设置启动文件,不仅方便也有效缩短开发周期[5]。

程序主要包括温湿度监测、显示、阈值上下限设定、反馈调节控制等几个模块。系统流程图如图3所示。

图3系统流程图

3 仿真测试

通过硬件测试(未接外设控制设备),用温湿度计记录数据作为参照,分别采用空调降温升温、加湿器加湿等手段来改变当前环境的温湿度,实验结果表明系统能够实时显示当前温度湿度,超过设定温湿度实现声光报警(蜂鸣器响起,LED灯亮),同时相应继电器开关动作,温湿度值回到阈值内,声光报警再度停止工作。响应速度快,性能可靠。

4 结语

本系统开发的温湿度检测反馈系统是使用单片机STM32F103C8T6结合CubeMX软件和HAL驱动库运行程序开发,完成声光报警和反馈控制。硬件电路设计成本低,功能完善,通用性好,适用于多种环境的需求、长时间工作、无人值守的场合。

猜你喜欢
外设温湿度端口
温度对圆柱壳结构应力及端口变形影响研究
华为交换机端口Hybrid 模式的应用
蛋鸡育雏育成舍环境控制技术
一种端口故障的解决方案
档案库房温湿度记录统计及调控
变电站高压配电智能温湿度控制装置的研发与应用
为程序或设备在路由器上打开端口
档案库房温湿度调控思考
外设天地行情
外设天地行情