1. 所选任务介绍
1-1 任务名称
环境预测与场景联动
1-2 任务要求
- 采集温度、湿度、环境光强、震动或倾斜等两种及以上的数据,并间隔一段时间持续记录。
- 使用TensorFlow等平台训练轻量模型,输出风险预测。
- OLED上显示各传感器实时值、预测评分与趋势、过往采集数据等,三色LED用红黄绿显示风险等级。
- 预测风险从正常转为可能存在风险时,蜂鸣器短鸣3次进行提示,三色LED由绿色转为黄色;预测风险达到阈值时蜂鸣器长鸣警报,三色LED转为红色。
- 可选加分:可自行设计桌面监测站3D外壳,需提交结构文件与装配说明。
2. 项目介绍
2-1 项目名称
基于ESP32的博物馆温湿度和光照检测报警系统
2-2 项目场景
博物馆文物需要合适的温湿度条件,否则可能会导致文物损坏,同时部分文物对光照敏感,所以禁止游客拍照,本项目基于该场景建立了基于ESP32的温湿度检测系统,同时检测闪光灯等强光影响
当预测风险从正常转为可能存在风险时,蜂鸣器短鸣3次进行提示,三色LED由绿色转为黄色,提示可能存在风险, 预测风险达到阈值时蜂鸣器长鸣警报,三色LED转为红色,提示文物处于危险状态,危险消除后蜂鸣器停止警报,LED转为绿色安全状态
3. 硬件介绍
- ESP32XIAOS3开发板
- DHT11温湿度传感器
- 三色LED
- 4按键模块
- 蜂鸣器
- OELD显示屏
4. 方案框图和项目设计思路介绍
4-1 方案框图

4-2 项目设计思路介绍
4-2-1 项目总体设计
本项目基于ESP32+FreeRTOS实时操作系统构建一个环境监测与风险预测系统。系统通过温湿度传感器和光敏传感器采集环境数据,并利用嵌入式AI模型进行风险预测,同时通过OLED、RGB_LED和蜂鸣器进行信息显示和报警提示。
系统采用FreeRTOS 多任务架构,将不同功能模块划分为独立任务运行,各任务之间通过互斥锁和事件组实现数据共享与同步,以保证系统运行的实时性与稳定性。
系统主要实现以下功能:
- 实时采集环境温度、湿度和光照强度
- 基于AI模型进行环境风险预测
- OLED实时显示系统状态与数据
- LED和蜂鸣器进行风险报警提示
- 历史数据记录与查询
- 系统运行状态监测
4-2-2 系统软件架构
系统软件采用 ESP32双核处理 + FreeRtos多任务架构设计,根据功能划分为三个任务模块:
- 系统运行监控任务(核0)
- 人机交互任务集(核0)
- 数据采集与处理任务集(核1)
各任务相互独立,通过共享数据结构和FreeRtos同步机制、互斥锁实现任务之间的通信。
4-2-3 系统任务设计
- LED系统系统监控任务
- 该任务用于检测系统运行状态,LED以2秒为周期持续闪烁,用于判断系统是否正常运行
- 按键检测任务
- 系统使用四个按键进行菜单控制,用户可通过按键实现页面切换、数据查看、历史数据浏览等功能
- OLED菜单显示任务
- OLED用于显示数据信息如温度、湿度、光照强度、AI风险预测结果以及历史数据和调试信息,信息展示全面具体。
- 风险提示任务
- 该任务根据 AI 模型预测结果进行风险提示,风险等级划分为三级:
- 安全(risk < 1):三色LED显示为绿色,蜂鸣器关闭
- 警告(1 ≤ risk < 2):三色LED显示为黄色,蜂鸣器短鸣3声
- 危险(risk ≥ 2):三色LED显示为红色,蜂鸣器持续报警
- DHT11温湿度采集任务
- 该任务周期性读取 DHT11传感器数据,采集数据包括温度和湿度,采集的数据存入数据集中
- 光敏传感器采集任务
- 该任务通过 ADC 采集环境光照强度,采集的数据存入数据集中
- AI风险预测任务
- 该任务运行嵌入式AI模型进行风险预测,模型输入温度、湿度和光照强度,进行AI预测分析,输出风险值risk
- 历史数据保存任务
- 该任务用于保存和更新系统数据(温湿度,光强,AI风险预测等级)
4-2-4 系统运行流程
系统整体运行流程如下:
- 系统上电启动,ESP32 初始化硬件资源
- 初始化系统外设,包括 LED、OLED、定时器等模块
- 创建
FreeRTOS各个功能任务 - 传感器任务周期采集温度、湿度和光照数据
- 采集数据写入系统数据结构与历史数据缓存
- AI 模型任务读取传感器数据并进行风险预测
- 预测结果更新系统风险值
- OLED显示任务实时更新环境数据和风险状态
- RGB_LED与蜂鸣器根据风险等级进行提示或报警
- 历史数据任务保存当前数据并更新历史记录
- 系统持续循环运行,实现环境监测与风险预测功能
5. 调试软件及使用的编程语言说明、软件流程图及关键代码介绍
5-1 编程语言与开发环境
本项目主要使用C 语言进行开发,基于ESP32平台和FreeRTOS实时操作系统实现系统多任务管理。
开发与调试工具如下:
工具 | 作用 |
|---|---|
| 代码编写与项目管理 |
| ESP32 官方开发框架 |
| 实现系统多任务调度 |
| AI模型训练与数据处理 |
| 构建与部署风险预测模型 |
串口调试助手 | 查看系统运行日志与调试信息 |
在模型训练阶段,使用 Python 构建并训练环境风险预测模型,并将训练完成的模型转换为TensorFlow Lite格式,再部署到ESP32进行推理计算。
5-2 软件流程图

