基于Raspberry Pi Pico实现的数字键盘设计方案

描述

  今天,我将构建一个基于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__':

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分