发帖
10 0 0

【电子DIY作品】搓一个会「教字」的 AI 小老师——小安 字词宝 + WV01-32S

bzhou830
论坛元老

87

主题

1864

回帖

1万

积分

论坛元老

积分
18433
电子DIY 534 10 7 天前
[i=s] 本帖最后由 bzhou830 于 2026-7-31 09:02 编辑 [/i]

【电子DIY作品】搓一个会「教字」的 AI 小老师——小安 字词宝 + WV01-32S

🔥 家人们,有没有发现:孩子一年级、二年级光语文识字表就差不多 1500 个字,靠课本后面死记硬背,今天记住明天忘?很多家长想按艾宾浩斯曲线复习,但手工排表太痛苦,孩子也没兴趣。

这次咱们玩点实用的——用安信可 WV01-32S 模组做一台会说话的「AI 字词宝」小安,再配上一套自研的 hanzi-memory-mcp 工具。孩子直接喊一声「今天学习哪些汉字」,设备就能按课文顺序、每 10 字一单元、艾宾浩斯 1/2/4/7/15 天复习规律,把当天要新学和复习的字全报出来。学完还能反问「秋字什么时候学」。全语音交互,不用盯着手机屏幕,家长省事、孩子爱玩,妥妥的桌面学习搭子~

🚀 先上成品展示!

整机是一个圆润的语音小盒子,顶部扬声器开孔,内部 PCB 集成 WV01-32S 主控、麦克风、喇叭功放和电源管理。

assembly_sw.png

SolidWorks 装配总图:圆形外壳 + WV01-32S 主板 + 扬声器仓位

pcb_3d.png

PCB 3D 渲染:WV01-32S 模组居中,排针、麦克风、扬声器接口一应俱全

enclosure_exploded_1.png

结构爆炸图:上盖(扬声器面)+ 下壳(主板仓)两段式装配

📸 实物展示

设计图再漂亮,也得看实物能不能打。下面是已经打印、装配、通电的实机照片。

photo_typec_side.jpg

实机侧面:预留 Type-C 充电/供电口,开口精度刚好,插拔顺畅。

photo_mic_side.jpg

实机另一侧:MEMS 硅麦收音孔,孔径较小,既能拾音又能防尘。

photo_internal.jpg

拆开下壳:WV01-32S 圆形主板、喇叭、电池、硅麦全部塞进了这个小圆盒里,空间利用率很高。

photo_battery.jpg

电池特写:HJ 602528 3.7V / 380mAh / 1.406Wh 软包锂电,续航足够孩子日常识字使用。

photo_board_speaker.jpg

裸板调试:安信可 Ai-WV01-32S 模组已经焊好,喇叭引线接出,先裸跑验证语音通路再上壳。

📋 项目卡片

  • 核心大脑:安信可 Ai-WV01-32S 模组(BL616,RISC-V + Wi-Fi 6 + BLE 5.0)
  • 交互方式:MEMS 硅麦采集语音 + 8Ω 扬声器播报
  • 供电方案:5V Type-C 输入 → LDO 转 3.3V,内置 380mAh 锂电,支持边充边用
  • 外壳工艺:SolidWorks 建模 + 3D 打印(PETG/PLA 均可)
  • 字库来源:人教版(部编版)一年级、二年级语文识字表
  • 记忆算法:艾宾浩斯遗忘曲线,学习后第 1/2/4/7/15 天复习
  • AI 平台:小智(xiaozhi.me)智能体,通过 MCP 协议接入本地工具
  • 上手难度:★★★☆☆(会画 PCB、会打印、会烧录就行)

🧰 硬件清单

部件名称 具体型号/规格 说明/来源
🧠 主控 Ai-WV01-32S 安信可 Wi-Fi 6 + BLE 5.0 模组,FCC ID: 2ATPO-AIWB2
🎤 麦克风 MEMS 硅麦(MIC+/MIC-) 接 WV01 音频输入
🔊 扬声器 8Ω 1W 小喇叭(SPK+/SPK-) 顶部出声孔
⚡ 电源 AMS1117-3.3 / DC-DC + Type-C 5V 输入降压到 3.3V
🔋 电池 HJ 602528 3.7V 380mAh 软包锂电,续航约 2~3 小时连续播放
🛠️ 外壳 Φ约 60mm 圆盒 SolidWorks 建模,3D 打印
📟 PCB 双层板,1.6mm,圆形 嘉立创白嫖
💻 上位机 hanzi-memory-mcp FastMCP + SQLite 自研
☁️ AI 后端 小智智能体 通过 MCP 接入点调用本地工具

