基於 STM32 的儲糧智慧通風控制系統設計
摘要
針對糧食儲藏過程中糧堆發熱黴變的問題,本文設計並實作了一種基於 STM32 的儲糧智慧通風控制系統。系統以 STM32F103C8T6 為控制核心,DS18B20 不鏽鋼探頭埋入糧堆內部測量糧溫,DHT11 測量環境溫濕度,按目標溫差分檔(量化比例控制)驅動 TB6612FNG 驅動的直流風扇通風降溫;環境濕度不低於 75%RH 時自動閉鎖通風,防止濕空氣進入糧堆引起吸濕結露。系統支援儲糧/環境兩種測溫模式、自動/手動兩種執行模式,8 條定時通風計畫與執行記錄均持久化於 W25Q64 外部 Flash;ESP12F 提供 HTTP 介面與 NTP 對時,配套 React Native 手機 App 在區網內直連設備,完成控制、計畫、資料曲線與設定四類功能。測試表明,系統分檔回應準確、滯回有效、濕度閉鎖可靠,滿足儲糧通風的應用需求。
關鍵詞:STM32;儲糧通風;溫差分檔;DS18B20;濕度閉鎖;React Native
1 引言
糧食在儲藏期間,糧堆內部因呼吸作用與微生物活動會不斷積熱。糧堆熱容大、導熱差,內部溫度可比氣溫高出 5~10℃,只測室溫完全反映不了糧情,若不及時通風散熱極易引發黴變。機械通風降溫是糧食行業的通行做法,而傳統通風設備的啟停多依賴人工經驗,缺乏對「糧溫—氣溫—濕度」的綜合判斷。
本文的設計思路是:以糧堆內部溫度為判定主變數,用目標溫差分檔代替連續調節——溫差越大通風檔位越高,降到目標附近即停轉,這與糧堆大熱容慢物件的特性天然匹配;同時引入濕度閉鎖規則,從「溫控風扇」升級為多參數決策系統。系統還透過 ESP12F 與手機 App 實現區網內的遠端監測與控制,不依賴雲端平台,斷網環境同樣可用。
2 系統總體設計
2.1 功能需求分析
系統需要實現以下功能:
- 雙感測器測溫:儲糧模式以 DS18B20(埋入糧堆)溫度為判定變數;環境模式以 DHT11 室溫為判定變數,兩種模式可隨時切換;
- 溫差分檔通風:ΔT = 實際溫度 − 目標溫度(目標 15~40℃ 按鍵可調),按分檔表輸出 0/25%/50%/100% 四檔 PWM,降檔門檻值下移 2℃ 形成滯回;
- 濕度閉鎖:儲糧模式下環境濕度 ≥ 75%RH 強制停機並提示,防止通風帶入濕空氣;
- 定時通風:8 條計畫持久化儲存,到點強制 3 檔通風 N 分鐘,不受溫差與濕度閉鎖約束;
- 本地互動與遠端控制:OLED 中文選單 + 4 按鍵本地操作;手機 App 經 ESP12F 的 HTTP 介面遠端控制並查看執行資料曲線。
2.2 系統總體架構
系統由 STM32F103C8T6 主控、感測(DS18B20、DHT11、DS3231 時鐘)、執行(TB6612FNG + 直流風扇)、儲存(W25Q64)、顯示互動(OLED + 4 按鍵)與通訊(ESP12F)六部分組成。主迴圈每 2 秒執行一輪「採樣—判定—輸出」,ESP12F 獨立執行韌體,向上為 App 提供 HTTP API,向下經串列埠 @ 協定與 STM32 互動並完成 NTP 對時。
2.3 元器件選型
| 模組 | 型號 | 關鍵參數 | 作用 |
|---|---|---|---|
| 主控 | STM32F103C8T6 | Cortex-M3 / 72 MHz / 64 KB Flash | 控制核心 |
| 糧堆測溫 | DS18B20 | ±0.5℃,單匯流排,不鏽鋼探頭 | 埋入糧堆內部測溫 |
| 環境溫濕度 | DHT11 | ±2℃,±5%RH | 環境模式判定 + 濕度閉鎖 |
| 馬達驅動 | TB6612FNG | 雙 H 橋,PWM 調速 | 風扇驅動 |
| 時鐘 | DS3231 | I2C,帶溫補晶振 | 定時通風走時 |
| 儲存 | W25Q64 | 8 MB SPI Flash | 字庫、計畫與執行記錄 |
| 通訊 | ESP-12F | 802.11 b/g/n | HTTP API + NTP 對時 |
| 顯示 | OLED 0.96" | 128×64,SSD1306 | 中文狀態顯示 |
3 硬體系統設計
3.1 接腳資源分配
| 功能 | 接腳 | 配置 |
|---|---|---|
| 風扇 PWM | PA0 | TIM2_CH1,1 kHz |
| 馬達方向 AIN1/AIN2 | PA1 / PA2 | 推挽輸出 |
| DS18B20 | PB1 | 單匯流排,4.7 kΩ 上拉 |
| DHT11 | PA8 | 開漏 + 上拉 |
| W25Q64 | PA4~PA7 | SPI1 |
| OLED | PB8 / PB9 | 軟體 I2C |
| 按鍵 ×4 | PA3、PB5~PB7 | 外部中斷,300 ms 消抖 |
| 除錯串列埠 | PB10 / PB11 | USART3,IDLE+DMA |
| ESP12F | PA9 / PA10 | USART1,IDLE+DMA |
系統採用自製 PCB 整合上述電路(STM32 核心板座 + TB6612FNG + ESP-12F + OLED + 4 按鍵 + AMS1117-3.3 供電),實物如圖 3-1 所示。

