描述
<h2><strong>1. 项目功能介绍</strong></h2>
<p>本项目根据艾宾浩斯遗忘曲线和费曼学习法,结合集成生成式AI技术的智能硬件设备,探索英语单词学习的新方法和新体验。</p>
<h3><strong>1.1 艾宾浩斯遗忘曲线 (Ebbinghaus Forgetting Curve)</strong></h3>
<p>艾宾浩斯遗忘曲线是德国心理学家赫尔曼·艾宾浩斯 (Hermann Ebbinghaus) 在1885年通过实验发现的记忆遗忘规律。这个理论为现代学习方法和记忆训练提供了重要的科学依据。它能够帮助学习者科学安排复习时间,在遗忘临界点及时复习;提高学习效率,避免无效重复学习;巩固长期记忆,通过间隔重复强化记忆。</p>
<p><strong>遗忘速度规律:</strong></p>
<ul>
<li>20分钟后:遗忘42%</li>
<li>1小时后:遗忘56%</li>
<li>1天后:遗忘74%</li>
<li>1周后:遗忘77%</li>
<li>1个月后:遗忘79%</li>
</ul>
<p><strong>曲线特点:</strong></p>
<ul>
<li>初期遗忘很快:学习后立即开始大量遗忘</li>
<li>后期趋于平缓:遗忘速度逐渐减慢</li>
<li>呈负指数函数:数学上可用公式表达</li>
</ul>
<p><strong>复习时间安排:</strong></p>
<ul>
<li>第1次复习:学习后20分钟</li>
<li>第2次复习:学习后1天</li>
<li>第3次复习:学习后3天</li>
<li>第4次复习:学习后1周</li>
<li>第5次复习:学习后2周</li>
<li>第6次复习:学习后1个月</li>
</ul>
<h3><strong>1.2 费曼学习法 (Feynman Technique)</strong></h3>
<p>费曼学习法是以诺贝尔物理学奖得主理查德·费曼 (Richard Feynman) 命名的学习方法。核心理念是:"如果你不能简单地解释一个概念,说明你还没有真正理解它"。它强调主动学习,即从被动接受转为主动输出,学习者自己用最简单的语言解释所学的概念 (Explain Simply),通过教学来检验理解程度,发现缺陷 (Identify Gaps) 并重新学习 (Review and Simplify)。这个方法能帮助学习者实现深度理解、长期记忆、灵活运用、发现盲区。虽然费曼学习法特别适合学习复杂概念和需要深度理解的知识领域,但对于需要加强长期记忆的英语单词学习和实际运用,仍非常有借鉴价值。</p>
<h3><strong>1.3 单词聚合动态学习法 (我自己起的名字:P)</strong></h3>
<p>目前市场上的英语单词学习教材和应用程序虽然大都采用了艾宾浩斯遗忘曲线理论,但仍存在如下问题:</p>
<ul>
<li>学习体验单一,缺乏互动,特别是缺少激发学习者主动说出来和智能评价的能力。</li>
<li>学习内容静态,特别是提供的例句都是针对某个单词的例句,并且这些例句是固定不变的。</li>
</ul>
<p>基于上述的艾宾浩斯遗忘曲线和费曼学习法,本项目探索借助智能硬件、大语言模型 (LLM) 和MCP等最新的技术,实现英语单词的智能学习系统,为学习者提供以下的新体验:</p>
<ul>
<li>在单词学习目标范围内,使用LLM将多个单词组合成一条短句或一段短文记忆。学习者能够在上下文环境中一次学习和记忆多个单词,而不是孤立地记忆一个单词。这样,有助于高效地学习单词的使用场景,从而提高写作能力。</li>
<li>通过聊天对话的方式,引导学习者说出来,并通过LLM进行及时的、交互式的评价和指导。 </li>
</ul>
<h2><strong>2. 项目属性</strong></h2>
<p>本项目为原创,是“立创开发板-小智AI训练营” (以下简称“原项目”) 的学习实践成果,可作为学习思澈科技SF32LB52芯片或模组以及大语言模型工程应用的参考项目。</p>
<p>受限于训练营的时间要求,本项目的很多功能还有待改进和实现,欢迎复刻迭代。</p>
<h3><strong>项目组成</strong></h3>
<p>本项目开源内容包括三部分:</p>
<ul>
<li>硬件:请参考本项目。</li>
<li>软件:请参考GitHub项目<a href="https://github.com/techeditor/vocabcube-mcp-server-js.git" target="_blank">VocabCube MCP Server JS</a>。</li>
<li>3D打印:请参考MakerWorld开源项目<a href="https://makerworld.com.cn/zh/models/1567554-sifli-ai-box-wai-ke-v1-0#profileId-1711549" target="_blank">“Sifli AI Box 外壳 v1.0”</a>。</li>
</ul>
<h3><strong>与原项目的区别</strong></h3>
<p>本项目在以下方面对原项目进行了改进和创新:</p>
<ul>
<li>将直插分立元件全部改为表贴元件。</li>
<li>新增 CH340N Type-C 串口通信芯片,实现USB转串口通信,可以直接通过Type-C烧录,无须采用通过RX/TX引脚外接烧录芯片的方式。</li>
<li>新增 TP4056 锂电池管理芯片,实现USB充电管理。</li>
<li>新增 ETA5055 低压差线性稳压器 (LDO),提供单独3.3V高效供电。</li>
<li>采用 1317 8R 2W 腔体喇叭,尺寸更加小巧。</li>
<li>采用 603040 800mAh 3.7V聚合物锂电池,尺寸更加小巧。</li>
<li>采用 5 向按键,在节省空间的同时提供更多的外部按键控制能力。</li>
<li>板上新增 WS2812 LED,并预留 I2C、UART、PWM 接口,便于后续学习和扩展实验。</li>
<li>全面设计了3D打印外壳和组装结构,更加紧凑、稳固、简约、美观。</li>
<li>实现了对MCP的支持。</li>
</ul>
<h2><strong>3. 开源协议</strong></h2>
<p>本项目使用GPL3.0开源协议。</p>
<p>如有问题,请直接联系本人。</p>
<h2><strong>4. 硬件部分</strong></h2>
<p>有关基本功能的实现原理和机制,请参考<a href="https://lceda002.feishu.cn/wiki/B2LLwyC7binHuJkkHGMce03wnWf" target="_blank">原项目的设计教程</a>,此处不再赘述。</p>
<ul>
<li>关于USB充电和串口通信功能,参考了<a href="https://oshwhub.com/li-chuang-kai-fa-ban/li-chuang-huang-shan-pai-sf32lb52-kai-fa-ban-v1-2" target="_blank">【立创·黄山派】SF32LB52开发板</a>的 Power 和 Debug 部分。 </li>
<li>关于训练营的电路设计,请访问 v1.0 版本。</li>
<li>关于改进的电路设计,请访问 v1.1 版本 (尚未发版)。</li>
</ul>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/305967f7807d4a538ff12ae7a70bcdda.png" alt="硬件实物.png"></p>
<h3><strong>电路设计心得</strong></h3>
<p>在本项目实践中,体会到电源规划非常重要。特别是当系统需要供电的元器件较多时,需要注意以下几点。</p>
<ul>
<li><strong>电源有效性:</strong> 在不同条件下,电源是否可用,应当规划好电源的供给路径,确保各路有电。例如:在本项目电路v1.0版本中,LDO (ETA5055) 的VIN原先接来自USB的VBUS_5V,这导致当USB插头拔掉后,LDO无电源输入,也无3.3V输出电压,从而导致 LCD 等器件无供电,最后不得不飞线解决。在新版本中,LDO 的 VIN 直接接电池 VBAT。再如,充电环节是放在电源开关前 (确保关闭电路时仍可给电池充电) 还是电源开关后;使用模块的3.3V输出 (如果模块工作异常,可能无输出) 还是单独LDO输出。CH340N只在USB接入时才有用,因此电源可以直接使用VBUS_5V,使用电池时不带电。</li>
<li><strong>电源容量:</strong> 电源提供的电流是否能够支持后续负载的工作。例如,原项目中采用模块的3.3V输出给LCD和音频功放供电。有同学反馈使用中芯片重启,这有可能是3.3V输出能力有限造成的。再如,如果要带动舵机,不仅要考虑提供峰值几百mA的电流,还要考虑舵机启停时产生的感应电动势对其他电路的影响,因此往往需要单独供电,并对敏感器件加TVS保护。</li>
<li><strong>电源效率:</strong> 当从单一电源转换为多路直流供电,驱动不同负载时,需要考虑电压转换的方式。例如,升压还是降压,LDO (效率低、纹波噪声小、电路结构简单) 还是 DC-DC (效率高、纹波噪声大、电路结构复杂),芯片支持的最大电流是多少,是否需要过流、过温等保护机制,等等。在本项目中,参考黄山派的设计,对于3.7~4.2V到3.3V的降压转换,采用低最小压差的LDO,没有用LM1117 (最小压差1.3V)。</li>
</ul>
<p>除此之外,还有以下一些事项供参考。</p>
<ul>
<li>在元器件布局时,要考虑焊接时元器件和电烙铁刀头之间的干涉,要为电烙铁留足空间。虽然可采用焊台焊接表贴元件,但电烙铁仍是不可缺少的调整工具。例如,在 Type-C 16针插座引脚附近不要安排太小的表贴元器件,否则焊接时,容易被电烙铁扫到粘走。再如,带有塑料外壳的器件不要和其他表贴元器件离得太近,否则在用电烙铁修整这些表贴元器件时,容易把塑料外壳烫坏。</li>
<li>在PCB设计时预留测试点TP。</li>
</ul>
<h2><strong>5. 软件部分</strong></h2>
<p>本项目软件部分涉及以下三部分。</p>
<h3><strong>5.1 固件程序</strong></h3>
<p>限于时间,本项目直接烧录的固件 sf32lb52-xty-ai-tht_v1.3.2。</p>
<h3><strong>5.2 MCP程序</strong></h3>
<p>本项目实现了 MCP 服务器程序,请访问GitHub项目<a href="https://github.com/techeditor/vocabcube-mcp-server-js.git" target="_blank">VocabCube MCP Server JS</a>。示例词汇数据覆盖人教版初中英语单词,每个单词包含:单词、中文释义、音标、课本信息、单元信息,以及复习时间表。</p>
<h4><strong>🚀 快速开始</strong></h4>
<p><strong>1. 环境要求</strong></p>
<ul>
<li>Node.js 18.0 或更高版本</li>
<li>pnpm 包管理器</li>
</ul>
<p><strong>2. 安装依赖</strong></p>
<pre><code class="language-bash"># 或使用pnpm
pnpm install</code></pre>
<p><strong>3. 启动服务器</strong></p>
<pre><code class="language-bash"># 直接启动MCP服务器
node mcpServers/VocabCube/index.js
# 或通过xiaozhi-client启动
xiaozhi start</code></pre>
<p><strong>4. 配置说明</strong></p>
<p>在 <code>xiaozhi.config.json</code> 中添加:</p>
<pre><code class="language-json">{
"mcpServers": {
"vocabCube": {
"command": "node",
"args": ["./mcpServers/VocabCube/index.js"],
"env": {},
"disabled": false
}
}
}</code></pre>
<p>服务启动成功后,在<a href="https://xiaozhi.me/" target="_blank">小智AI控制台</a>的MCP接入点可以看到4个可用的方法。</p>
<img src="https://image.lceda.cn/oshwhub/pullImage/7c3f1b0236344a49b6cf92939d505fee.png" width="500px" alt="xiaozhi_mcp_endpint">
<h4><strong>🛠️ MCP工具接口</strong></h4>
<p>VocabCube提供4个核心MCP工具:</p>
<p><strong>1. get_words_by_range - 按范围获取单词</strong></p>
<p>根据课本和单元范围获取英语单词。</p>
<p><strong>参数</strong>:</p>
<ul>
<li><code>text_book</code> (可选): 课本名称 - "七上"、"七下"、"八上"、"八下"、"九全"、"全部"</li>
<li><code>text_book_subject</code> (可选): 主题名称 - 如"Starter Unit 1"、"Unit 1"等</li>
<li><code>word_count</code> (可选): 返回单词数量,默认为1</li>
<li><code>is_random</code> (可选): 是否随机选择,默认为true</li>
</ul>
<p><strong>示例</strong>:</p>
<pre><code class="language-json">{
"name": "get_words_by_range",
"arguments": {
"text_book": "七上",
"text_book_subject": "Starter Unit 1",
"word_count": 3,
"is_random": false
}
}</code></pre>
<p><strong>2. set_memory_plan - 设置记忆计划</strong></p>
<p>为指定单词设置基于艾宾浩斯遗忘曲线的复习计划。</p>
<p><strong>参数</strong>:</p>
<ul>
<li><code>word</code> (必需): 要设置记忆计划的单词</li>
<li><code>start_time</code> (可选): 开始学习时间,ISO格式,默认为当前时间</li>
</ul>
<p><strong>复习时间间隔</strong>:</p>
<ul>
<li>20分钟后</li>
<li>1天后 </li>
<li>3天后</li>
<li>1周后</li>
<li>2周后</li>
<li>1个月后</li>
</ul>
<p><strong>示例</strong>:</p>
<pre><code class="language-json">{
"name": "set_memory_plan",
"arguments": {
"word": "good",
"start_time": "2024-01-01T10:00:00.000Z"
}
}</code></pre>
<p><strong>3. get_review_words - 获取复习单词</strong></p>
<p>获取当前需要复习的单词列表。</p>
<p><strong>参数</strong>:</p>
<ul>
<li><code>review_time</code> (可选): 复习时间点,ISO格式,默认为当前时间</li>
<li><code>word_count</code> (可选): 返回单词数量,默认为1</li>
<li><code>is_random</code> (可选): 是否随机选择,默认为true</li>
</ul>
<p><strong>示例</strong>:</p>
<pre><code class="language-json">{
"name": "get_review_words",
"arguments": {
"word_count": 5,
"is_random": false
}
}</code></pre>
<p><strong>4. mark_review_complete - 标记复习完成</strong></p>
<p>标记单词复习完成,自动计算下次复习时间。</p>
<p><strong>参数</strong>:</p>
<ul>
<li><code>word</code> (必需): 完成复习的单词</li>
<li><code>review_time</code> (可选): 复习完成时间,默认为当前时间</li>
</ul>
<p><strong>示例</strong>:</p>
<pre><code class="language-json">{
"name": "mark_review_complete",
"arguments": {
"word": "good"
}
}</code></pre>
<h4><strong>💡 使用场景</strong></h4>
<p><strong>场景1: 开始学习新单词</strong></p>
<ol>
<li>使用 <code>get_words_by_range</code> 获取要学习的单词</li>
<li>使用 <code>set_memory_plan</code> 为单词设置复习计划</li>
<li>系统自动安排科学的复习时间表</li>
</ol>
<p><strong>场景2: 进行复习</strong></p>
<ol>
<li>使用 <code>get_review_words</code> 获取当前需要复习的单词</li>
<li>完成复习后使用 <code>mark_review_complete</code> 标记完成</li>
<li>系统自动计算下次复习时间</li>
</ol>
<p><strong>场景3: 按教材学习</strong></p>
<ol>
<li>指定课本和单元,如"七上 Starter Unit 1"</li>
<li>获取该单元的所有单词进行学习</li>
<li>为每个单词设置个性化的复习计划</li>
</ol>
<h4><strong>🔧 开发工具</strong></h4>
<p>在开发软件部分时,使用IDE <a href="https://kiro.dev/" target="_blank">Kiro</a>,以 spec-driven 的方式完成基础功能的开发。</p>
<img src="https://image.lceda.cn/oshwhub/pullImage/6a55d58021ff495fbb950cf135f9a6d2.png" width="600px" alt="Kiro Developing">
<h3><strong>5.3 Xiaozhi 提示词</strong></h3>
<p>访问<a href="https://xiaozhi.me/" target="_blank">小智AI控制台</a>进行设置。</p>
<p>提示词示例:</p>
<pre><code>我是一个叫{{assistant_name}}的英语老师,帮助你学习和记忆单词。
我会从初中单词表中随机提取3~5个单词,组成一句短话。
你背诵这句短句,可以一次学习多个单词。
如果你背诵得对,我会表扬你。
如果你背诵得不对,我会给你提示,鼓励你。</code></pre>
<h2><strong>6. 3D打印部件</strong></h2>
<p>关于3D打印文件和更多说明,请访问开源项目<a href="https://makerworld.com.cn/zh/models/1567554-sifli-ai-box-wai-ke-v1-0#profileId-1711549" target="_blank">“Sifli AI Box 外壳 v1.0”</a>。</p>
<p>相比于原项目的外壳,本项目有以下特点:</p>
<ul>
<li>设计了全新的外观,适配改进的电路板设计,但仍适配原项目电路板的尺寸。</li>
<li>简化了结构,包括前部盖板、后部外壳、LCD屏幕支架、5向按键,共4个部件。</li>
<li>外壳组装采用卡扣设计,不需要螺丝。</li>
</ul>
<p><strong>打印与组装建议:</strong></p>
<ul>
<li>使用 PLA 和 PETG 均可以打印。建议采用透明 PETG 低速高温打印前部盖板,这样可以使电路板上的LED指示灯的光透出来,否则需要单独开孔。</li>
<li>采用M3螺丝固定电路板。</li>
<li>采用M2螺丝固定LCD屏幕支架。</li>
<li>采用双面胶固定电池和腔体喇叭到后部外壳。</li>
</ul>
<h2><strong>7. BOM清单</strong></h2>
<p>请参考本页下方项目详情部分自动生成的BOM清单。</p>
<h2><strong>8. 大赛LOGO验证</strong></h2>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/ba940669c47c4d63bdc4888a004ef041.jpg" alt="3_image with log.jpg"></p>
<h2><strong>9. 演示视频</strong></h2>
评论(2)