项目介绍
本项目基于STM32F469I-DISCO开发板,实现了一个完整的温湿度监测与LED亮度控制系统。系统通过温度传感器采集环境数据,使用开发板的高性能LCD显示屏图形化展示实时数据,同时通过PWM信号控制LED亮度,提供直观的环境监测和灯光控制功能。
系统框图
运行流程图
实现细节硬件配置
主控板:STM32F469I-DISCO
传感器:温度传感器
显示:开发板自带480x800分辨率LCD触摸屏
LED控制:使用板载LED或外接LED通过PWM控制
软件功能
1.温湿度数据采集
通过串口读取modbus传感器数据
定时采集环境温湿度数据
数据校验与错误处理
2.图形化显示
实时数据显示
3.LED亮度控制
触摸屏滑动条控制PWM占空比
具体步骤
使用touchGFX软件创建工程
添加背景窗口
添加静态显示文本
温湿度数据显示控件添加
LED相关控件添加
至此图形界面基础部分已经完成,烧录程序
观察初步效果
滑块联动逻辑添加
接下来进行相关代码编辑工作,点击生成代码,并打开代码所在文件夹
使用cubemx ide软件打开工程文件
添加显示数据更新相关函数
实现函数slider_light_change功能
阶段性成果展示
接下来配置Arduino扩展板D12引脚为PWM输出模式
在代码中开启PWM输出
更新model类
更新ModelListener类,添加接口函数
更新MainScreenPresenter类
view类更新
至此即可通过手指触摸改变滑条位置并同步控制LED亮度
直接上图
低亮度
高亮度
接下来设置温度传感器相关代码,此处我们选择的时485温湿度传感器,需要通过开发板扩展接口的USART6配合电平转换模块与传感器进行数据通讯
配置USART6,添加DMA及中断使能
接下来到了很关键的一步,我们这里使用github上的一款成熟驱动库,实现modbus数据读取.
https://github.com/alejoseb/Modbus-STM32-HAL-FreeRTOS
链接已放上,接下来就到了实践环节.
提前下载库文件至本地.
将MODBUS-LIB文件夹拖动到Middleware文件夹下,与FreeRTOS文件夹同级
选择复制文件
添加头文件目录
复制ModbusConfigTemplate.h 到 INC目录下,并重命名为ModbusConfig.h
添加modbus主站初始化代码
创建modbus数据读取线程
更新model类,添加温湿度数据同步显示刷新相关逻辑
至此代码编辑工作已完成,烧录观察现象
吹口哈气之后
项目特色
直观的图形化界面,数据展示生动形象
触摸屏交互,操作简便
低功耗设计,适合长期监测
后续改进方向
增加Wi-Fi/蓝牙模块实现远程监控
添加数据存储功能(SD卡记录)
开发手机APP配套控制
增加更多环境传感器(如CO2、PM2.5)
备注,最开始作者想直接通过GPIO采集DHT11传感器数据,后来代码在未经git托管的情况下,未跑通.
紧接着想通过ADC读取LM35温度传感器数据,后来这个ADC相关驱动代码也没跑通.
最后灵机一动,手头正好有485温湿度传感器,而且还是modbus协议的,最关键的是这个开源的驱动库笔者使用过好几次,比较顺手.简单写几行代码就行了.
最后强调,开发项目强烈建议使用git进行代码管理.
视频链接
https://www.bilibili.com/video/BV1k452zHEMS/
<iframe src="//player.bilibili.com/player.html?bvid=BV1k452zHEMS&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
代码如有需要,请留言,后续可通过github提供。
代码链接:
https://github.com/bigjiongeagle/THsensor_modbus_gui_display_base_stm32f469_discovery_kit