开始使用
- 让电脑或手机与 StackChan 处于同一局域网。
- 使用 Chrome 或 Edge 打开 Hi Chan,设备地址可直接用
stackchan.local:8032。 - 连接成功后即可控制应用、舵机、摄像头和设置;语音与点歌需要先进入 AI Agent。
进入 Agent 后直接说唤醒词,再说“播放周杰伦的歌”“放点安静的音乐”或其他指令。
设备 API 没有鉴权,只为局域网使用。不要把 StackChan 的 8032 端口映射到公网。
屏保行情
停留在 Launcher 且约 30 秒没有操作时,会进入行情跑马灯屏保。设备只在屏保显示期间拉取数据,退出后停止请求。
修改显示内容
- 在 Hi Chan 连接设备,打开“设置 → 屏保行情”。
- 选择资产类型并填写代码,最多 8 项。股票、ETF 与指数选“股票”;BTC、ETH 等选“加密货币”;黄金选“大宗商品”并填
GOLD。 - 点击“保存行情”。选择“恢复默认”会重新显示 BTC、SPACEX、MU 和 GOLD。
不同市场可能存在同名代码,显式选择可以避免把股票和加密货币查混。
设备约每 60 秒拉取一次,服务端缓存约 30 秒;行情变化最晚约 90 秒出现。
小智音乐播放服务
说“播放告白气球”会搜索并播放这一首,也支持故事、评书、相声、播客和有声书。
说“播放周杰伦的歌”“放点轻音乐”或“播放某个歌单”,会一首接一首播放,默认随机,直到通过屏幕或控制台停止。
首次播放未缓存的内容需要搜索、下载和转码,开始时间可能比已缓存歌曲长一些。播放过程中会流式传输,不必等整首下载完成。
音乐联动
在“设置 → 声音与特效”中可以分别开关:
- 麦克风造型:唱歌时显示陶醉表情和麦克风动画。
- 张嘴:嘴型跟随播放节奏变化。
- LED 灯带:12 颗灯显示滚动律动。
- 摇头:在点头、摇头和探头动作之间随节奏变化。
- 放歌暂停唤醒:默认开启,可显著降低 CPU 占用;关闭后播放时仍可用唤醒词。
服务地址
“网络歌曲播放服务”留空时会使用内置默认地址,但该服务器需要申请加入白名单后才能使用。目前服务器没有多账号隔离功能,所有人的播放记录会显示在一起,因此暂时不对外分享。建议优先部署自己的兼容音乐服务,并在设置中填写地址后保存。
如需使用,请联系 @tankxu 购买。
默认配置下,音乐播放时会暂停语音监听,因此不能通过“停止播放”口令结束。请点击控制台“停止播放”,或在放歌时双击屏幕停止并回到待机。放歌时单击屏幕不会中断音乐。
触摸、音量与状态灯
头顶最后一块触摸板调音量
使用头顶触摸条最靠后、远离脸部的最后一块:
- 短按后松开:音量 +10
- 长按:音量 −10,继续按住会连续降低
- 每次调整会在屏幕上显示新的音量,范围为 0–100,并保存到设备。
前面的触摸区域仍用于摸头互动;滑动会被识别为摸头动作,不会误调音量。也可以在 Hi Chan 的“控制”页拖动音量条精确调整。
屏幕和唤醒
- Agent 中可说默认唤醒词“你好小智”开始对话。
- 放歌时双击屏幕停止播放并回到待机。
- 非播放状态点击屏幕可进入或切换对话状态。
灯带状态
ESP-NOW 遥控
兼容的 ESP-NOW 遥控器可以直接发送左右、俯仰和移动速度,临时接管 StackChan 的头部舵机;停止发送一段时间后,设备会回正并恢复表情与音乐律动控制。
- 先让 StackChan 的 Wi-Fi 初始化完成,并进入 AI Agent。
- 让遥控器使用相同无线信道;最简单的方式是让两边连接同一个 Wi-Fi。
- 遥控器 ID 为 0 时使用广播控制;其他 ID 用于区分目标设备。
常驻接收目前依赖 Agent 中运行的更新任务,Launcher 页面下可能没有反应;遇到这种情况先进入 Agent。遥控停止后约 10 秒释放接管。
Bilibili App
Bilibili App 可以在 StackChan 上浏览热门视频、分区内容、封面与详情,并播放完整画面和声音。播放页点击画面可显示暂停、进度和返回控制。
B 站视频使用的 H.264 格式无法由 ESP32-S3 直接解码。电脑端服务会实时拉取视频,并转换成 StackChan 可以播放的 320×240 画面和音频;播放期间电脑必须保持开机,且不能让服务休眠退出。
连接电脑服务
- 让电脑和 StackChan 连接同一个局域网,并确认电脑已安装 Python、aiohttp 和 ffmpeg。
- 在配套服务目录运行
PORT=2233 python3 app/bili_srv.py。 - 在 Hi Chan 打开“设置 → 服务地址”,把“B 站转码服务”填写为
http://电脑IP:2233并保存。 - 从 Launcher 打开 Bilibili App。若无法连接,请检查电脑防火墙是否允许局域网访问 2233 端口。
扫码登录自己的账号
配套服务支持生成 B 站登录二维码。使用自己的哔哩哔哩手机客户端扫码并确认后,即可使用自己的账号登录;热门和普通分区不登录也能浏览,账号相关内容需要登录。
账号 Cookie 由配套服务保存在运行它的电脑上,不会写入 StackChan。请只在自己信任的电脑上运行服务,不要把服务端口暴露到公网。
开发中的应用
开发中,完成后会通过后续固件提供。
开发中,功能和支持范围以后续固件为准。
自己推送 OTA 固件
在 Hi Chan 中更新
- 先停止音乐和对话,让设备保持空闲。音频流量会拖慢上传,可能造成看似成功但实际校验失败。
- 打开“OTA”,App 固件选择
stack-chan.bin;图标、字体、唤醒词模型选择generated_assets.bin。 - 上传后等待设备自动重启并重新连接,在诊断页确认构建时间和 SHA 已变化。
修改代码通常只推 App;修改唤醒词、图标或字体必须另外推 Assets。Assets 传输中断时分区可能暂时不完整,重新上传即可恢复。
命令行推荐方式
在已经编译好的 firmware 目录执行:
./push_ota.sh 192.168.x.x
脚本会上传 build/stack-chan.bin,等待设备重启,并把设备返回的 ELF SHA 与本地产物做硬校验,可识别回滚或旧分区造成的“假成功”。
只推 Assets 时:
curl -4 -H "Expect:" --max-time 300 \ --data-binary @build/generated_assets.bin \ http://192.168.x.x:8032/ota_assets
- 首次安装定制固件必须先通过 USB 烧录一次,旧固件本身没有这套 OTA 服务。
- 定制固件不会跟随官方自动更新;后续请使用 Hi Chan 或上述脚本升级。
- USB 分区烧录不要整片从
0x0写入,否则会擦掉 NVS 中的 Wi-Fi、音量等设置。
常见问题
代理软件可能劫持 .local。改填路由器里看到的设备 IP,并保留 8032 端口。
HTTPS 页面访问内网 HTTP 依赖浏览器许可,优先使用 Chrome 或 Edge,并允许本地网络访问。
这是电池供电时的省电机制,不是行情故障。进入过 Agent 后,空闲约 5 分钟可熄屏、约 10 分钟可关机;插 USB 通常不会触发。
为节省设备内存,固件默认关闭蓝牙服务,因此依赖蓝牙的应用目前无法使用。设置页虽然保留了“开启蓝牙”选项,但该功能仍有已知 Bug,后续固件会修复。
先让头部归中;仍无效就重启设备解除保护,切勿用手硬掰。
确认已进入 Agent;首次搜索和转码可能需要十几秒,已缓存内容会更快。
以诊断页构建时间和 SHA 为准,不要只看 9.9.9;重新空闲推送并核对 SHA。