发作品签到
标准版

花猫的自制键盘

工程标签

5.3k
0
0
3

简介

使用YD-RP2040(树莓派pico兼容开发板)主控和KMK固件的键盘,带RGB、旋钮和小屏幕,支持热插拔,配列为修改版84配列。

简介:使用YD-RP2040(树莓派pico兼容开发板)主控和KMK固件的键盘,带RGB、旋钮和小屏幕,支持热插拔,配列为修改版84配列。

开源协议

GPL 3.0

创建时间:2023-11-03 17:18:25更新时间:2024-07-02 09:14:18

描述

简介

使用 YD-RP2040(树莓派 pico 兼容开发板)作为主控的键盘,带 RGB、旋钮和小屏幕,支持热插拔。

配列是在 84 配列的基础上修改而来的,修改包括:

  1. 将 Fn 键移到左侧(类似很多笔记本键盘)
  2. 双空格
  3. 在右侧 alt 和右侧 ctrl 间加了 menu 键
  4. F 区和主键区分隔

使用 KMK 固件。

 

初衷只是为了制作一个符合我自己要求的键盘,也是我跟着网上的教程边学边做的第一个 pcb,所以还请多指教!

 

发了一个演示视频在 BiliBili:https://www.bilibili.com/video/BV1Lb4y1M7Zc

 

零件选择注意事项(请务必阅读这一部分)

由于 YD-RP2040 和树莓派 pico 引脚定义不完全相同,在本项目中,区别体现在 35 号引脚,在树莓派 pico 上是 ADC_VREF 而在 YD-RP2040 上是 GP29。因此,板子上有一个版本选择,短接版本选择的 1, 2 引脚可以将 LCD 的 CS 引脚接地,适用于树莓派 pico(理论上只有一个 SPI 设备时可以直接把 CS 接地),而短接版本选择的 2, 3 引脚可以将 LCD 的 CS 引脚连接到开发板的 35 号引脚,适用于 YD-RP2040。由于我手头没有树莓派 pico进行测试,因此不保证使用树莓派 pico或其他兼容开发板时 LCD 可以正常工作。

尽管看起来板子上的开发板支持贴片安装,但是由于位置,贴片安装时不能连接 usb,所以需要使用排针排母连接。这里我使用的是塑高 3.5mm 的排母和配套排针安装以降低高度。

LCD 屏幕我使用的是一个 1.14 寸 134x240 的 SPI 屏幕,理论上其他接口相同的屏幕也可以用,但需要修改程序进行适配。LCD 屏幕同样使用塑高 3.5mm 的排母和配套排针安装以降低高度。

RGB 使用 WS2812B 3528 反贴灯,86 个,为了方便布线,PCB 上相邻的两行灯的安装方向是相反的,焊接灯的时候要格外注意安装方向。(旁边有黑点的焊盘是 GND,我使用的灯的 GND 脚有一个斜角作为标记)

旋钮就是普通的 EC11,1 个;二极管用 1N4148 直插二极管,86 个 ;轴座使用凯华热插拔轴座,86 个。轴体支持 3 脚轴和 5 脚轴,这个就看个人喜好选择了,我使用的是蓝天白云轴。

卫星轴需要 5 个 2U 卫星轴,对于成套出售的卫星轴,应该购买 104 键的版本。(87 键的卫星轴套装只有 4 个 2U 卫星轴)

 

安装固件

键盘使用 KMK 固件,这是一个运行在 CircuitPython 上的开源键盘固件,官网 http://kmkfw.io/

