关于 xiao-webcam-ap
用于在 WiFi 热点模式下构建 XIAO ESP32S3 摄像头 Web 应用的技能,适合无需路由器或互联网的课堂与团队演示。提供数据采集器和推理查看器模板,可选择其一或同时构建。
主要功能
- 01热点模式 Web 应用配置
- 02采集器与推理查看器模板
- 03SSID、密码和频道设置
- 04使用 arduino-cli 编译与上传
- 05AP 与串口验证指南
适用场景
- 01在课堂采集摄像头图像
- 02从设备查看 Edge Impulse 推理结果
- 03无路由器环境下演示摄像头应用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shain1912/ esp32-skills --skill xiao-webcam-ap安装后在 Claude Code 中输入/xiao-webcam-ap确认已加载。
附带文件assets/web_collect.ino.tplassets/web_infer.ino.tpl
详细介绍
XIAO ESP32S3 摄像头 Web 应用 — AP(热点)模式
开发板会变成自己的 WiFi 热点。客户端连接到开发板的 SSID,页面始终位于 **http://192.168.4.1**。无需路由器,也无需互联网。 最适合课堂使用:每位学生或每个小组使用一块开发板,网络彼此隔离。
先阅读 xiao-esp32s3 技能(同一仓库)以了解基础工作流程和注意事项
(尤其是:必须启用 PSRAM 标志、DTR 导致复位卡住时的恢复方法,以及演示必须持续运行时不要读取串口)。
步骤 1 — 务必先询问用户
绝不要擅自编造凭据。请询问用户:
- AP 名称(SSID) — 例如
XIAO_01。如果是课堂批量部署,建议使用编号名称 (XIAO_01..XIAO_20)。 - AP 密码 — 至少 8 个字符(WPA2 最低要求)。如果用户想要开放式 AP, 请明确确认。
- 信道(可选,默认 1)— 同一房间内有多块开发板时,请分配到 1 / 6 / 11
(开发板 N → 信道
[1,6,11][N % 3]);20 块开发板都使用信道 1 会互相干扰。 - 使用哪个应用:采集器、推理查看器,还是两者都用。
步骤 2 — 根据模板生成草图
assets/ 中的模板是已验证可用的代码 — 不要重写:
assets/web_collect.ino.tpl— 数据集采集器(图库 + 删除 + ZIP 下载)assets/web_infer.ino.tpl— 实时推理查看器(需要在 sketchbook 中安装<project>_inferencingEdge Impulse 库)
将模板复制到 <workspace>\<NN>_<name>\<NN>_<name>.ino(文件夹名 = ino
名称),然后按原样替换占位符:
| 占位符 | 含义 | 示例 |
|---|---|---|
__AP_SSID__ | 热点名称 | XIAO_01 |
__AP_PASS__ | 热点密码(至少 8 个字符) | class1234 |
__AP_CHANNEL__ | WiFi 信道(不加引号的纯数字) | 6 |
__EI_PROJECT__ | 仅用于推理应用 — Edge Impulse 项目名称,须与已安装的 <name>_inferencing 库文件夹匹配 | clfc |
步骤 3 — 编译并上传
arduino-cli compile --fqbn esp32:esp32:XIAO_ESP32S3 --board-options PSRAM=opi <SKETCH_DIR>
arduino-cli upload -p COM4 --fqbn esp32:esp32:XIAO_ESP32S3 --board-options PSRAM=opi <SKETCH_DIR>
PSRAM=opi 是必需的(摄像头 + 模型需要 PSRAM)。如果刚刚替换了 Edge Impulse 库,推理构建需要使用 --clean。
步骤 4 — 验证
# the AP should appear in a WiFi scan within ~15 s of flashing
netsh wlan show networks | Select-String "<AP_SSID>"
(netsh 会缓存扫描结果 — 请等待 20 秒后重试,再判断是否失败。)
此项检查需要 PC 配备 WiFi 适配器,而许多台式机并没有配备。 如果 netsh wlan show interfaces 报告 Wireless AutoConfig 服务未运行,或者 Get-NetAdapter 只列出以太网,那么无论重试多少次,都无法看到 AP — 这台机器在硬件上就无法扫描。不要因此判定刷写失败。请改用串口(如下),或让用户用手机检查。
通过串口监视开发板
在 AP 模式下,PC 通常根本无法访问开发板,因此串口往往是你唯一可用的验证方式。请使用 xiao-serial-monitor 技能。
mon # interactive, port auto-detected
.\scripts\mon.ps1 -Seconds 15 # bounded, for your own debugging
成功时的预期输出:
AP started. Open http://192.168.4.1
Collector ready
如果出现 Camera init failed,则表示草图在启动 AP 之前就停止了 — 开发板是未配备 Sense 摄像头模块的普通 XIAO ESP32S3,或者模块没有安装到位。一直扫描 SSID 也无法发现这一问题;读取一次串口日志即可。
以下两点值得了解,无需刻意避免:
- 打开端口会通过 DTR 重置开发板,因此日志会从启动开始重新输出。 这正是你需要的 — 这些行只会在启动时打印一次。
- 如果开发板后来卡住,只显示 ROM 横幅
(
xiao-esp32s3的注意事项 8),重新运行arduino-cli upload即可清除该状态, 并让草图继续运行以用于演示。
如果用户想亲自查看,请把命令交给他们,而不要通过工具调用启动交互式监视器 — 它不会退出。在 Claude Code 中,! 前缀会在用户的会话中运行命令:
! <path>\mon.ps1
完整检查:将设备连接到 AP 并打开 http://192.168.4.1 — 请告知用户,从他们自己的手机/PC 连接时,该设备在连接期间会失去互联网;这是 AP 模式下的正常现象。
说明
- 采集页面:捕获的图像会保存到浏览器内的图库中(包含标签徽章和单张删除功能;“전체 ZIP 다운로드”会生成可供 Edge Impulse 使用的
label.N.jpg文件)。刷新页面会清空图库——请先下载 ZIP。 - 推理页面:显示覆盖整帧的彩色框、顶部标签和各类别的置信度条(分类模型——要显示每个对象的位置框,需要使用 FOMO 模型)。
- 摄像头画面会旋转 90°;推理模板已对此进行补偿(顺时针旋转特征,已通过实际测试验证)。