一块 360×360 的圆屏,除了显示时间,还能装下多少东西?
这个项目的答案是一只 CLAWD PET:开机是一个可以拖转的应用圆环,里面有养成、相册、音乐、惯性摆钟、小游戏和设置;同一只宠物会跟着你喂食、换装、进化,也能在小智语音里用同一个形象和表情说话。硬件是一块 Waveshare ESP32-S3-Touch-LCD-1.85B,带触摸、六轴传感器、麦克风、扬声器和一颗 500mAh 电池。
它不是一块焊在洞洞板上的演示板,而是一套可以随身带着、每天开机玩的完整固件。
01 / PET
同一只宠物
蛋、七种成长形态、20 种配饰;喂食、抚摸、清洁、休息都会改变状态,换装后身体比例不变。
02 / GAMES
四个小游戏
SNAKE、BRICKS、CLAWD ROLL、CLAWD TAP 收进独立的 GAMES 文件夹,操作和主页一致。
03 / VOICE
会说话的版本
可选的 ESP-IDF 小智语音固件与启动器共用同一只宠物,聊天时保留形态、配饰和中文表情字幕。
一个圆环,六个入口
主页没有桌面、没有图标网格,只有一圈可以手指拖转的应用环。松手吸附、点击打开,GAMES 里的四个游戏再组成第二层圆环,BACK 负责回到上一层。主页不显示左上角时钟,把圆屏的每一寸都留给应用和宠物。


小游戏是认真的
四个小游戏不是贴图演示:SNAKE 是 15×15 网格、按蛇头相对位置点击转向、带转向队列和暂停;BRICKS 有 20 块砖、三条命、左右半屏点击与按住控制;CLAWD ROLL 用六轴倾斜控制;CLAWD TAP 是点击反应小游戏。SNAKE 和 BRICKS 还记本次开机的最高分,退出后回到 GAMES 文件夹,而不是掉回主页。



屏幕之外:相册、音乐和一块会晃的怀表
PHOTOS 里内置了 24 个 Clawd 原始动图,也能读 SD 卡照片;左右滑动翻页,长按约 650ms 切换全屏裁切和完整显示。MUSIC 支持 MP3、WAV、M4A/AAC、FLAC、OGG,实测过一首 24 位 / 48kHz 的 FLAC,I2S 输出约 48,000 帧/秒、写入错误为 0。HYPNO 用 QMI8658 六轴传感器驱动一块金色怀表,跟着设备左右晃动,停手后逐渐衰减。



不用拔卡传歌
设置里打开独立热点,手机会看到一个 BADGE-xxxx Wi-Fi。连上后浏览器打开 192.168.4.1,批量上传音乐和照片;完整写入才进歌单,中断会清理临时文件,同名文件自动加数字后缀。网页会把静态 JPG/PNG/WebP 转成最长边 1280 的 JPG,GIF 保留动画,每首音乐上限 512MiB。


技术侧写
FIRMWARE
两套固件,一个界面
Arduino 启动器放在 factory,ESP-IDF 小智语音放在 ota_0,沿用设备已有分区表;部署工具只写应用,避免覆盖分区表和另一套固件。
RENDER
启动器绕开 LVGL
主系统直接绘制到 PSRAM 中的 RGB565 帧缓冲,再切成 DMA 条带送给 ST77916;每个应用实现同一个 Game 接口,文字、精灵和图标都是自己的绘制原语。
PERF
16.6 → 27 fps
缓存主页几何、缩小圆环描边扫描范围,把整屏 DMA 条带从 8 行加到 32 行(后来到 40 行),实机主页从约 16.6fps 提升到 27.0fps。
BATTERY
电量计不是装饰
BQ27220 按实物 500mAh 配置并写回 NVS;插拔后零电流读数会自动降负载恢复。仅插线或显示 100% 都不能证明正在充电,页面分开显示 USB、CHARGING 和实际电流。
想自己做一个?
源码、硬件说明、编译脚本和踩坑记录都在 GitHub。项目采用 AGPL-3.0,Clawd 美术素材来自另一个 AGPL-3.0 项目,第三方材料在 NOTICE.md 里逐条列出。动手前请先完整备份 16MB 闪存——这块板子的原厂系统和分区布局,比一块空白开发板值得保护得多。
项目状态:实机运行中。续航长测、更多媒体格式和 SD 卡兼容性还在继续。