安装步骤:

  1. 安装 circuitpython 到开发板,完成后,可以看到电脑多出了储存设备“CIRCUITPY”
  2. 安装 neopixel, adafruit_st7789 到开发板
  3. 克隆 KMK 储存库,复制储存库中的 kmk 文件夹 到储存设备“CIRCUITPY”
  4. 克隆 https://github.com/calico-cat-3333/calicocat-keyboard 储存库并将 code 文件夹中的所有文件复制到储存设备“CIRCUITPY”
  5. 删除“CIRCUITPY”储存设备中自带的 code.py
  6. 拔出后重新插入开发板即可完成安装,此时将不再出现储存设备“CIRCUITPY”。如果需要更新或者修改,可以按住 ESC 键或短接 GP15、GP27 并插入键盘,即可再次访问储存设备“CIRCUITPY”,在开发板刚插电时(对于 YD-RP2040,这时开发板上的 ws2812 灯会闪烁 3 下)按一下 BOOT 或 RST 按钮将进入 circuitpython 的安全模式,也可以用于访问储存设备“CIRCUITPY”

 

如果不想上面那么麻烦而且不介意可能使用的不是最新版固件,那么可以在安装 circuitpython 并删除 code.py 后直接把 程序-标准版.zip 或 程序-精简版.zip 中的所有文件都复制到储存设备“CIRCUITPY”中,即可完成固件安装。

标准版和精简版分别对应 github 的主分支lite 分支,两个版本的区别是精简版没有超频,默认动画为 STATIC 并且没有包含我自制的动画,没有计算器和 RGB 状态显示两个额外的的屏幕功能(注:计算器是一个试验性功能,不保证稳定)。

 

使用树莓派 pico 或其他 35 号引脚不是 GP29 的 RP2040 开发板时,还需要修改 lcd.py,将其中的 tft_cs = board.GP29 改为 tft_cs = None(注:未经测试,仅供参考)

在我的开发板上,更新到 circuitpython 9 之后刷新 RGB 的函数执行耗时变大了不少,因此目前我推荐使用 circuitpython 8.2.10, 即 circuitpython 8 的最后一个版本。如果你使用 YD-RP2040, 那么你可以在这个链接下载适用于 YD-RP2040 的 circuitpython 8.2.10

 

外壳

外壳为亚克力外壳,使用 M2 铜柱和螺丝固定。我只使用了顶层,定位板层和底层 3 层固定键盘,dxf 文件见附件中的 外壳.zip

外壳文件 使用 swillkb 生成后修改而来。

结构如下图

 

功能

自定义按键:

参考 kmk 文档,修改 mian.py

RGB灯效:

参考 kmk 文档,修改 main.py 和 user_animation.py,其中,main.py 中可以修改默认灯效类型、亮度、饱和度、色相、动画速度等配置,user_animation.py 中可以自定义灯效,默认灯效是我自定义的一个流光灯效。

lcd功能:

显示数字锁定,大写锁定,滚动锁定状态,当前层(常规、Fn、鼠标模式),以及一只装饰用的像素小猫。如果使用标准版固件,还有一个计算器(试验性功能,不保证稳定)和当前 RGB 状态显示,这几个功能可以通过 Fn+ 左右键切换。

试验性的计算器功能:进入后,键盘输入将被拦截,仅被计算器处理,可以使用键盘上的字母、数字、符号键、 shift 键、方向键、Home 键、End 键、退格键、删除键,按 enter 键计算,支持 sin, cos 等函数和 pi, e 两个常量,用法与 math 模块中对应函数相同。不过受限于 circuitpython 只保留 5 位小数,涉及小数的计算误差极大,就不要拿来做高精度的计算了。上下键可以用于浏览计算历史,默认记录 8 条记录,按左右键调整光标位置。计算完成后算式仍然会显示在屏幕上 ,但是此时再进行输入会清空屏幕并重新输入。虽然说叫做计算器,但是它的工作原理是把输入字符串直接丢到 eval 函数里运行,所以可以整一点花活,比如输入 exec('import xxx') 来导入某些东西,或者当作一个受限的 Python 终端使用,不过这可能导致键盘出错甚至损坏,所以请务必谨慎使用。

旋钮:

旋转为调节音量,按下为切换静音状态,Fn+旋转为调节屏幕亮度(需要电脑支持,一般笔记本都支持,台式机不好说)。

Fn键:

