mcpField
X
xiao-webcam-ap

xiao-webcam-ap

github.com/shain1912开发059 次安装6 周前更新
代码仓库

关于 xiao-webcam-ap

用于在 WiFi 热点模式下构建 XIAO ESP32S3 摄像头 Web 应用的技能,适合无需路由器或互联网的课堂与团队演示。提供数据采集器和推理查看器模板,可选择其一或同时构建。

主要功能

  1. 01热点模式 Web 应用配置
  2. 02采集器与推理查看器模板
  3. 03SSID、密码和频道设置
  4. 04使用 arduino-cli 编译与上传
  5. 05AP 与串口验证指南

适用场景

  1. 01在课堂采集摄像头图像
  2. 02从设备查看 Edge Impulse 推理结果
  3. 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 — 务必先询问用户

绝不要擅自编造凭据。请询问用户:

  1. AP 名称(SSID) — 例如 XIAO_01。如果是课堂批量部署,建议使用编号名称 (XIAO_01..XIAO_20)。
  2. AP 密码 — 至少 8 个字符(WPA2 最低要求)。如果用户想要开放式 AP, 请明确确认。
  3. 信道(可选,默认 1)— 同一房间内有多块开发板时,请分配到 1 / 6 / 11 (开发板 N → 信道 [1,6,11][N % 3]);20 块开发板都使用信道 1 会互相干扰。
  4. 使用哪个应用:采集器、推理查看器,还是两者都用。

步骤 2 — 根据模板生成草图

assets/ 中的模板是已验证可用的代码 — 不要重写:

  • assets/web_collect.ino.tpl — 数据集采集器(图库 + 删除 + ZIP 下载)
  • assets/web_infer.ino.tpl — 实时推理查看器(需要在 sketchbook 中安装 <project>_inferencing Edge 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°;推理模板已对此进行补偿(顺时针旋转特征,已通过实际测试验证)。

评论

支持 Markdown