这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » [STM32F469I-DISCO试用]-成果贴:图形化展示modbus温湿度传

共4条 1/1 1 跳转至

[STM32F469I-DISCO试用]-成果贴:图形化展示modbus温湿度传感器数据并通过滑条控制LED亮度

菜鸟
2025-04-21 20:59:00     打赏

项目介绍

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

系统框图

企业微信截图_17452332767006.png

运行流程图

企业微信截图_17452339928362.png

实现细节硬件配置

主控板:STM32F469I-DISCO

传感器:温度传感器

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

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

软件功能

      1.温湿度数据采集

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

          定时采集环境温湿度数据

          数据校验与错误处理

      2.图形化显示

          实时数据显示

      3.LED亮度控制

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


具体步骤

使用touchGFX软件创建工程

企业微信截图_17451299971994.png

添加背景窗口

企业微信截图_17451302237704.png

添加静态显示文本

企业微信截图_17451305289500.png温湿度数据显示控件添加

企业微信截图_17451308427256.png

LED相关控件添加

企业微信截图_1745131204738.png

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

企业微信截图_17451317516202.png

观察初步效果

dbdf36ae-9974-4a7a-b6a6-f4fa22acedf2.jpg

滑块联动逻辑添加

企业微信截图_17451424697526.png

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

企业微信截图_17451319277663.png

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

企业微信截图_17451320115337.png

添加显示数据更新相关函数
企业微信截图_17451425292657.png

实现函数slider_light_change功能

企业微信截图_17451426279368.png

阶段性成果展示

9be3021a-ee99-4410-a0cc-067c3929315f.jpg

a41801f1-32d0-4c61-a245-4ba1e08fc76d.jpg

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

企业微信截图_17451474174025.png

在代码中开启PWM输出

企业微信截图_17451475355956.png

更新model类

企业微信截图_17451475991537.png

更新ModelListener类,添加接口函数

image.png

更新MainScreenPresenter类

企业微信截图_17451477291515.png

view类更新

企业微信截图_17451477998723.png

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

直接上图

低亮度

企业微信截图_1745147999208.png

高亮度

企业微信截图_17451480929289.png

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

企业微信截图_17452344783583.png

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

企业微信截图_17452345299974.png

企业微信截图_17452345687419.png

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

https://github.com/alejoseb/Modbus-STM32-HAL-FreeRTOS

链接已放上,接下来就到了实践环节.

提前下载库文件至本地.

企业微信截图_17452347463714.png

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

企业微信截图_17452348035415.png

选择复制文件

企业微信截图_17452348852901.png

添加头文件目录

企业微信截图_17452352872613.png

复制ModbusConfigTemplate.h 到 INC目录下,并重命名为ModbusConfig.h

企业微信截图_17452354436759.png

添加modbus主站初始化代码

企业微信截图_17452370876396.png

创建modbus数据读取线程

企业微信截图_17452391321382.png

企业微信截图_17452391403934.png

企业微信截图_17452391638718.png

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

企业微信截图_17452397808375.png

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

dd069af2-b289-4fa6-9581-2bcb5cf6eef7.jpg

吹口哈气之后

2186f33f-0bb7-462f-95e7-fa027d5d2eae.jpg

项目特色

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

    触摸屏交互,操作简便

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

后续改进方向

    增加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





关键词: 德捷电子     STM32     MODBUS    

专家
2025-04-22 09:11:09     打赏
2楼

谢谢分享


院士
2025-04-22 23:34:36     打赏
3楼

我觉得Modbus主站协议的命令不是固定嘛!直接引用就行了,没有必要跑一个主站协议库吧?


菜鸟
2025-04-23 10:10:21     打赏
4楼

牛的,这个滑条联动PWM做的很不错啊,如果能加上亮度数值显示就更棒了


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]