图形化展示modbus温湿度传感器数据并通过滑条控制LED亮度
1 项目介绍
本项目基于STM32F469I-DISCO开发板,实现了一个完整的温湿度监测与LED亮度控制系统。系统通过温度传感器采集环境数据,使用开发板的高性能LCD显示屏图形化展示实时数据,同时通过PWM 信号控制LED亮度,提供直观的环境监测和灯光控制功能。
2 系统框图
3 运行流程图
4 实现细节硬件配置
主控板:STM32F469I-DISCO
传感器:温度传感器
显示:开发板自带480×800分辨率LCD触摸屏
LED控制:使用板载LED或外接LED通过PWM控制
5 软件功能
5.1 温湿度数据采集
通过串口读取modbus 传感器数据
定时采集环境温湿度数据
数据校验与错误处理
5.2 图形化显示
实时数据显示
5.3 LED亮度控制
触摸屏滑动条控制PWM占空比
6 具体步骤
使用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-HALFreeRTOS
接下来就到了实践环节。
提前下载库文件至本地。
将MODBUS-LIB文件夹拖动到Middleware文件夹下,与FreeRTOS文件夹同级
选择复制文件
添加头文件目录
复制ModbusConfi gTemplate.h到INC目录下,并重命名为ModbusConfi g.h
添加modbus主站初始化代码
创建modbus数据读取线程
更新model类,添加温湿度数据同步显示刷新相关逻辑
至此代码编辑工作已完成,烧录观察现象
吹口哈气之后
7 项目特色
直观的图形化界面,数据展示生动形象
触摸屏交互,操作简便
低功耗设计,适合长期监测
后续改进方向
增加Wi-Fi/ 蓝牙模块实现远程监控
添加数据存储功能(SD 卡记录)
开发手机APP 配套控制
增加更多环境传感器(如CO2、PM2.5)
备注,最开始作者想直接通过GPIO 采集DHT11传感器数据,后来代码在未经git 托管的情况下,未跑通。
紧接着想通过ADC读取LM35温度传感器数据,后来这个ADC相关驱动代码也没跑通。
最后灵机一动,手头正好有485温湿度传感器,而且还是modbus协议的,最关键的是这个开源的驱动库笔者使用过好几次,比较顺手。简单写几行代码就行了。
最后强调,开发项目强烈建议使用git 进行代码管理。
(本文来源于《EEPW》202505)
评论