基于 STM32F407 + FreeRTOS + ESP-AT 的桌面 WiFi 智能气象时钟。
本项目以 STM32F407 高性能微控制器为核心,运行 FreeRTOS 实时操作系统,并设计了非阻塞的异步工作队列(WorkQueue)。配合 ESP8266/ESP32 WiFi 模块(AT 固件),实现自动连接 WiFi、同步 NTP 网络时间以及请求心知天气(Seniverse)API 获取实时室外天气与温度。结合 DHT11 采集室内温湿度,并在 240×240 彩色 LCD 屏上呈现精致的拟态卡片式 UI 界面。
- 现代拟态 UI 布局:
- 顶部时间大卡片:展示 WiFi 连接状态、年月日、大字号时钟与动态闪烁冒号
- 室内环境卡片:DHT11 实时检测室内温度与湿度
- 室外气象卡片:心知天气 API 解析,动态显示天气图标(晴、阴、雨、雪等)及室外温度
- FreeRTOS + WorkQueue 架构:
- 异步事件驱动,网络请求与耗时传感器采集在工作队列中执行,避免阻塞 UI 刷新
- ESP-AT 驱动封装:
- 包含 WiFi 配置连接、NTP 时间同步、HTTP GET 报文构造与 JSON 格式天气数据解析
- 字体与图像渲染:
- 内置定制 Maple Mono 多字号字体库(54px / 24px / 20px / 16px)及天气图标资源
- 主控芯片: STM32F407 系列 (ARM Cortex-M4, 168MHz)
- 显示外设: 240×240 SPI 彩色 LCD 屏幕
- 网络模块: ESP8266 / ESP32(烧录标准 AT 固件)
- 传感器: DHT11 温湿度传感器
- 片上外设: SPI(LCD驱动)、USART(串口调试及ESP通信)、RTC、DMA
Core/: 系统时钟配置、中断向量及 FreeRTOS 核心任务逻辑MiddleDriver/:LCD.c / .h: 屏幕绘制与显示队列ESP_AT.c / .h: ESP 模块 AT 指令封装与 HTTP 天气请求DHT11.c / .h: 温湿度传感器驱动workqueue.c / .h: 轻量级工作队列实现font/: 多尺寸英文字体定义image/: 天气与状态图标资源
Drivers/: STM32F4xx HAL 驱动库与 CMSISMDK-ARM/: Keil MDK 工程文件 (Test1.uvprojx)
- IDE: Keil MDK-ARM (v5 及以上)
- 配置工具: STM32CubeMX (
Test1.ioc) - 工程文件:
MDK-ARM/Test1.uvprojx