把 Muse 装进 ESP-Mosaico:AI 写固件的开发纪实
公告:铁柱资源网为用户提供最新的原创技术教程,还有电脑技巧以及其他日常信息 游戏资讯等 让我们的生活更加精彩有乐趣!铁柱网原先域名:qq8m.com,部分地区打不开,新域名:qq8m.com,qq8m.com,qq8m.com重要的事情说三遍
铁柱资源网软件仓库把 Muse 装进 ESP-Mosaico:AI 写固件的开发纪实

把 Muse 装进 ESP-Mosaico:AI 写固件的开发纪实

软件仓库傲轩小编2026-10-26 11:39:07818A+A-

本文固件代码由 Anthropic 的 Claude Code 编写,作者负责提出需求、上板验证和做决定。花时间做一个「没用」的东西,是为证明 Vibe Coding 正在硬件领域快速成长——数字世界已到瓶颈,需要物理世界反哺,而这些知识已经具备。

ESP-Mosaico 是乐鑫 2026 年 8 月发布的模块化开发板:摄像头、人体感应、灯等做成小板按需插两侧扩展槽,主控 ESP32-S31,480 方屏,带喇叭和麦克风。它专为「让 AI 编程工具写固件」设计:Flash 前 2 MB 固定 Vibe Mode 固件,管装机、恢复、看日志,一条 mosaico.py 命令装机,开机按橙色 AI 键进入,写坏不变砖。

现在的样子:左槽插着摄像头模块,右槽是交互模块

官方第一句提示词,是让从 esp-mosaico-vibe 仓库下载代码并实现贪吃蛇。10 月 2 日 Meta 开源 Muse Gadgets 设备 SDK,官方推荐硬件也是 ESP32,这块板当天变成一台 Muse 小设备,之后迭代出中文对话、语音播报、拍照和来人问候。

ESP-Mosaico 开发板的布局,以及后面插上去的摄像头和交互模块

先玩起来:贪吃蛇与环境

环境层的坑:ESP-IDF 要钉到提交 7b9cc1ac(6.2.0);国内镜像缺 esp-gsp 1.5.1,改从官方 API 下载核对哈希搭本地库;GSP 场景编译器要求的 0.6.1 未发布,换用 CI 同款的 0.5.0。游戏以 Raylib Lite 编写,同一份 C 代码可跑模拟器与板子:20×18 格子,吃苹果长一节加一分,速度从每秒 6 格升至 12.6 格,撞墙或撞自己即结束。装机先 recover 再 system-update,实测 33.3 fps。代码在 rowline/esp-mosaico-vibe 的 muse-gadget 分支和 rowline/muse-gadget-sdk 的 esp-mosaico 分支(共 9 个提交)。

贪吃蛇在 480 方屏上的样子,模拟器渲染

贪吃蛇结束和暂停的画面

把板子变成 Muse

Muse 是 Meta 的个人 AI 助手,Muse Gadgets 只开源设备端:一套 ESP32 固件加树莓派 Linux SDK,设备需在 gadgets.muse.ai 领 token 并在 Muse App 开发者模式配对。直接编译有三处过不去:固件只认 ESP-IDF 6.0.1,不支持 ESP32-S31;idf.py flash 会覆盖前 2 MB 冲掉 Vibe Mode;api.muse.ai 和 hatch.metaaivm.com 国内直连超时。作者遂把 Muse 做成标准 ESP-Mosaico 应用,走 Vibe Mode 装机。

16 MB Flash 的分法:前 2 MB 留给 Vibe Mode,Muse 住后面

配对信息、Wi-Fi 密码与凭证存于 64 KB 的 nvs,换固件不清空。代码分三层:Meta SDK 只开小口,板子相关全放包装工程。两处关键改动:一是启动钩子,app_main 拉起 Wi-Fi、蓝牙和界面前调用弱符号 muse_gadget_platform_start(),包装工程给强定义,ESP-Iris 设备管理、摄像头、语音、问候在此注册;二是关掉上游「5 分钟连不上云端就自动回滚」机制,未配对的板必然被弹回,固体验收交还 Vibe Mode。

