如何使用ESP32与enorasisCore实现颜色识别
在第一部分中,您使用MIT App Inventor在浏览器中训练了模型,并将其部署到安卓应用中。本项目延续相同的训练流程,但输出结果会直接发送到一个**5美元的ESP32开发板**,而非手机屏幕。
将彩色纸张对准摄像头 → 浏览器识别颜色 → ESP32内置LED灯无线亮起。无需云服务、无需Python、无需应用商店,仅需一张纸、一块电路板和蓝牙即可实现。
适合人群:
• 希望展示桌面级STEM实验(如科学展、开放日或首次AI课程)的教师
• 已经完成第一部分的学生,或初次接触硬件的新手
• 喜欢即时反馈的创客:更改类别名称、重新训练,LED灯即刻跟随变化
**这个项目值得45分钟的原因:**
✅ 与第一部分相同的无代码训练界面,无需额外平台学习
✅ 可见成果:现场所有参与者都能看到LED灯的变化
✅ 教师只需刷一次固件;学生仅使用浏览器操作
✅ 实用BLE技术——采用专业物联网的无线理念,成本极低,适合初学者
第一步:刷入ESP32(教育者版——一次性操作)
学生在上课前从不打开Arduino IDE,因此请提前在家中或前一天晚上将板子刷入固件。
获取固件
从这里下载.ino文件
下载Arduino ESP32开发板(通过设备管理器):
找到端口
右键单击开始按钮,选择“设备管理器”,然后展开“端口(COM和LPT)”。
现在选择开发板和端口:
开发板设置
这两个设置容易出错,请上传前仔细核对:
· 开发板:Waveshare ESP32-C3 Zero
· 启动时启用USB CDC:已启用
上传完成后,按下复位键。板上的LED灯应依次闪烁红→蓝→绿→熄灭。这表示板子已准备就绪。
固件中的课程名称
打开“课程设置”模块。以下四个字符串必须与之后的培训课程名称完全匹配,注意拼写和大小写:
// 课程设置 — 颜色演示
#define CLASS_A "red"
#define CLASS_B "green"
#define CLASS_C "blue"
#define CLASS_D "nothing" // 空位 → LED关闭
小贴士:红色不能写成Red。ESP32会逐字比较文本内容。
✅ 第一步完成!保持板子连接USB电源。在学生连接之前关闭串口监视器,否则可能阻塞ESP32-C3的BLE功能。
第二步:训练颜色模型
完成了第一部分吗?你已经了解了采集样本和训练模型。这次:四个颜色类别,选择ESP32硬件,且无需导出步骤——我们通过蓝牙实时连接。
打开机器学习环境
1. 前往并登录(与第一部分相同的免费账户)。
2. 打开硬件选择器,选择ESP32卡。
3. 你进入机器学习环境。
创建四个类
4. 点击“添加新班级”四次。
5. 准确命名:红色、绿色、蓝色、无(全部小写)。
“无”这一类别非常重要——它告诉LED在桌面为空时关闭。如果没有这个设置,电路板可能会一直保持上次的颜色亮起。
采集样本
对于红色、绿色和蓝色:选择对应颜色类别,将纸张靠近摄像头,移动角度和距离的同时,点击“采集样本”15到20次。
对于“无”:选择“无”,将摄像头对准空桌——没有手,也没有纸张。拍摄15到20张纯背景的照片。
像第一部分一样进行变化:不同的光照和背景有助于模型专注于颜色本身,而不是你身后的墙壁。
训练与快速测试
6. 点击“训练模型”,等待5到15秒。
7. 切换到测试模式,将每张纸举高——在继续之前确保达到80%以上的准确率。
第三步:连接并运行实时演示
这才是关键所在——纸张颜色输入,LED颜色输出,无线传输。
8. ESP32 通过数据线连接 USB(非仅充电模式)。
9. 在 ML 环境中,点击连接 ESP32。
10. 在浏览器中选择 ESP32-enorasisCore 的蓝牙对话框。
11. 开启实时摄像头。
12. 按红色纸张 → 屏幕显示红色,LED灯变红。重复操作以实现绿色和蓝色。
13. 清空桌面 → 无内容 → 关闭LED灯。
本文编译自hackster.io





