Replies: 2 comments 3 replies
|
不愧是玛丽哥~ |
3 replies
|
这个是真的实用啊 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
🔥 家人们,有没有发现:孩子一年级、二年级光语文识字表就差不多 1500 个字,靠课本后面死记硬背,今天记住明天忘?很多家长想按艾宾浩斯曲线复习,但手工排表太痛苦,孩子也没兴趣。
这次咱们玩点实用的——用安信可 WV01-32S 模组做一台会说话的「AI 字词宝」小安,再配上一套自研的 hanzi-memory-mcp 工具。孩子直接喊一声「今天学习哪些汉字」,设备就能按课文顺序、每 10 字一单元、艾宾浩斯 1/2/4/7/15 天复习规律,把当天要新学和复习的字全报出来。学完还能反问「秋字什么时候学」。全语音交互,不用盯着手机屏幕,家长省事、孩子爱玩,妥妥的桌面学习搭子~
🚀 先上成品展示!
点击链接查看:

整机是一个圆润的语音小盒子,顶部扬声器开孔,内部 PCB 集成 WV01-32S 主控、麦克风、喇叭功放和电源管理。
SolidWorks 装配总图:圆形外壳 + WV01-32S 主板 + 扬声器仓位
PCB 3D 渲染:WV01-32S 模组居中,排针、麦克风、扬声器接口一应俱全

结构爆炸图:上盖(扬声器面)+ 下壳(主板仓)两段式装配
📸 实物展示
设计图再漂亮,也得看实物能不能打。下面是已经打印、装配、通电的实机照片。
实机侧面:预留 Type-C 充电/供电口,开口精度刚好,插拔顺畅。
实机另一侧:MEMS 硅麦收音孔,孔径较小,既能拾音又能防尘。
拆开下壳:WV01-32S 圆形主板、喇叭、电池、硅麦全部塞进了这个小圆盒里,空间利用率很高。
电池特写:HJ 602528 3.7V / 380mAh / 1.406Wh 软包锂电,续航足够孩子日常识字使用。
📋 项目卡片
🧰 硬件清单
🍳 硬件设计:原理图与 PCB
主控直接用 WV01-32S,把它的音频、串口、IO 全部拉出来。
原理图:WV01-32S 外围电路,包含麦克风/扬声器接口、UART、BOOT、复位以及 3.3V LDO
关键信号说明:
PCB 布局同样做成圆形,和外壳同形,螺丝孔位对应外壳立柱。
PCB 顶层布线图:圆形板,丝印标出了 IO、MIC、SPK、UART、螺丝孔位置
板子尺寸不大,元件也不多,焊接难度主要集中在 WV01-32S 模组的邮票孔或排针,以及 0402/0603 的阻容。建议先用低温锡膏 + 热风枪吹主控,再手焊大器件。
🎨 结构设计:3D 外壳与装配
外壳用 SolidWorks 画的上下分体式圆盒:
另一视角爆炸图:可以清晰看到主板仓深度和定位柱
SolidWorks 装配树:3D_PCB1、外壳零件、配合关系一目了然
建议用 PETG 打印,韧性更好,摔地上不容易裂。如果追求质感,可以像楼主一样简单喷个色🟣,成品立马高级起来。
🔧 组装
💻 核心代码:hanzi-memory-mcp
AI 平台只负责「听」和「说」,真正决定「今天学什么字」的是一个本地 MCP 工具服务——hanzi-memory-mcp。它用 FastMCP 框架 + SQLite 数据库实现,不依赖大模型幻觉,数据精确到人教版教材的每一课。
字库与记忆排期
数据库从人教版一年级、二年级四册《识字表》按课文顺序整理,去重后共 1407 个生字。每 10 个字 为一个学习小单元,共 141 个单元。新学内容平均分配到 30 天(从 2026-07-20 起),每天约 4
5 个单元、4050 个新字。每个单元在学完后第 1、2、4、7、15 天自动复习,完整周期延伸到 2026-09-02。MCP 工具注册
hanzi-memory-mcp 对外暴露 4 个工具,小智平台可以直接调用:
与 AI 平台的桥接
hanzi_mcp.py以 stdio 方式运行,本地再通过mcp_pipe.py把它桥接到小智的 WebSocket MCP 接入点(wss://api.xiaozhi.me/mcp/...)。这样云端智能体就能像调用普通工具一样调用本地的字库服务,而数据始终存在本地 SQLite,不上传。🌐 小智平台接入与配置后台
登录小智智能体后台,在「扩展能力 → 自定义服务 → MCP 接入点」里填入本地桥接出来的 WebSocket 地址,就能看到
get_today_words等 4 个工具已启用。小智后台:接入点状态「在线」,已启用
get_today_words、get_study_plan、lookup_char、get_unit_detail配置好后,孩子对设备说「今天学习哪些汉字」,小智会判断意图并调用
get_today_words(),拿到结果后 TTS 播报;孩子问「秋字什么时候学」,则调用lookup_char('秋')。🎬 实测效果
本地启动 MCP 服务器并跑了一遍工具调用测试,结果如下:
lookup_char('秋'):正确返回「1年级上册·课文1 秋天」、单元 8,以及 2026-07-21 新学、后续 5 次复习日期。MCP 服务器启动日志与工具调用结果
实际语音体验:孩子放学回家喊一声「今天学习哪些汉字」,设备会先把今天要新学的字读一遍,再提示复习的字。家长不用翻书、不用做表,AI 按艾浩斯曲线自动排好。
🎬 演示视频
点击链接查看:

🚩 踩坑总结
坑1:MCP 服务器不能直接接收中文提问
stdio MCP 服务器只认 JSON-RPC 消息。如果你直接在终端里
python -m hanzi_mcp然后敲「今天学习哪些汉字」,服务器会报json_invalid。正确做法是:用 fastmcp.Client 或真实的小智平台去调用工具。坑2:SQLite 在
\\wsl$网络桥上会 database is locked如果你在 Windows 侧通过
\\wsl$读写 WSL 里的hanzi.db,SQLite 文件锁会异常。正确做法:在 WSL 内部或本地原生目录构建/运行,不要跨\\wsl$直接访问。坑3:fastmcp 3.4.5 的 Client 写法有讲究
不能直接
Client([python, script]),必须显式构造StdioTransport(command=..., args=[...], cwd=...)再传给 Client。坑4:WV01 音频走线要短
麦克风模拟信号如果线太长容易引入底噪,PCB 上 MIC+/MIC- 尽量短且包地,喇叭线也远离数字高速线。
坑5:3D 打印外壳公差要留够
第一次打印我卡扣做得太紧,合盖时费了老大劲;后来把卡扣间隙放大 0.2mm,装配手感明显变好。建议 PETG 打印,螺丝柱内径也要比螺丝小 0.1mm 左右,保证自攻锁紧。
🔭 升级思路|玩出更多花样
💬 最后说两句
小安 最爽的点在于:它不是买了一个智能音箱回家吃灰,而是从「画 PCB」到「写 MCP 工具」再到「孩子真正用起来」全链路可控。每一块板子、每一个生字、每一次复习节奏,都是自己设计的。当孩子突然说出「秋字是 7 月 21 号新学的」时,那种成就感比刷一百个短视频都强。
如果你也在为家里小学生识字发愁,或者想亲手做一个有温度的 AI 小硬件,欢迎参考这个项目。有任何问题评论区留言,一起交流~
All reactions