【源碼開源】基於 STM32 的智能桌面天氣預報系統
——語音識別 + 觸摸交互 + 多功能信息終端設計全解析
一、前言
隨着物聯網設備的普及,越來越多的用户希望在桌面端擁有一個能夠實時展示天氣、空氣質量、日期時間等生活信息的小型智能終端。如果這個設備還能支持語音交互、觸摸屏控制、甚至帶有一定的娛樂功能,就能在工作桌、書房乃至卧室中發揮更大的價值。
本項目基於 STM32 微控制器,構建了一個集 天氣顯示、空氣質量監測、語音識別交互、觸摸控制和收音機功能 於一體的桌面智能天氣預報系統。項目不僅具備實時數據展示,還支持語音搜索天氣,實現了與硬件結合的輕量級對話功能,是一個綜合性 IoT 終端設計的優秀實踐案例。
源碼分享
直接放到之前寫的文章裏了,免費開源,下載學習即可。
https://blog.csdn.net/weixin_52908342/article/details/155617164
二、項目概述
本系統以 STM32 系列 MCU 作為核心控制單元,通過 TFT 觸摸屏展示天氣內容,通過語音識別模塊實現語音查詢,通過 WiFi/串口連接訪問天氣 API,從而構建出一個具有“本地交互 + 網絡信息獲取”能力的智能桌面設備。
系統採用模塊化硬件結構,顯示部分、傳感器部分、語音識別部分、聯網模塊互相獨立,既保證了可維護性,又方便用户根據需求進行擴展。例如:可以接入更多環境傳感器(CO₂、TVOC)、替換更高分辨率觸摸屏、升級語音模塊等。
此外,本工程最初使用 Keil 4.54 創建,如果使用 Keil5 及以上版本打開時可能存在編譯兼容性問題,需重新創建工程或調整項目設置。
三、系統整體架構
智能天氣預報系統主要包含以下幾個部分:
1. 主控單元:STM32 MCU
- 負責任務調度、UI 刷新、傳感器數據採集、語音命令處理等功能;
- 推薦使用 STM32F1/F4 系列,資源較為充足,便於接入更多功能;
- 採用 FreeRTOS 可進一步提升多任務並行能力(可選)。
2. 顯示與交互模塊
- 採用 TFT 觸摸屏,實現天氣展示、空氣質量曲線繪製、日曆顯示等 UI 界面;
- 增加觸摸操作邏輯,可手動搜索城市天氣、調整頁面、切換功能;
- UI 佈局採用“卡片式”結構,使天氣信息更加清晰直觀。
3. 環境傳感器
為了讓系統更貼近實際應用,可接入如下傳感器:
- 温濕度:如 DHT22/SHT30
- 空氣質量:如 MQ135、PMS7003(顆粒物)
- 光照(可選):用於調節屏幕亮度
所有采集信息在桌面端實時顯示,並參與天氣界面的整體信息展示。
4. 聯網模塊
- 可選 ESP8266/ESP32 作為外接 WiFi 模塊;
- 通過 HTTP/HTTPS 請求天氣 API(如和風天氣)獲取實時天氣信息;
- 支持城市搜索、天氣刷新等功能。
5. 語音識別模塊
系統帶有語音識別與簡單對話能力,可實現:
- 語音搜索天氣,如“查詢北京天氣”
- 簡單閒聊,如“你是誰”“今天天氣怎麼樣”
- 指令控制,如“打開收音機”“刷新天氣”
可選硬件方案包括:
- LD3320(本地語音識別)
- AI 芯片語音模塊(如離線語音識別器 ASR 模塊)
- 在線識別(需 WiFi 支持)
為了保證系統穩定,本項目以離線語音為主,減少網絡延遲和依賴。
6. 收音機功能
- 通過 TEA5767 或 Si4703 等 FM 模塊實現;
- 提供簡單的頻道搜索、音量調節;
- 可通過觸摸屏操作,也可通過語音控制。
四、主要功能詳解
1. 實時天氣顯示
系統可從網絡 API 獲取:
- 温度、濕度、風速
- 天氣狀態(晴、雨、雲、雪)
- 未來 3 天預報
- 空氣質量指數(AQI)
並通過圖形化 UI 進行美觀展示。
2. 空氣質量監測
本地空氣質量傳感器配合 API 數據,可顯示:
- PM2.5/PM10 濃度
- CO₂ 估計值
- 空氣等級提示(優/良/輕度污染)
同時支持歷史數據曲線展示。
3. 日曆與時間顯示
- 通過 RTC 或網絡校時實現;
- 界面顯示年月日、星期、時間;
- 支持農曆(可選)。
4. 觸摸屏搜索天氣
用户可直接點擊搜索框,輸入城市名稱,即可查詢對應天氣:
- 支持熱門城市一鍵選擇;
- 輸入法可採用按鍵式虛擬鍵盤;
- 正常輸入後自動聯網檢索。
5. 語音識別天氣查詢
這是系統最大亮點之一。
典型命令示例:
- “查一下上海天氣”
- “空氣質量怎麼樣?”
- “未來三天天氣”
- “打開收音機”
- “幾點了”
系統識別後通過 MCU 分析處理,再調用天氣查詢或其他界面跳轉功能。
6. 簡單對話模塊
為了讓設備更有 “智能桌面助手” 的感覺,本項目加入了基礎對話邏輯,例如:
- “你好” → “你好,有什麼可以幫你?”
- “你是誰?” → “我是你的桌面天氣助手。”
- “今天天氣好不好?” → 根據實時天氣生成回答。
此對話屬於固定規則匹配,可根據需求進一步擴展。
7. 界面設計與動畫過渡
- 界面切換採用淡入淡出動畫,提高體驗;
- 天氣圖標採用透明 PNG 或矢量圖;
- 所有佈局在 Keil 工程中已做好排版,避免換版本出現混亂。
五、開發環境與工程注意事項
1. 開發環境
- Keil MDK 4.54(建議使用此版本)
- STM32 標準庫或 HAL 庫
- 外設驅動(LCD、觸摸、語音、WiFi、FM 等)
2. Keil 版本兼容性注意
原項目使用 Keil 4.54 創建,如果你使用更高版本打開可能會出現:
- 編譯失敗
- 路徑不兼容
- Tab/縮進錯亂
解決方法:
- 重新創建 Keil5 工程,將原代碼遷移進去;
- 或在 Keil 的
Edit → Configuration中將 Tab size 設置為 4,修復排版混亂。
六、總結
基於 STM32 的智能桌面天氣預報系統,是一個將 嵌入式開發、物聯網數據獲取、語音識別、人機交互 有機結合的綜合性實踐項目。它不僅具備天氣查詢、空氣質量顯示等功能,還實現了語音控制、觸摸交互和收音機娛樂,功能豐富且體驗友好。
該項目適合作為:
- 畢業設計
- 物聯網課程實驗作品
- 個人桌面智能設備 DIY
- 嵌入式學習者提升工程能力的綜合練手項目