如何打造一款无线振动编码语音键盘
扫描二维码
随时随地手机看文章
第 1 步:项目介绍与预算
为自己打造一款售价低于 40 美元的 Vibe 编码语音键盘
“Vibe编码”近来大受欢迎,使得自然语言编程变得比以往任何时候都更容易掌握。
随着基于语音的工作流程逐渐成为主流,我想要打造一款小巧且具有前瞻性的语音键盘,以顺应这一趋势。Vibe 编程近来发展迅猛,使得自然语言编程比以往任何时候都更加普及易用。
首先,我搜索了大量在线教程,但事实上,没有一个教程能完整地提供制作语音键盘的详细步骤指南。所以,在这篇笔记中,我将一步步地教您如何制作一个语音键盘。
您需要准备相关材料。我们不需要绘制印刷电路板,只需进行简单的焊接和布线就能完成。我们走吧!
第 2 步:准备材料
首先,你需要准备相关材料。你需要 4 个格罗夫-梅克键帽、一个 0.66 英寸的格罗夫-OLED 显示屏、一个小的 XIAO nRF52840 感知模块、一块小电池,总成本不到 40 美元,你就可以自己制作出一款未来的振动编码语音键盘了。
第 3 步:功能验证与人工智能辅助编程
由于我不确定这套硬件能否实现我的想法,所以我又为小机器人购置了一套格罗夫底座,以便对其进行功能测试。
首先,我需要实现的功能是让按钮能够绑定一些快捷键,所以我需要改进按钮的初始化、蓝牙的连接、发送和接收部分。因此,我将我的需求发送给了人工智能,让其来改进这段代码。
请注意,一些具体的问题,比如连接方式、按钮的 S1S2 端口连接到哪个接口,以及您更倾向于哪种触发方式(长按进行录制、松开停止,还是单次按下进行录制、再次按下停止),在这一过程中都需要确认。
我越来越觉得,当Vibe编码创造出某种东西时,我们的职责应该是明确产品的交互方式。哦,对了,思维导图在这个过程中绝对是很有帮助的工具。
这里有一条实用的维贝编程技巧:人工智能的上下文窗口容量有限,所以我们绝不能一次性将其赋予一项艰巨的任务。相反,人类需要将一个庞大的项目分解成若干个小任务。
但当你面对一个复杂的项目,却完全不知道该如何着手实施时,自行将其拆分出来就变得非常困难。这里有一个实用的维贝编程技巧:人工智能的上下文窗口容量有限,所以我们绝不应该一次性将其赋予一项艰巨的任务。相反,人类需要将一个庞大的项目分解成一系列小的子任务。
解决办法很简单:只需将你的大致想法发送给人工智能,告诉它你希望逐步进行操作,然后它就会从步骤 0 开始清晰地列出整个工作流程。
这部分非常适合用于视频录制——您可以直接在这里展示实际的“Vibe编码”界面。
第 4 步:调试蓝牙及按键功能
当然,整个过程并非一帆风顺。在开发过程中,我遇到了一个难题:蓝牙连接成功了,但数据传输却失败了。有时我得反复按按钮很长时间,才最终出现一些文字显示出来。
我先自己进行了一系列的排查,然后将所有这些奇怪的异常现象描述给人工智能进行分析。
问题的根源在于触发逻辑设置不当。起初我以为问题出在按钮信号不稳定上,但经过调整触发机制后,按键的反应和灵敏度都大大提高。我自行不断排查故障,然后将所有这些奇怪的异常行为描述给人工智能进行分析。
一旦其中一个按键完全调试并能正常工作后,我按照同样的思路,依次完成了对其他所有按键的配置工作。就像这样。
第 5 步:添加语音输入模块
在完成蓝牙键盘的代码编写后,我开始添加语音输入模块。
这个阶段充满了诸多波折。起初,我打算使用 XIAO 板上的内置麦克风。我做了大量研究,并确认这个解决方案在技术上是可行的。
但对于更长的语音转文字转换过程而言,仅依靠硬件进行录音是不够的。这需要定制脚本,而那时我在这方面的能力还很欠缺。所以目前我暂时搁置了这个原生解决方案。
不过,这完全是可以实现的,我计划稍后对其进行完善和完成。这个阶段经历了不少波折。起初,我打算使用 XIAO 板上的内置麦克风。我做了大量研究,并确认这种解决方案在技术上是可行的。但对于更长的语音转文字转换,仅依靠硬件录制是不够的。这需要定制脚本,而那时我在这方面的能力还比较欠缺。所以,我暂时把这个原生解决方案搁置一旁了。
当我遇到困难、不知如何继续前进时,我便研究了主流商业产品是如何实现语音输入的。
我发现他们中很多人采用了巧妙的变通方法:他们会启用系统自带的麦克风,并且还能支持连接诸如大疆品牌的麦克风等外部麦克风,以实现流畅的语音输入。当我遇到难题且不知如何继续时,我研究了主流商业产品是如何实现语音输入的。
这让我也采用了同样的方法。其核心理念很简单:只使用一个专用按键来触发系统内置的语音输入和语音识别快捷功能。
第 6 步:添加 OLED 显示屏及屏幕内容设计
后来我决定加一个显示屏。接着我又思考了要在上面展示些什么。我想一个可爱的桌面宠物风格的显示效果。我还提前准备好了像素艺术图像。但将它转换成像素显示格式后……结果完全乱套了。谁能给我解释一下这是怎么回事??
第 7 步:布线与焊接
经过这些充满波折的试验以及成功的功能验证之后,我进入了产品化阶段。
由于布线数量较少且结构简单,所以我省略了印刷电路板的布局设计。
相反,我采用了传统的制造方式:使用导线。由于布线数量较少且并不复杂,所以我省略了印刷电路板的布局设计。
接下来是焊接工作。我需要准备好所有所需的材料:大量的跳线、一个小型可充电电池(强烈建议再加一个用于控制电源的按钮)、一个电烙铁、焊锡丝以及一副耐热手套。
焊接工作实际上要比看起来要复杂得多。让我一步一步地给你讲解清楚。
在开始焊接之前,我根据预先设定的宏定义绘制了一个大致的线路图,如下所示。
好吧,这份草稿实在太粗糙了。让我详细地对其进行修改完善。
最终的设计图布满了密密麻麻的线条,乍一看让人眼花缭乱,而一旦实际进行接线操作时,更是让人感到无比棘手。
我总结了一些能让复杂焊接变得简单的技巧。
最大的难题在于共用线路和电源线的问题。需要六根电线与“小”板上的小插孔进行连接。
这块电路板非常小,引脚更是微乎其微。要把它们整齐地连接起来简直太难了。我总结了一些技巧,以便让复杂的焊接工作变得更容易些。最大的难点在于公共接地线和电源线。需要六根电线与 XIAO 板上的微小引脚进行连接。
但其实有一种更巧妙的方法可以做到这一点:先将一根主电线连接到 XIAO 引脚上。然后将其他六根电线的多余线头剥去,同时也要在主 XIAO 线上保留一些长度。
将六根剥去绝缘层的电线端部紧密地缠绕在主线上,就像包饺子一样。在接头处填入足够的焊锡以使其牢固固定,然后用绝缘胶带将整个接头包裹起来。完成。但其实有一种更巧妙的方法可以做到这一点:先将一根主电线连接到 XIAO 引脚上。然后将其他六根电线的多余线头剥去,同时也要在主 XIAO 线上保留一些长度。
这听起来似乎很简单,但我在焊接过程中还是犯了很多错误。我总结了初学者最容易犯的两个错误:
接头处的焊料不足。务必在焊盘和剥去绝缘层的导线端部都涂抹足够的焊料。我在上一篇帖子中也提到了这个小技巧。
这次我学到了一个新的技巧:将电线平铺在垫子上,以最大限度地扩大接触面积。即便之后你需要将电线弯曲成另一个方向,一个大而平的接触点要比一个细小的单点连接要稳定得多。
第 8 步:三维外壳设计与建模
这些悬空的电线看起来凌乱且暴露在外。接下来,我决定设计一个三维外壳,将所有的电线整齐地隐藏在内部。
设计三维外壳的过程中,仍需要绘制用于组件对接和组装的结构图。
我大致测量了每个部分的尺寸,并开始进行三维建模。这就是我的第一个版本——说实话,它表现得相当糟糕。
之后,我使用了游标卡尺进行精确测量,校准了螺丝孔的位置,并绘制了详细的手绘草图。
然后我将自己手绘的草图发送给了人工智能,希望它能生成一份标准的结构图作为参考。
但人工智能只能处理纯文本,而且它对三维空间逻辑的理解实在是令人困惑。
我一直跟它说要将按键竖着排列,而不是横着排列,但它始终输出的是横排的布局。最后,我用完了一切可用的 AI 使用额度。我几乎要哭出来了。
我真正需要的是一份标准的参考蓝图,以便指导我进行手动的三维建模工作。我原本希望让人工智能直接完成建模任务,但显然这是不可行的。
工业设计需要极高的精度。我需要精确的扣环位置、螺丝孔位置以及实体按键的位置。这些尺寸和布局对于人工智能来说极难控制,对于我来说也很难用简单的文字清晰地描述出来。最终,我亲自完成了整个外壳的模型制作。
3D 打印完成后,我开始进行组装。在这次操作中我又犯了一个愚蠢的错误:我本应该在焊接之前将所有的电线都穿过中间的外壳层,但我事先忘了这么做。
不过也没什么大不了的。由于这是一个固定的组装结构,所以我只是用热熔胶枪把所有部件固定好就行。
最后,以下是成品的照片。
第 9 步:组装与成品
本文编译自hackster.io





