一、项目介绍
2026年第6届“寒假在家一起练”共推出4款平台,涵盖FPGA、树莓派(RP2040、RP2350B)、ESP32-S3人工智能平台,本项目采用esp32s3来进行开发。任务名称是环境预测与场景联动。使用模块包括ESP32‑S3 Sense、DHT11 温湿度传感器、光敏电阻、旋转电位器、三色 LED 模块、蜂鸣器等。要求是
1. 采集温度、湿度、环境光强、震动或倾斜等两种及以上的数据,并间隔一段时间持续记录。
2. 使用TensorFlow等平台训练轻量模型,输出风险预测。
3. OLED 上显示各传感器实时值、预测评分与趋势、过往采集数据等,三色 LED 用红黄绿显示风险等级。
4. 预测风险从正常转为可能存在风险时,蜂鸣器短鸣3次进行提示,三色LED由绿色转为黄色;预测风险达到阈值时蜂鸣器长鸣警报,三色LED转为红色。
硬件平台使用的是人工智能硬件实验套件以Seeed XIAO ESP32-S3 Sense为核心主控,集成摄像头、麦克风等AI感知能力,搭配13个精选功能模块,支持灵活组合,理论与实践深度融合,套件覆盖从电路基础、信号采集、算法控制到AI应用的完整教学链路,将部分功能模块组装后可看到一辆小车。适用于电子信息、计算机、自动化等专业的AI硬件教育,学生通过亲手搭建语音助手、人脸识别门禁、智能小车等项目,在实践中深刻理解AI的工作原理,让抽象的AI算法变成可以看得见、摸得着的智能硬件,也可用于大创项目、创客教育等AI硬件实践。
二、设计思路及流程
首先通过esp32连接各类输入传感器,按照edgeImpluse要求的格式进行输入数据的准备,同时根据数据进行二分类,分别是正常NORMAL和风险DANGER。数据存储在csv文件中,之后导入edgeImpluse进行模型训练,经过不断优化及参数调整得到正确率在94%左右的训练结果,从而导出模型zip文件(附件中)。之后再新建项目用于实时数据预测。
本项目使用vscode编程,安装插件platformio,相比arduino开发具有编译速度快,提示信息明显等优势。下面是项目流程图。

首先通过传感器采集数据写入到csv文件,并且根据设定的阈值对数据进行分类,数据值比较高的设为报警,否则设置为正常状态,随后把数据导入到edgeImplus进行训练,下图是原始数据及训练页面的截图展示,label有normal和danger两大类。

经过训练后的模型导出到项目的lib目录里面(ei-eetree-arduino),用于实时检测数据并进行分类。另外lib目录里面包含了点灯科技app的库(blinker-library),用于通过app实时显示esp采集的温湿度信息以及分类结果。


三、重点代码介绍
最后是项目代码中的实时检测部分,主要是ESP32每秒采集外设的实时数,然后使用训练好的模型据根据输入的数据进行预测,通过预测结果如果判断为危险danger,再进行阈值的判断,如果超过阈值则蜂鸣器长鸣警报,三色LED转为红色,否则存在风险时,蜂鸣器短鸣3次进行提示,三色LED由绿色转为黄色。如果预测结果为正常normal则三色LED由绿色,关闭蜂鸣器。
for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.5f\r\n", result.classification[ix].label, result.classification[ix].value);
}
//检测当前数据是否有效且超阈值,若超阈值,屏幕与蜂鸣器警报
if (result.classification[0].value > result.classification[1].value){
if(result.classification[0].value>0.995 && (buffer[0]>26 || buffer[2]>4000 || buffer[3]>98)){
ledOn(2);
printf("⚠️ 报警: 温湿度超出阈值,蜂鸣器一直响");
tone(BUZZER_PIN, frequency, 0);
}else{
ledOn(3);
printf("报警: 温湿度danger,蜂鸣器响3次");
buzzAlarm();
}
} else {
noTone(BUZZER_PIN);
ledOn(1);
}
四、实物展示
下面是实物展示图片及APP实时数据采集预测页面

五、项目小结
通过本次项目实践,个人对模型的训练和使用有了自己的理解,对xiao-esp32s3有了更深刻的认识,但是在管脚的处理上容易混淆,比如D9对应的不是GPIO9,而是对应GPIO8。因此后续工作中要加强对原始文档的了解,不能想当然的以固有思想来开发项目。