🍳 硬件设计:原理图与 PCB

主控直接用 WV01-32S,把它的音频、串口、IO 全部拉出来。

schematic.png

原理图:WV01-32S 外围电路,包含麦克风/扬声器接口、UART、BOOT、复位以及 3.3V LDO

关键信号说明:

  • SPK+/SPK-:喇叭差分输出,功放由 WV01 内部音频链路驱动;
  • MIC+/MIC-:麦克风差分输入,用于语音唤醒和对话;
  • TX/RX:调试串口,烧录固件和查看运行日志;
  • IO2/IO5/IO11/IO12/IO17:预留 GPIO,可接按键/指示灯;
  • DP/DN:USB 差分,Type-C 口用于供电和程序下载;
  • LDO 部分:5V 输入降压到 3.3V,给 WV01 和外设供电;电池通过保护板直接接到 5V 母线,实现移动使用。

PCB 布局同样做成圆形,和外壳同形,螺丝孔位对应外壳立柱。

pcb_layout.png

PCB 顶层布线图:圆形板,丝印标出了 IO、MIC、SPK、UART、螺丝孔位置

板子尺寸不大,元件也不多,焊接难度主要集中在 WV01-32S 模组的邮票孔或排针,以及 0402/0603 的阻容。建议先用低温锡膏 + 热风枪吹主控,再手焊大器件。

🎨 结构设计:3D 外壳与装配

外壳用 SolidWorks 画的上下分体式圆盒:

  • 上盖:正面开扬声器出声孔阵列,边缘做倒角;
  • 下壳:内部有 PCB 卡位、螺丝柱、麦克风/按键预留孔;
  • 装配方式:上盖和下壳通过卡扣 + M2 螺丝固定。

enclosure_exploded_2.png

另一视角爆炸图:可以清晰看到主板仓深度和定位柱

enclosure_exploded_1.png

SolidWorks 装配树:3D_PCB1、外壳零件、配合关系一目了然

建议用 PETG 打印,韧性更好,摔地上不容易裂。如果追求质感,可以像楼主一样简单喷个色🟣,成品立马高级起来。

🔧 组装

  1. 焊板子:先把 WV01-32S、LDO、阻容、排针焊好,检查 3.3V 输出;
  2. 装麦克风/喇叭:把硅麦和喇叭焊到对应焊盘,注意正负极;
  3. 接电池:把 602528 锂电接到电源输入,注意极性和保护板;
  4. 装 PCB 进下壳:对准螺丝孔和定位柱,用 M2 螺丝固定;
  5. 合上盖:卡扣压紧,螺丝从底部拧紧;
  6. 烧录固件:用博流 Bouffalo Lab 烧录工具把 WV01 固件烧进去,复位后连 Wi-Fi 进小智平台。

拆机内部总览
组装完成后的内部结构,电池贴在下壳侧壁,主板居中,喇叭正对出声孔。

💻 核心代码:hanzi-memory-mcp

AI 平台只负责「听」和「说」,真正决定「今天学什么字」的是一个本地 MCP 工具服务——hanzi-memory-mcp。它用 FastMCP 框架 + SQLite 数据库实现,不依赖大模型幻觉,数据精确到人教版教材的每一课。

字库与记忆排期

数据库从人教版一年级、二年级四册《识字表》按课文顺序整理,去重后共 1407 个生字。每 10 个字 为一个学习小单元,共 141 个单元。新学内容平均分配到 30 天(从 2026-07-20 起),每天约 45 个单元、4050 个新字。每个单元在学完后第 1、2、4、7、15 天自动复习,完整周期延伸到 2026-09-02

# build_database.py(节选)
START_DATE = date(2026, 7, 20)   # 学习计划开始日期
TOTAL_DAYS = 30                  # 新学内容分成 30 天
UNIT_SIZE = 10                   # 每个小单元 10 个字
EBBINGHAUS_INTERVALS = [1, 2, 4, 7, 15]  # 艾宾浩斯复习间隔(天)

MCP 工具注册

hanzi-memory-mcp 对外暴露 4 个工具,小智平台可以直接调用:

