圖形化展示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)







評論