代码分三层:Meta 的 SDK 只开小口,板子相关的全放在包装工程里

联网问题上,路由器不便改网关,就把 Mac Studio 当作旁路由,只让板子一台走它。固件加两个默认为空的配置项:外网下一跳(板子照常 DHCP,外网包经指定主机用 lwIP 钩子转出)与 DNS(每 30 秒检查一次防被改回);Mac 侧 Clash 的 TUN 模式已接管全部公网流量,只需打开 IP 转发。

板子怎么连上 Muse:只让它一台走 Mac,家里别的设备不动

配对卡了一晚,两个问题都与板子无关:iPhone 蓝牙列表不显示 BLE 广播,官方 BSP 功能表也未列蓝牙、无人验证;作者写诊断固件 ble_diag:以 MosaicoBLE-DIAG 广播、每 15 秒扫 5 秒,每轮听到 34 至 37 个设备、最强 -37 dBm。另一问题是 Muse App 开发者模式当时没有添加入口,第二天自行出现。

Muse App 的设备页,开发者模式打开后列出了这块板子

屏幕用 LVGL 绘制,移植选了官方 BSP 而非自写驱动:它识别两个硬件版本、管屏幕供电、接住 Vibe Mode 开机画面,代价是关掉 BSP 自带 LVGL 层只留 Muse 一份。上板后调了三处:图标按实际按键挪位(麦克风对 AI 键、电源对 BOOT 键);电量计 BQ27220 首次开机写配置耗时 8 秒,移至后台;ESP-Iris 同开 TCP 与 USB 时 Wi-Fi 一通即丢 USB,关 TCP 后连续 4 分钟探测都在。

Muse 的五个界面状态在 480 方屏上的样子,模拟器渲染

挪过图标之后的待机和聆听画面

让它有用一点

早上的问候、听我说话、显示 Muse 的中文回复,模拟器截图

第一次中文提问屏幕一片空白:Muse 字幕字体 unscii 只有 ASCII。加入 16 px 中文字体:从思源黑体 CN 取 GB2312 的 6763 个汉字加中文标点共 6953 个字形,转成 884 KB 的 LVGL 二进制字体 cjk_16.bin——OFL 规定改过的字体不能用保留名。另加「宽字体回退」处理基线与换行,字幕缓冲由 400 字节扩到 800 字节(一个汉字占 3 字节)。

Muse 的中文回复,模拟器渲染

拍照由 Muse 主动发起:设备声明支持 camera.capture,Muse 需要画面时就调用,设备拍 JPEG 传回。第一版按文档写 OV3640 直出 JPEG 失败,日志显示 format=JPEG is not supported——传感器实为 SC101IOT。第二版取原始 UYVY 画面用 esp_new_jpeg 编码、逆时针转 90°,实测 1280×720 转正为 720×1280、JPEG 93 KB、编码 326 ms。

Muse 第一次尝试拍照的回复

Muse 只回文字,固件留了两条 TTS 路径:板上离线用乐鑫 esp-sr 中文 TTS「小乐」音色,免费但偏机械;或走 Mac Studio 上的 Qwen3-TTS,Mac 缺席时中文退回小乐。语音数据 2.9 MB 独占分区,应用分区从 14 MB 缩到 11 MB。朗读前需清理:AI 念「诶艾」、Muse 念「缪斯」,「60%」念「百分之 60」,长句按逗号分段、每段不超 80 字。实测 11.1 秒回复 2.3 秒合成完(约实时 4.8 倍)。

喇叭开着时的聆听画面,字幕用中文显示我说的话

回复怎么被念出来:先问 Mac,Mac 不在就用板上的小乐

