Skip to content

v0.10.0 · M5Paper Color port

Choose a tag to compare

@op7418 op7418 released this 22 May 15:07
· 3 commits to main since this release

这个 release 把 ai-desk-card 从单设备扩到双设备:原有的 M5Paper V1.1(灰阶)+ 新增的 M5Paper Color(Spectra 6 真彩)。Skill 自动识别 device profile,所有 17 个 widget 在两块板上都有对应的渲染。

新增:M5Paper Color 完整支持

新硬件参数差异:

V1.1 Color (新)
SoC ESP32 ESP32-S3R8(native USB CDC)
4.7" 540×960 16 灰阶 4" 600×400 Spectra 6 真彩 6 色
刷新 GC16 ~700ms / A2 ~150ms ~15-19 秒/帧全刷
触屏 GT911 3 物理键 + 电源键
M5EPD M5Unified + M5GFX + NeoPixel
传感器 SHT40 温湿度 / ES8311 codec + 1W speaker + MEMS 麦 / 2× RGB LED / IR 发射

移植要点

  • env:paper-color 新增到 platformio.ini,跟 env:cardbuild_src_filter 隔离
  • src/paper_color/ 完整目录(独立的 wifi_bridge / http_server / frame_buffer / sht40 / audio / feedback_led)
  • 横屏 setRotation(1):native 是 400×600 portrait,必须强制 landscape
  • 字号 ≥ 20pt 强制:Spectra 6 上小字断成 dither pattern
  • M5GFX 在 Spectra 6 panel 上必须 setEpdMode(epd_fastest),否则 silently 不刷新

新模块

  • daemon/card_render_color.py — 600×400 RGB → M5GFX 自动量化到 Spectra 6 palette。17 个 widget 全部 color 化,每个有独立 accent header 颜色
  • daemon/card_render_settings_color.py — Color 版设置页(fw / panel / battery / Wi-Fi / SHT40)
  • daemon/card_render_sleep_color.py — Color 版电子名片(彩色 chip + 蓝色头像圆 + 黑底 footer)
  • daemon/color_daemon.py — 全新持久 daemon,bind 0.0.0.0 + IP allowlist,接 agent /widget POST + 设备 /button POST 闭环

Color 专属功能

  • ambient widget — 设备 SHT40 实时温湿度,0 cloud / 0 API
  • /beep endpoint — 3 个预设(chime / urgent / alert)+ 自定义 freq+ms。日程 deadline 临近时可让 Agent 响铃
  • 3 物理键顶=睡眠 / 下左=刷新 / 下中=设置(已验过 M5.BtnA/B/C 在这块板上跟物理位置反着对应)
  • RGB LED — 按下时白闪 ack,/frame 进来时绿色 pulse 提示"数据到了"
  • deep sleep + 唤醒 — 顶键推名片 + esp_deep_sleep。三个 user 键 + 电源键都能唤
  • 状态栏新按键 hint — 底栏左侧显示 顶 睡眠 左 刷新 中 设置(黄字物理位置)

Skill 路由

SKILL.md 新增 Step 1.5 device profile 识别 — 如果 /heartbeat 返回 device == M5PaperColor,agent 走 flows/08_paper_color.md。所有 V1.1 流程不变。

v0.9 → v0.10 升级

cd ~/.claude/skills/ai-desk-card && git pull
# 如果你买了 M5Paper Color
pio run -e paper-color -t upload  # USB-C 插上设备
python3 daemon/color_daemon.py --device-ip <IP>

V1.1 用户不需要做任何事 — env:card / card_daemon.py / 所有 V1.1 flow 完全不动。

已知限制

  • 两个 daemon 不能同时跑(都占 127.0.0.1:9877)。用户按手上哪块设备选启动哪个。
  • Color daemon 还没并入主 daemon,是独立进程。下一版可能做统一 router。
  • Color 板 17 秒全刷限制下,高频更新 widget(比如秒级 status 字段)不实用。规划层面 Color 适合"每分钟看一眼" 的低频信息。

完整变更见 HANDOVER.md