Fn+ 功能
F1 上一曲
F2 暂停
F3 下一曲
F4 开关 RGB
F5 增加 RGB 亮度
F6 降低 RGB 亮度
F7 增加 RGB 色相
F8 降低 RGB 色相
F9 增加 RGB 饱和度
F10 降低 RGB 饱和度
F11 增加 RGB 动画速度
F12 降低 RGB 动画速度
1 重置 RGB 亮度、色相、饱和度
2 切换 RGB 灯效
PrintScreen 数字锁定
Insert 滚动锁定
左侧空格 切换鼠标模式
旋钮顺时针旋转 增加屏幕亮度
旋钮逆时针旋转 降低屏幕亮度
上一个屏幕功能(仅标准版)
下一个屏幕功能(仅标准版)

 

注意:控制RGB色相和动画速度的按键在部分灯效中不起作用。调节屏幕亮度功能需要电脑支持,一般笔记本都支持,台式机不好说。

鼠标模式:

按 Fn+左侧空格进入/退出鼠标模式,该模式下,小屏幕上的键盘图标会变为鼠标图标,以指示当前处于鼠标模式中。

鼠标模式下,WASD 为鼠标移动,J 键为鼠标左键,L 键为鼠标右键,分号键为鼠标中键,I 键为滚轮向上滚动,K 键为滚轮向下滚动,除此之外字母区其他按键全部无效。

 

其他的注意事项

  1. PCB 布线使用了自动布线,目前已经用了两个多月,没有什么问题。
  2. PCB 上还有几处设计问题,包括开发板的位置,两个二极管的位置和一个 RGB 灯的位置不对,不过基本不影响使用。
  3. 这个工程中使用的树莓派 pico 元件有问题,在PCB视图中有一个引脚被错误的标注,在本工程中是有一个应为 COL_3 网络的引脚被标注为 COL_4,需要手动修改后才能进行自动布线。我的 PCB 中已经修正了这个错误。
  4. RGB最大亮度在程序中限制为 30(默认最大亮度限制 255),经测试亮度为 20 时这个键盘的电流在 200mA 左右。
  5. 由于 circuitpython 和 kmk 的更新比较频繁,因此如果发现 程序-标准版.zip 或 程序-精简版.zip 中的程序无法使用,请联系我。
  6. 由于亚克力定位板厚度为 2mm,而一般定位板厚度为 1.5mm,定位板卫星轴可能难以安装,可能需要对定位板或卫星轴进行轻微打磨(硬装进去应该也能用,不过我没试过)(亚克力材料比较容易开裂,安装时应注意小心)。
  7. 如果想修改固件进行测试,可以删除boot.py,这样键盘重启后就不会自动隐藏“CIRCUITPY”储存设备和串口,如果需要再次隐藏,把boot.py放回去就行。

 

成品图

整体图

小屏幕旋钮特写

 

更新记录:

2024.7.1 更新:

更新固件,程序.zip 变为 程序-标准版.zip 和 程序-精简版.zip 两个版本,初步适配 circuitpython 9,  更新 kmk 版本,固件本体的更新记录请参考 github 上的提交记录。

添加相关描述,添加推荐使用 circuitpython 8 的提示。

2023.11.12 更新:

更新 程序.zip ,添加了重置 RGB 亮度、色相、饱和度和切换RGB灯效的快捷键。

2023.11.24 更新:

更新 程序.zip :更新 kmk 版本,添加 6 种新自定义灯效。

2023.11.27 更新:

添加KMK的描述,焊接 RGB 灯的注意事项,演示视频链接和一张新的整体图。

2023.12.4 更新:

修正安装固件步骤中的错误,添加进入 circuitpython 安全模式的方法,安装卫星轴的注意事项和不禁用“CIRCUITPY”储存设备和串口的方法。

2023.12.7 更新:

添加元件数量,添加使用树莓派 pico时要修改 lcd.py 的提示。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
外壳.zip
30
2
程序-标准版.zip
21
3
程序-精简版.zip
8
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航