第一次说话就复位:core dump 显示对话任务里 mmap voice_data 会冻结 flash 缓存,而该任务栈在 PSRAM,冻结期间不许访问 PSRAM 栈;改到主任务映射,并立规「栈在 PSRAM 的任务不得 mmap、写 NVS、读写 flash」。最难的是对话中随机复位:5 份 core dump 出错地址均落在 PSRAM 只读/可读写分界线后 46 KB 内,关掉「代码从 PSRAM 执行」(CONFIG_SPIRAM_XIP_FROM_PSRAM)后,锤子测试 10 分钟零崩溃,片内空闲 64.5 KB,PSRAM 反多出约 4 MB。

右槽交互模块带 PIR 人体感应与 6 颗 WS2812 灯,人走到桌前便亮灯、亮屏、打招呼:开心动画、一声「叮」、按时段显示一句字幕 6 秒,深夜档是「夜深了,Rollin,早点休息」,靠 ntp.aliyun.com 对时区分五档时段。第一版灯亮了不灭——人坐着不动时 PIR 持续报有动静,改为灯与字幕一起亮灭,人再动只让屏幕不休眠;PIR 感应的是动作而非存在,坐一分钟不动再动会被当作新来人。

问候画面的样稿,模拟器渲染

来人问候的状态机:60 秒、10 分钟、6 秒

Muse 就绪时片内空闲内存,只有摄像头时 74.7 KB,加字体、语音、问候后掉到 49.0 KB,文本缓冲等挪到 PSRAM 后回到 65 至 68 KB。

反过来,让 Muse 使唤板子

板子原本被动服务,作者问「你能用 gadget 说话吗」,Muse 答「没有扬声器播放指令」——两者不走 MCP,而是 Meta 的 Home Link 协议:连上时报命令清单,Muse 依清单决定何时调。上游仅五条,作者上报七条:SDK 加 voice.say、voice.configure、display.show_text、display.configure,包装工程加 presence.read、lights.set、ir.send_nec,注册 JSON 从 1.9 KB 涨到 5.5 KB。

Muse 怎么使唤板子:连上时报一份能力清单,之后它想用就调

第一次让「用 gadget 说一句你好」,Muse 还记着旧清单答「说不了话」;新开对话后,板子用 Mac 的声音说了「你好」,0.6 秒说完。「把灯打开」它先找 Philips Hue,经提醒六颗灯亮成暖白;「让灯多彩闪烁起来」,灯轮了一遍颜色停在紫色。

Muse 调板子的命令:先把字画到屏幕上,后来开了灯、让灯轮了一遍颜色

收工与余波

四个 Claude Code 会话里,最后一天下午两个会话在同一块板、同一 build 目录并行:一个做字幕、拍照、语音,一个做来人问候,靠互发消息排队,两边修复最后合进一个固件。交接靠仓库根目录的 STATE.md,按日期倒序只追加。

四天的顺序和期间开过的会话

遗留问题:presence.read 与 ir.send_nec 尚未实际调用,ESP-Iris 的 USB 链路数小时后会卡死,PSRAM 崩溃根因未找到。作者的判断是所有硬件都会被 AI 重做一遍,蓝虫「小白」9800 元起说明硬件制造已到瓶颈:Anthropic 预览 MHS、Meta 发 Muse Charm 掌机、小米开源 Miloco 2.0、MicroDuck 售 399 美元几天卖一万多台,团队 Pollen Robotics 被 Hugging Face 收购后,英伟达又宣布 129 亿美元收购 Hugging Face。作者正制作集合 10 多种感知能力的设备并配套 Agent,Muse 邀请码 9U4831。

本文内容整理自公开网络资讯,仅供参考,版权归原作者所有。

点击这里复制本文地址 以上内容由铁柱网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,版权违规,投诉请联系我们,谢谢!


扫码关注“铁柱网”微信公众号
更多精彩,等你来撩

有好的文章或资源希望【铁柱网】帮助分享推广,猛戳这里我要投稿

支持Ctrl+Enter提交
qrcode

铁柱资源网 © All Rights Reserved.  

嘿,欢迎咨询