5-3 关键代码介绍
FreeRTOS任务创建:系统使用FreeRTOS创建多个独立任务,并将任务绑定到不同CPU核心执行。
xTaskCreatePinnedToCore(task_LED , "task_LED" , 4096 , NULL , 1 , NULL , 0) ;
xTaskCreatePinnedToCore(Task_Key4 , "Task_Key4" , 4096 , NULL , 1 , NULL , 0) ;
xTaskCreatePinnedToCore(Task_Menu , "Task_Menu" , 4096 , NULL , 1 , NULL , 0) ;
xTaskCreatePinnedToCore(Task_DHT11, "Task_DHT11" , 3072 , NULL , 1 , NULL , 1) ;
xTaskCreatePinnedToCore(Task_Gray , "Task_Gray" , 4096 , NULL , 1 , NULL , 1) ;
xTaskCreatePinnedToCore(Task_AI_Predict , "Task_AI_Predict" , 4096 , NULL , 1 , NULL , 1) ;
xTaskCreatePinnedToCore(Task_RGY_Buzzer , "Task_RGY_Buzzer" , 4096 , NULL , 1 , NULL , 1) ;
xTaskCreatePinnedToCore(Task_History_Save , "Task_H_Save" , 4096 , NULL , 1 , NULL , 0) ;
6. 功能展示图及说明
系统运行后可以实现以下功能(更多细节展示可以观看项目视频):
6-1 OLED实时数据显示
OLED界面实时显示环境监测数据,包括:
- 温度
- 湿度
- 光照强度
- AI预测风险值

6-2 风险等级可视化提示
系统通过 RGB LED 和蜂鸣器对风险进行提示:
风险值 | LED颜色 | 蜂鸣器 |
|---|---|---|
安全 | 绿色 | 不报警 |
预警 | 黄色 | 短鸣三声提示 |
危险 | 红色 | 持续报警 |
当环境风险升高时,系统会自动发出报警提示

6-3 历史数据记录
系统会保存最近一段时间的环境数据,用户可以通过 OLED 菜单查看历史记录,从而了解环境变化趋势。

6-4 串口调试信息
系统通过串口输出调试信息,包括:
- 传感器数据
- AI预测结果
便于开发者进行系统调试和性能分析。

7. 项目中遇到的难题及解决方法
在项目开发过程中遇到了一些问题,主要包括以下几个方面。
7-1 多任务数据冲突问题
在多个任务同时访问传感器数据时,可能出现数据错误或系统异常。
解决方法:使用FreeRTOS提供的互斥锁对共享数据进行保护,确保同一时间只有一个任务访问数据。
7-2 AI模型在嵌入式平台部署问题
训练完成的模型体积较大,直接运行会占用较多内存。
解决方法:使用TensorFlow Lite将模型转换为轻量化格式,并减少模型参数规模,使其能够在ESP32上运行。
7-3 任务运行效率问题
如果所有任务运行在同一CPU核心上,可能会导致系统响应变慢。
解决方法:利用 ESP32的双核特性,将人机交互任务和数据处理任务分配到不同CPU核心上运行,提高系统运行效率。
8. 心得体会
通过本项目的设计与实现,加深了对嵌入式系统开发流程的理解,并掌握了FreeRTOS多任务系统的基本使用方法。
在项目开发过程中,不仅需要完成硬件驱动编写,还需要进行软件架构设计与任务划分,这对系统整体设计能力提出了更高要求。同时,通过将AI模型部署到嵌入式设备上,也进一步了解了嵌入式人工智能的基本实现方法。
在调试过程中,通过分析任务运行状态和系统日志,逐步定位并解决问题,提高了问题分析与调试能力。
总体来说,本项目将嵌入式系统、实时操作系统以及人工智能技术结合在一起,是一次综合性较强的实践过程,对提升工程实践能力具有重要意义。
9. 资源分享
网盘链接:
通过网盘分享的文件:代码文件
链接: https://pan.baidu.com/s/1h7dmoQ7_pVKC3pxzUEQvEQ?pwd=6666 提取码: 6666
--来自百度网盘超级会员v4的分享