图形化展示modbus温湿度传感器数据并通过滑条控制LED亮度|PWM|图形化|开发板

本文引用地址:

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软件打开工程文件

添加显示数据更新相关函数

实现函数sliderlightchange功能

阶段性成果展示

接下来配置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 进行代码管理。

© 版权声明
评论 抢沙发
加载中~
每日一言
不怕万人阻挡,只怕自己投降
Not afraid of people blocking, I'm afraid their surrender