4 軟體系統設計
4.1 主迴圈與兩段式溫度採樣
主迴圈以 100 × 20 ms 的輪詢結構每 2 秒完成一輪控制,並約定單輪內任何阻塞不得超過 ESP 命令逾時(400 ms)。最容易逾時的是 DS18B20 的 12 位溫度轉換(最長 750 ms),因此採用非阻塞兩段式採樣:本輪讀出上一輪發起的轉換結果,隨即立刻發起下一輪轉換,單輪阻塞僅約 2 ms,既保證了採樣節拍,又不會導致 App 輪詢撞上「STM32 無應答」。
4.2 目標溫差分檔控制
分檔判定變數為 ΔT = 實際溫度 − 目標溫度。升檔及時回應(無滯回),降檔門檻值整體下移 2℃(GEAR_HYST),避免 ΔT 在臨界點附近反覆跳檔:
/* 升檔看升檔門檻值;降檔看下移 2°C 的降檔門檻值 */
static uint8_t Gear_Calc(float dt)
{
uint8_t up = 0;
if (dt >= GEAR_UP_3) up = 3;
else if (dt >= GEAR_UP_2) up = 2;
else if (dt >= GEAR_UP_1) up = 1;
if (up > g_fan_gear) return up; /* 需要升檔:立即執行 */
uint8_t down = 0; /* 降檔:帶滯回 */
if (dt >= GEAR_UP_3 - GEAR_HYST) down = 3;
else if (dt >= GEAR_UP_2 - GEAR_HYST) down = 2;
else if (dt >= GEAR_UP_1 - GEAR_HYST) down = 1;
return down;
}
| ΔT | 檔位 | PWM |
|---|---|---|
| ΔT < 2℃ | 0 檔 | 0 |
| 2 ≤ ΔT < 5℃ | 1 檔 | 25% |
| 5 ≤ ΔT < 8℃ | 2 檔 | 50% |
| ΔT ≥ 8℃ | 3 檔 | 100% |
1 檔 25% 已越過馬達約 15% 的啟動死區(驅動層另有 Motor_EnforceMinPwm() 死區補償兜底),保證低速檔可靠啟動。
4.3 濕度閉鎖與定時通風
儲糧模式下,DHT11 濕度 ≥ 75%RH 時強制 0 檔並顯示 HUM LOCK,濕度回落后自動解除——DHT11 濕度無小數位,天然形成滯回。定時通風計畫存於 W25Q64 的 0x7E0000 扇區,每條含星期遮罩、觸發時刻與持續分鐘數;到點後無視溫差與濕度閉鎖強制 3 檔通風 N 分鐘,到時自動恢復原模式。走時由 DS3231 提供本地時鐘,ESP12F 定期 NTP 對時糾偏。
4.4 執行記錄
系統每 10 分鐘向 W25Q64(0x7D0000 起)追加一條 16 位元組執行記錄,內容涵蓋週期採樣、定時通風起止、手動開關與檔位變化等事件類型,供 App 端繪製曲線與統計。
5 手機 App 設計
App 採用 React Native(Expo)開發,區網 HTTP 直連 ESP12F,不依賴雲端平台,答辯與斷網環境同樣可用。App 分為四個頁面:
- 控制:實際溫度大卡片、目標溫度 ± 調整、檔位視覺化、自動/手動切換與手動直控(圖 5-1);
- 計畫:定時通風計畫的新增、啟用與刪除(圖 5-2);
- 資料:讀取設備 Flash 中的執行記錄,按 1 小時/6 小時/24 小時繪製糧溫、室溫、濕度曲線並統計最值與均值(圖 5-3);
- 設定:設備 IP 配置與連線測試、測溫模式切換、設備時間與 NTP 狀態(圖 5-4)。




6 系統測試與結果分析
| 測試項目 | 測試方法 | 測試結果 |
|---|---|---|
| 溫差分檔 | 加熱使 ΔT 依次越過 2/5/8℃ | 檔位按 1/2/3 檔正確遞升,PWM 輸出 25%/50%/100% |
| 降檔滯回 | ΔT 在臨界點附近波動 | 降檔門檻值下移 2℃ 生效,無反覆跳檔 |
| 濕度閉鎖 | 對濕度感測器哈氣加濕至 ≥75%RH | 立即強制 0 檔並顯示 HUM LOCK,回落自動解除 |
| 定時通風 | 設定到點計畫 | 到點強制 3 檔通風設定時長,斷電重啟計畫不遺失 |
| 雙模式切換 | 選單與 App 切換儲糧/環境、自動/手動 | 切換瞬間停扇清狀態,新週期按新模式重新分檔 |
| App 遠端控制 | 區網內四頁功能遍歷 | 控制即時生效,曲線與統計與串列埠遙測一致 |
結果分析:溫差分檔配合滯回在「及時回應」與「防止頻繁啟停」之間取得了預期平衡;濕度閉鎖與定時通風使系統從單一溫控升級為多參數決策;主迴圈兩段式採樣保證了 App 輪詢期間設備始終線上應答。
7 結論與展望
本文設計並實現了基於 STM32 的儲糧智慧通風控制系統,完成了雙感測器測溫、目標溫差分檔、濕度閉鎖、定時通風、執行記錄與手機 App 遠端控制等全部功能,並採用自製 PCB 完成整機整合。系統控制策略與糧堆熱特性相匹配,工程實現完整、成本低廉。
後續可在兩個方向完善:一是增加多點糧溫檢測(多顆 DS18B20 佈點)以反映糧堆內部溫度場分佈;二是引入通風效果回饋(通風後 ΔT 下降速率)自適應調整分檔門檻值,並向 LS/T 1202《儲糧機械通風操作規程》的行業門檻值進一步對齊。