🍄 mushroom · 表情/对话

无设备
💡 固件都在服务器上编译好,Mac 只需要 esptool。每台设备一条命令搞定「下载最新 bin + 自动选端口 + 烧录」。
1
Mac 安装 esptool(只装一次)
必需
pip3 install esptool
新版命令是 python3 -m esptool(无 .py 后缀),子命令 write-flash
⚠ 给新设备首次烧录前,先备份出厂固件(可恢复):python3 -m esptool --chip esp32s3 --port <端口> read_flash 0 0x1000000 factory_backup.bin
2
🍄 mushroom(AMOLED 2.16 初代)烧录
服务器已就绪
1. 让设备进下载模式:按住 BOOT → 按一下 RST → 松开 BOOT(USB 是 /dev/cu.usbmodem*
2. 若本页「USB 串口」正在连接,先点断开(串口同时只能一个程序占用)
3. Mac 终端粘贴运行(也可打开 flash.txt 复制):
cd ~/Downloads && curl -f --noproxy '*' -o childapp_display_v1.merged.bin https://codey-device.jialeli.cloud/download/firmware.bin && python3 -m esptool --chip esp32s3 --port $(ls /dev/cu.usbmodem* | head -1) write-flash 0x0 childapp_display_v1.merged.bin
4. 见 Hash of data verified.按 RST 运行 → 屏幕走到 WiFi OK!Server Connected!,左侧「🍄 mushroom」显示在线。
3
🤖 swagbot(Desk-Emoji 桌面机器人)烧录
服务器已就绪
有自动复位,免按键直接烧(USB 是 /dev/cu.usbserial-*)。命令见 swagbot_flash.txt
cd ~/Downloads && curl -f --noproxy '*' -o swagbot_v1.merged.bin https://codey-device.jialeli.cloud/download/swagbot.bin && SZ=$(stat -f%z swagbot_v1.merged.bin) && echo "downloaded $SZ bytes" && python3 -m esptool --chip esp32s3 --port $(ls /dev/cu.usbserial* | head -1) --baud 460800 write-flash 0x0 swagbot_v1.merged.bin
⚠ 命令里的期望字节数以 swagbot_flash.txt 实时版本为准(每次重新编译会变)。
4
⚫ blackbot(AMOLED 1.8 V2 · 368×448)烧录
固件已编译
适配硬件:CO5300 + CST816S,16MB Flash / 8MB OPI PSRAM。完整说明见 blackbot_flash.txt
cd ~/Downloads && curl -f --noproxy '*' -o blackbot_v1.merged.bin https://codey-device.jialeli.cloud/download/blackbot.bin && python3 -m esptool --chip esp32s3 --port $(ls /dev/cu.usbmodem* | head -1) --baud 460800 write-flash 0x0 blackbot_v1.merged.bin
烧录后按 RST,设备以 blackbot-001 上线。若停在 Connecting...,按住 BOOT 再复位,开始写入后松开。
5
换 WiFi 不用重烧:USB 配网
可选
去左侧「🔌 USB 串口」页 → 连接串口 → 「USB 配网」表单写入新 WiFi(存设备 NVS,断电不丢,优先于固件内置凭据)。
只支持 2.4GHz;mushroom 屏幕无中文字库,SSID 建议 ASCII;iPhone 热点需开「最大兼容性」。

🍄mushroom 状态 esp32-amoled-001 · Waveshare AMOLED 2.16 · 480×480

离线(WiFi 直连或 USB 桥接后自动上线)
语音对话:按设备右键 Key3 开始说话,再按一次结束,千问语音回复(左键 BOOT=vibe 开发需求)。触摸/IMU/按键实况见「🎮 输入监控」页。

🤖Chatbot 表情引擎 点一下,真机屏幕就切到对应表情(带轻动画)

当前状态:idle · 设备:检测中…

💬最近对话(千问)

还没有对话。按右键(Key3)开始说话、再按一次结束,千问会用语音回复。

🎙️设备录音回放

还没有录音。按设备右键(Key3)开始、再按一次结束,录音会自动上传到这里。

🔗给后续对话流程用的接口

切换表情:POST /api/agent/emote body {"state":"thinking"}
Chatbot 闭环:收到语音→listening,调大模型时→thinking,播报回答时→speaking,说完→idle

blackbot 状态 blackbot-001 · Waveshare AMOLED 1.8 V2 · 368×448

离线(烧录后通过 WiFi 或 USB 桥接上线)
已集成 mushroom 的完整能力:本地动态表情、触摸与手势、QMI8658 姿态/晃动、ES8311 麦克风与扬声器、千问语音对话、vibe coding、WiFi 自动重连、USB 配网和 USB 桥接。
本板只有 BOOT 实体键;GPIO18 可外接一个低电平按键作为 Key3。不接外部按键时,可直接使用下面的远程对话按钮。
下载固件 bin 查看烧录命令 ↗

👀blackbot 表情 368×448 本地 30fps 动画

当前状态:idle

💬最近对话(blackbot 与 mushroom 共用 AI 管线)

还没有对话。

🎙️设备录音回放

还没有录音。

🧪首次真机验收

1. 启动页依次出现 blackbotWiFi OK!Server Connected!
2. 点上方表情按钮确认画面完整、无错位和绿边;
3. 触摸和晃动数据在「🎮 输入监控」出现;
4. 点“对话 开始/结束”录一段语音,确认麦克风上传与扬声器回复;
5. 若触摸坐标方向不对,可先在通信日志记录实测方向,再调整固件映射。

✏️写入文字

🗑️清屏

绘制矩形

绘制圆形

☀️屏幕亮度

180

快捷模板

📺屏幕预览 (实时同步)

480 × 480 像素(mushroom)

🔌连接 USB 串口

未连接
累计:0 字节 · 0 B/s

📶USB 配网(免烧录改 WiFi)

先在上方「连接串口」,写入后看下方回显 [cfg] OK,设备自动重启并用新 WiFi 连接(凭据存设备 NVS,断电不丢,优先于固件内置)。只支持 2.4GHz;iPhone 热点需开「最大兼容性」。WiFi 连上后建议停止桥接/断开串口——设备走 WiFi 直连服务器,音频不再经过浏览器,更快更稳。

🔗USB 桥接(无 WiFi 用数据线控制)

未桥接
↑设备→服务器 0 · ↓服务器→设备 0
上方「连接串口并桥接」已自动启动桥接(设备用左侧下拉框选,默认 swagbot-001);这里只用于手动停止或切换设备后重启桥接。烧录固件前先点最上方「断开」。

📥串口收到的数据 (硬件一发数据这里就动)

(等待数据…按设备的 RST 键复位一下,通常会打印启动日志)

🤖swagbot 状态

离线(WiFi 直连或 USB 桥接后自动上线;桥接在「🔌 USB 串口」页)
屏幕画图/写字请用「🖥️ 屏幕控制」页并把目标设备切到 swagbot-001(128×64 单色:颜色非黑即白)。

👀眼睛表情(服务器渲染 fw v7+,改设计免烧录)

任何屏幕绘制指令会自动接管屏幕并停掉表情;点任一表情恢复。

🎬动作编排(表情 × 云台,服务器时间轴)

播放中点表情按钮可随时打断;动作定义在 server.js 的 SWAG_ACTS,加新动作免烧录。

🎤音频 IO(fw v8+:INMP441 麦克风 + MAX98357 功放,引脚免烧录热配)

电平
rms 0 / pk 0
试录会经桥回传约 8 秒,完成后出现试听链接;探引脚可发 {"type":"mic_probe","sck":N,"ws":M,"sd":K}(结果在通信日志)。
💬 AI 对话(千问,无唤醒词)
待机
点「开始说话」后对着 swagbot 说(最长 4 秒)。自动断句开启时说完停顿即自动发送;关闭时需点「说完了」。表情:听=瞪眼 想=眯眼 答=笑。
🎚️ 自动断句(L1 能量 VAD)
VAD
待录音
绿条=实时音量、红线=判定阈值(只在录音期间跳动)。调参心法:尾静音=反应快慢vs抢话(0.5s快/0.8s平衡/1.2s稳);说话被误切→调低底噪倍数或阈值下限;环境音误判说话→调高。参数存设备 NVS,断电不丢。

🕹️头部云台

🔧舵机引脚(已实测固化则不用动)

存入设备 NVS 并立即生效;单脚测试可发 {"type":"servo_test","pin":N}

📷XIAO ESP32S3 CAM 状态

等待摄像头连接…
平台预览经摄像头主动上传,可跨网络安全查看;高帧率 MJPEG 仍直接走设备局域网 IP。

📶摄像头 WiFi 配置

当前网络:等待摄像头上线…
凭据只进入内存命令队列,平台日志不会记录密码。切换失败时可连接救援热点 XIAO-CAM(密码 12345678)访问 192.168.4.1/wifi。

🎯视觉联动:头部跟随与情绪反馈

关闭时摄像头停止向平台上传画面,也不会驱动机器人。
有趣互动:
视觉引擎
正在启动…
人脸
等待画面
方位
情绪
分析耗时
云台位置
X90 / Y90
Bot 当前反馈
视觉联动已关闭
已按真机方向校准:人物在画面左侧时机器人向右转。手动操作云台后自动跟随暂停5秒;安全范围 X=15~165°、Y=45~135°。
📷
暂无摄像头设备

👆触摸坐标 (CST9217 · 上报范围 0~466)

最近触摸:

👋触摸手势 (服务器识别:点击/双击/滑动/长按)

在设备屏幕上 点一下 / 快速点两下 / 划一下 / 按住不动 试试
tap ×0 double ×0 swipe ×0 long ×0

🌀IMU(QMI8658 六轴) 晃动 ×0

加速度
X
Y
Z
陀螺仪
拿起设备晃一晃:数值会动,超过 0.45g 触发「晃动」,屏幕表情变哭脸 2.5s

🔘物理键 (右 Key3=对话:按一下开始、再按一次结束(录音=侧耳听) · 左 BOOT=vibe 开发需求(录音=😠);中间 PWR 是电源键别长按。⚠️ 左右已按真机纠正:Key3 在右、BOOT 在左)

松开
BOOT (左·vibe)
松开
Key3 (右·对话)
录音状态:

📜输入事件流

🔌
等待设备连接...