【源码开源】基于 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
- 嵌入式学习者提升工程能力的综合练手项目