一、项目前言 整体介绍这是整套RT-Thread 从入门→内核→驱动→协议→上云的收官终极实战项目把前 8 课时所有知识点线程 / 同步 / 定时器 / 消息队列 / PIN/UART/I2C / 传感器 / OLED / 文件系统 / 日志 / MQTT 全部打通做成可直接量产、可烧录落地的全屋环境监测终端。项目实现功能AHT10 温湿度实时采集OLED 本地屏幕实时显示温度 / 湿度 / 设备状态本地 Flash 日志存储FatFS 掉电保存ulog 分级日志调试、故障记录MQTT 定时上报云端手机 / 网页查看云端下发指令控制板载 LED / 继电器断网离线缓存、联网补传数据整机低功耗休眠优化电池供电可用硬件清单主控STM32F103 / STM32L431低功耗优选 L4传感器AHT10I2C显示0.96 寸 I2C OLED联网ESP8266 WiFi 模块存储W25Q64 SPI Flash外设LED 指示灯、继电器、按键供电5V/3.7V 锂电池二、整体软件架构五大业务线程解耦无阻塞、高稳定传感器采集线程周期 2s 读取 AHT10OLED 刷新线程界面刷新、数据渲染本地存储线程批量写入 Flash 日志MQTT 上报表线程联网上报 断网缓存指令解析线程云端下发→控制 LED / 继电器线程之间全部采用消息队列 信号量通信杜绝全局变量乱改、杜绝资源冲突。三、前期工程配置RT-Thread Studio 必开内核线程 / 定时器 / 信号量 / 消息队列 / 内存管理驱动PIN/I2C/SPI/UART组件DFSFatFS 文件系统ulog 分级日志LwIPSAL 网络MQTT 软件包WiFi-AT(ESP8266)硬件开启I2C1 (AHT10OLED)、SPI1 (W25Q)、UART2 (ESP8266)四、核心功能模块源码整合4.1 全局数据结构体统一流转// 环境数据结构体 typedef struct { float temp; // 温度 float humi; // 湿度 uint8_t led_sta; // LED状态 uint8_t relay; // 继电器状态 uint32_t timestamp; // 时间戳 }env_data_t; // 全局消息队列 extern rt_msgq_t env_msgq;4.2 采集线程AHT10复用第 6 课时 I2C 驱动采集完成投递消息队列void collect_thread(void *arg) { env_data_t data; while(1) { aht10_read_data(data.temp, data.humi); data.led_sta rt_pin_read(LED_PIN); data.relay rt_pin_read(RELAY_PIN); // 投递消息队列 rt_mq_send(env_msgq, data, sizeof(env_data_t), 0); rt_thread_mdelay(2000); } }4.3 OLED 显示线程从消息队列取数据刷新屏幕第一行Temp:25.5 ℃第二行Humi:60.2 %第三行Net:Online/Offline4.4 FatFS 本地存储线程收到数据 → 拼接文本 → 追加写入/flash/env_log.txt断网时加大缓存联网后批量补传。4.5 MQTT 云端上报线程JSON 格式上报标准物联网格式{ device_id:room_env_001, temp:25.5, humi:60.2, led:0, relay:1 }支持网络自动重连心跳保活离线数据缓存4.6 云端指令解析订阅主题device/room/cmd支持下发LED_ON / LED_OFFRELAY_ON / RELAY_OFFOLED 切换界面五、ulog 日志全流程集成调试所有模块分级打印采集正常LOG_I网络异常LOG_E温度超限LOG_W日志同时输出串口 本地 Flash 文件方便后期故障排查。六、低功耗优化电池供电关键6.1 软件优化空闲线程开启睡眠模式非关键线程加大延时、降低刷新率MQTT 心跳拉长、减少高频发包屏幕无人时延时息屏6.2 硬件优化STM32L4 超低功耗关闭未使用外设时钟I2C/SPI/UART 空闲休眠WiFi 模组定时唤醒、定时休眠深度休眠 按键唤醒整机功耗可做到待机毫安级电池续航数月七、整机联调 常见问题排查7.1 必用 FinSH 调试命令list_thread //看线程是否卡死 list_msgq //看消息队列堆积 free //查内存泄漏 ls /flash //看日志文件 ifconfig //看WiFi联网 mqtt status //看云端连接7.2 经典坑点解决屏幕闪屏 → 加消息队列缓存、减少刷屏频率温湿度跳变 → 采集多次均值滤波MQTT 频繁掉线 → 增加重连机制、检查设备 ID 唯一性Flash 写坏 → 加大缓存、减少频繁小额写入功耗高 → 关闭闲置外设时钟、开启内核睡眠八、项目成品效果上电自动联网、自动挂载文件系统、自动连接 MQTT本地实时温湿度 设备状态 OLED 显示云端手机小程序 / 网页实时看数据可控云端远程开关灯、开关继电器掉电日志本地保存上电自动补传九、全套课程总结9 课时知识复盘第 1 课环境搭建认识 RT-Thread第 2 课线程管理 同步信号量 / 互斥锁第 3 课时钟节拍 软件定时器 内存管理第 4 课邮箱 消息队列线程间通信第 5 课PIN/UART 标准设备驱动第 6 课I2C/SPI 传感器 OLED第 7 课FatFS 文件系统 ulog 日志第 8 课LwIP 网络 MQTT 上云第 9 课全功能整合→商用物联网终端学完整套你具备独立开发工业 / 消费类物联网终端的完整能力。十、拓展进阶方向拔高加入 Modbus RTU对接 PLC / 工业仪表增加 4G 模组实现远距离物联网接入阿里云 / 华为云 / 腾讯云原生 SDK增加 OTA 远程升级固件云端更新加 AI 阈值判断自动触发报警