# hanzi_mcp.py(节选)
from fastmcp import FastMCP
import hanzi_query

mcp = FastMCP("HanziMemory")

@mcp.tool()
def get_today_words(date_str: str = "") -> dict:
    """今天要熟悉哪些字/词?返回当日新学 + 复习生字。"""
    return hanzi_query.get_daily_words(date_str)

@mcp.tool()
def get_study_plan() -> dict:
    """查看整个学习计划概况。"""
    return hanzi_query.get_plan_overview()

@mcp.tool()
def lookup_char(char: str) -> dict:
    """查询某个生字:出自哪一课、属于第几单元、哪几天学习和复习。"""
    return hanzi_query.lookup_char(char)

@mcp.tool()
def get_unit_detail(unit_id: int) -> dict:
    """查询某个小单元的生字明细及安排。"""
    return hanzi_query.get_unit_detail(unit_id)

if __name__ == "__main__":
    mcp.run(transport="stdio")

与 AI 平台的桥接

hanzi_mcp.pystdio 方式运行,本地再通过 mcp_pipe.py 把它桥接到小智的 WebSocket MCP 接入点wss://api.xiaozhi.me/mcp/...)。这样云端智能体就能像调用普通工具一样调用本地的字库服务,而数据始终存在本地 SQLite,不上传。

🌐 小智平台接入与配置后台

登录小智智能体后台,在「扩展能力 → 自定义服务 → MCP 接入点」里填入本地桥接出来的 WebSocket 地址,就能看到 get_today_words 等 4 个工具已启用。

backend_config.png

小智后台:接入点状态「在线」,已启用 get_today_wordsget_study_planlookup_charget_unit_detail

配置好后,孩子对设备说「今天学习哪些汉字」,小智会判断意图并调用 get_today_words(),拿到结果后 TTS 播报;孩子问「秋字什么时候学」,则调用 lookup_char('秋')

🎬 实测效果

本地启动 MCP 服务器并跑了一遍工具调用测试,结果如下:

  • 4 个工具全部正常注册;
  • 2026-07-30(第 11 天):新学 5 个单元 50 字 + 复习 20 个单元 200 字;
  • lookup_char('秋'):正确返回「1年级上册·课文1 秋天」、单元 8,以及 2026-07-21 新学、后续 5 次复习日期。

mcp_runtime.png

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 左右,保证自攻锁紧。

🔭 升级思路|玩出更多花样

  1. 电子墨水屏版:加一块 1.54/2.13 寸 E-Ink,把当天要学的字显示出来,孩子边看边听边写;
  2. 拼音与组词扩展:数据库里再加拼音、例词字段,让孩子不仅识字,还能听读音、造句子;
  3. 学习打卡记录:把每天的完成情况写回 SQLite,家长后台看学习时长和正确率;
  4. 多用户切换:支持哥哥、妹妹各自的学习计划,按声纹或按键切换;
  5. 离线语音唤醒:把「今天学习哪些汉字」做成本地唤醒词,减少云端依赖,响应更快。

💬 最后说两句

小安 最爽的点在于:它不是买了一个智能音箱回家吃灰,而是从「画 PCB」到「写 MCP 工具」再到「孩子真正用起来」全链路可控。每一块板子、每一个生字、每一次复习节奏,都是自己设计的。当孩子突然说出「秋字是 7 月 21 号新学的」时,那种成就感比刷一百个短视频都强。

如果你也在为家里小学生识字发愁,或者想亲手做一个有温度的 AI 小硬件,欢迎参考这个项目。有任何问题评论区留言,一起交流~

──── 0人觉得很赞 ────

使用道具 举报

hanzi-memory-mcp  厉害厉害
好玩,学会了,请问孩子从哪里领~
molun 发表于 2026-7-30 18:10
hanzi-memory-mcp  厉害厉害

iiv 发表于 2026-7-30 21:02
好玩,学会了,请问孩子从哪里领~

带上你的女友,我教你怎么手搓一个
玛丽哥太强了

妖哥冲起来
有个屏幕就更棒了 👍
WT_0213 发表于 2026-7-31 14:24
有个屏幕就更棒了 👍

找不到合适好用的圆形屏幕
玛丽哥天下第一帅~
您需要登录后才可以回帖 立即登录
高级模式
12下一页
统计信息
  • 会员数: 31239 个
  • 话题数: 42370 篇