新闻中心

EEPW首页 > 设计应用 > 图形化展示modbus温湿度传感器数据并通过滑条控制LED亮度

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

—— STM32F469I-DISCO试用
作者:rasngsun 时间:2025-05-21 来源:EEPW 收藏


本文引用地址:https://www.eepw.com.cn/article/202505/470709.htm

1   项目介绍

本项目基于STM32F469I-DISCO开发板,实现了一个完整的温湿度监测与LED亮度控制系统。系统通过温度传感器采集环境数据,使用开发板的高性能LCD显示屏图形化展示实时数据,同时通过PWM 信号控制LED亮度,提供直观的环境监测和灯光控制功能。

2   系统框图

1747822618824781.png

3   运行流程图

image.png

4   实现细节硬件配置

主控板:STM32F469I-DISCO

传感器:温度传感器

显示:开发板自带480×800分辨率LCD触摸屏

LED控制:使用板载LED或外接LED通过PWM控制

5   软件功能

5.1 温湿度数据采集

通过串口读取modbus 传感器数据

定时采集环境温湿度数据

数据校验与错误处理

5.2 图形化显示

实时数据显示

5.3 LED亮度控制

触摸屏滑动条控制PWM占空比

6   具体步骤

使用touchGFX软件创建工程

1747822714152468.png

添加背景窗口

1747822753548432.png

添加静态显示文本

1747822781657897.png

温湿度数据显示控件添加

1747822828783235.png

LED相关控件添加

1747822865618957.png

至此图形界面基础部分已经完成,烧录程序

1747822900732757.png

观察初步效果

1747822950335640.png

滑块联动逻辑添加

image.png

接下来进行相关代码编辑工作,点击生成代码,并打开代码所在文件夹

1747823008429664.png

使用cubemx ide软件打开工程文件

1747823042976674.png

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

1747823068256750.png

实现函数slider_light_change功能

1747823107974199.png

阶段性成果展示

image.png

image.png

接下来配置Arduino扩展板D12引脚为PWM输出模式

1747823242203506.png

在代码中开启PWM输出

1747823272321664.png

更新model类

1747823308765104.png

更新ModelListener类,添加接口函数

1747823346469582.png

更新MainScreenPresenter类

1747823402166463.png

view类更新

1747823432996149.png

至此即可通过手指触摸改变滑条位置并同步控制LED亮度,如下图所示

低亮度

1747823490939666.png

高亮度

接下来设置温度传感器相关代码,此处我们选择的时485温湿度传感器,需要通过开发板扩展接口的USART6配合电平转换模块与传感器进行数据通讯

1747823530433811.png

配置USART6,添加DMA及中断使能

1747823577389866.png

1747823593856520.png

接下来到了很关键的一步,我们这里使用github上的一款成熟驱动库,实现modbus数据读取。

https://github.com/alejoseb/Modbus-STM32-HALFreeRTOS

接下来就到了实践环节。

提前下载库文件至本地。

1747823651150142.png

将MODBUS-LIB文件夹拖动到Middleware文件夹下,与FreeRTOS文件夹同级

1747823687952831.png

选择复制文件

image.png

添加头文件目录

1747823769687598.png

复制ModbusConfi gTemplate.h到INC目录下,并重命名为ModbusConfi g.h

添加modbus主站初始化代码

1747823807492408.png

创建modbus数据读取线程

image.png

1747823902134798.png

1747823925725719.png

更新model类,添加温湿度数据同步显示刷新相关逻辑

1747824043187722.png

此代码编辑工作已完成,烧录观察现象

image.png

吹口哈气之后

7   项目特色

直观的图形化界面,数据展示生动形象

触摸屏交互,操作简便

低功耗设计,适合长期监测

后续改进方向

增加Wi-Fi/ 蓝牙模块实现远程监控

添加数据存储功能(SD 卡记录)

开发手机APP 配套控制

增加更多环境传感器(如CO2、PM2.5)

备注,最开始作者想直接通过GPIO 采集DHT11传感器数据,后来代码在未经git 托管的情况下,未跑通。

紧接着想通过ADC读取LM35温度传感器数据,后来这个ADC相关驱动代码也没跑通。

最后灵机一动,手头正好有485温湿度传感器,而且还是modbus协议的,最关键的是这个开源的驱动库笔者使用过好几次,比较顺手。简单写几行代码就行了。

最后强调,开发项目强烈建议使用git 进行代码管理。

(本文来源于《EEPW》



关键词: 202505

评论


技术专区

关闭