今天,我将构建一个基于RaspberryPiPico的数字键盘。我将构建一个带有20个开关的简单正交数字键盘。然后我将介绍如何在其上安装KMK固件。
KMK可以安装在基于python的微控制器上。用于一些简单的永固,从数字键盘一直到全键盘。
补给品
树莓派Picox1
钥匙开关x20
二极管x20
键帽x20
金属丝
机箱和硬件
焊接
工具
3D打印机(案例)
剪线钳
钳
镊子
砂纸(可选)
烙铁
计算机
USB线
第1步:准备外壳
我在Ender3Pro上用PLA设计并打印了这个外壳。(点击可下载)
外壳设计为最多使用6个M3螺钉,但对于数字键盘,我只会使用其中的4个。
边缘有点粗糙,所以我将底座拧到顶部并湿磨边缘以使其平滑。在短短几分钟内,我就可以摆脱颠簸,并给表壳带来漂亮的哑光效果。
第2步:安装硬件组件:
我将把所有硬件集中到一个步骤中。正如我在第1部分视频中提到的,我在这里有一些建议,希望你能比我更轻松。
我已经包含了上面的电路图。
安装开关
将所有开关放在同一方向。这样可以更轻松地在下一步中安装二极管。
弯曲二极管
弯曲二极管的一条腿,使其与二极管的其余部分成45度角。在引脚上设置这个角度,使二极管沿着开关的一侧向下流动
将另一条腿弯曲90度。这可以用来连接到其余的二极管行
请查看此步骤中的另一个图表,以更好地了解我的意思。
安装二极管
将二极管放置到位,然后先将二极管焊接到开关上
将90度腿焊接到其余的二极管行
每次都仔细检查二极管的方向,方向并不重要,重要的是它们都相同
修剪掉多余的引线
连接列
我使用了一根实芯线,每隔14毫米切割一次绝缘层,然后你可以滑动绝缘层,为开关上的另一个引脚留出小间隙。
我还从一端移除了大约1英寸(25毫米)的绝缘层,以腾出足够的空间来移动绝缘层
将电线放置到位时,我在要连接的引脚之间曲折。这有助于在我焊接时将其固定到位
剪掉多余的电线
将行和列连接到Pico
我使用了一些长段绞合线连接到每一行和每一列
然后将它们连接到Pico。引脚号不是超级导入,只是跟踪它们,以便以后在代码中使用它们
第3步:什么是KMK?
“KMK是一款功能丰富且对初学者友好的固件,适用于在CircuitPython中编写和配置的计算机键盘。”
这是他们的GitHub的链接,其中包含更多信息。
我使用它是因为我发现使用QMK(大多数键盘的标准)要容易得多。可以在任何计算机上以纯文本形式完成。
第4步:在Pico上安装软件
有了所有硬件,我们需要在Pico上安装一些软件。这一切都可以在不安装任何其他软件的情况下完成。
我从KMKGitHub入门页面了解了如何完成所有这些操作。如果您想要更多信息或功能,那里有大量有用的信息。
需要的第一个软件是来自Adafruit的最新CircutPythonUF2。
只需下载文件
按住Pico上的启动按钮并将其插入计算机(如果它一直提示错误,请尝试在不按住启动按钮的情况下将其插入)
Pico应显示为外部存储设备
将下载的UF2文件拖到Pico。它本身应该弹出,然后在几分钟后重新连接一个新名称
接下来是KMK固件“安装”。
从他们的GitHub获取最新版本的KMK(从入门页面获取此链接)。
它将下载一个.zip文件。提取所有文件。
在文件夹中找到KMK文件夹和boot.py文件。
从文件夹中复制这些项目并将它们粘贴到Pico
第5步:添加Code.py
到目前为止,KMK的舞台刚刚准备好,现在我需要告诉它实际要做什么。
这是使用code.py文件完成的。Pico上应该有一个,如果不只是创建一个名为code.py的新文件。
幸运的是,大部分的辛勤工作已经完成。我只需要从GitHub页面复制示例代码并将其粘贴到code.py文件中。我使用NotePad++编辑此文件,但这也可以在NotePad中完成
我需要给这个文件我的数字键盘的所有细节。
为此,我首先需要为代码提供第11行和第12行中行和列的引脚号。
接下来我需要更改二极管方向,因为代码需要知道一切是如何设置的。我将它从COL2ROW更改为ROW2COL。
现在大部分方法都完成了,我只需要添加键映射。或者什么键应该在哪里。我参考了这个网页来找到我可以使用的所有关键代码。我不会详细介绍这一点,但请看一下我使用的内容并进行您想要的任何更改。
代码:(可点击下载)
print("Starting")
import board
from kmk.kmk_keyboard import KMKKeyboard
from kmk.keys import KC
from kmk.matrix import DiodeOrientation
keyboard = KMKKeyboard()
keyboard.col_pins = (board.GP0,board.GP1, board.GP2, board.GP3) # try D5 on Feather, keeboar
keyboard.row_pins = (board.GP4, board.GP5, board.GP6, board.GP7, board.GP8) # try D6 on Feather, keeboar
keyboard.diode_orientation = DiodeOrientation.ROW2COL
keyboard.keymap = [
[KC.A, KC.LSHIFT, KC.TAB, KC.KP_PLUS,
KC.N7, KC.N8, KC.N9, KC.KP_ASTERISK,
KC.N4, KC.N5, KC.N6, KC.KP_MINUS,
KC.N1, KC.N2, KC.N3, KC.KP_SLASH,
KC.BSPC, KC.N0, KC.KP_DOT, KC.KP_ENTER,
]
]
if __name__ == '__main__':
全部0条评论
快来发表一下你的评论吧 !