站内搜索
发作品签到
最丐61+3键机械键盘(附原理讲解)
标准版

最丐61+3键机械键盘(附原理讲解)

简介

采用价格低廉的沁恒CH551(CH55X家族中的丐中丐)没ADC,内存0.75+10,我就挑战不加io扩展,作出最低成本的61键机械键盘

简介:采用价格低廉的沁恒CH551(CH55X家族中的丐中丐)没ADC,内存0.75+10,我就挑战不加io扩展,作出最低成本的61键机械键盘

开源协议

GPL 3.0

创建时间:2020-03-19 18:12:48更新时间:2023-02-07 09:37:52

描述

键位设置:

未按下Fn:

61键默认.png

按住Fn(多媒体功能在0.5版本添加):

按下FN.png

设计要求:

虽然是挑战最低成本,最简电路,但下限还是有的:

1.全键无冲

2.带灯(我可以不焊,但你不能没有)

3.而且是双色led灯

4.带HUB,方便插无线鼠标(距离近,信号更强更稳定),U盘,不过因EDA对等长优化不够好,已砍

(在另一个版本已实现,尽请期待)

设计思路:

百度“最少的io扫描最多的按键”你能看到的有(这里只列举几张代表性的)

传统矩阵:

u=1470209489,3692830599fm=173app=49f=JPEG.jpg

二极管编码:

u=1405912506,2491446644fm=173app=49f=JPEG.jpg

变种的行列键盘:

u=3603759020,178093515fm=173app=49f=JPEG.jpg

当然,上面都是有键冲的,市面上常用的是基于第一种改造的无冲突键盘。而我要另辟蹊径,用第三种改造。

捕获.PNG

这是原理图的部分截图(忽略掉led引脚,只看按键),这里是由K1、K2、K3三个io驱动扫描六个按键,细心的观众可能看出来了,这和上面第三个方案是类似的。都是IO两两配对,正反各一个按键。这里不作运行流程讲解。

技术难点:

假设同时按下S1、S9,但K1置低电平时,K2、K3的电平是???
为了解答这个问题,我们翻开技术文档:

这是4148的伏安特性图:

捕获1.PNG

这是CH551的触发电平电压:

电源为5V时:

捕获2.PNG

电源为3.3V时:

捕获3.PNG

再假设流过4148的电流为1mA,那么压降为0.5V。

在这种情况下,若单片机5V供电,则K2、K3都为低。
显然这就有违全键无冲的初衷。

但在3.3V供电下,2*0.5V>0.8V,则K2为低、K3为高。成了。

实测551在0.9V下还不算低电平,故还需要上拉电阻给二极管提供偏置电流,增加压降,不然和5V供电下雷同

但我还不满足于此,还想加多按键,细看技术文档,发现RST脚能当输入脚使用,但技术文档没标出它的触发电平,保险起见,外接一个PNP管做反相器。
这样一来,仅一个CH551,16条腿,除去3条电源,2条usb,剩下10个IO加一个RST脚,在不考虑灯的情况下,就能做到100键无冲突。你说厉不厉害。
但3D打印机大小有限,而且要驱动LED。正巧自带两路PWM,用去驱动双色LED。剩下的还能做64键无冲。61键排列,还富裕3个按键,做成侧键。
各方面榨干这单片机。

制作过程:

PCB正反面:

IMG_20200328_130046.jpg
先焊接typeC口:

IMG_20200328_132522.jpg
输入滤波:

IMG_20200328_133410.jpg
电源稳压块:

IMG_20200328_134236.jpg
单片机:

IMG_20200328_134645.jpg
排阻和三极管:(忘了下单贴片8550,直插顶上)

IMG_20200328_185249.jpg
开始焊4148:

IMG_20200328_213207.jpg
先焊一边固定:

IMG_20200328_213611.jpg
全部焊好:

IMG_20200328_215628.jpg
特写:(后面发现有一只4148一侧没上锡,刚好在图片上)

IMG_20200328_215635.jpg
侧边按键:

IMG_20200328_220143.jpg
开始焊轴25%

IMG_20200328_230713.jpg
50%

IMG_20200328_231133.jpg
75%

IMG_20200328_231643.jpg
100%

IMG_20200328_232450.jpg
焊点特写:(没上锡的4148又上镜了)

IMG_20200328_232458.jpg
上平衡杆:

IMG_20200328_233345.jpg
加键帽:

IMG_20200328_234815.jpg
金主logo特写:

IMG_20200328_234944.jpg

VID_20200410_194329 [640i].gif

程序更新日志:

Ver0.1:
  1. 无灯,
  2. 完善部分FN组合键,
  3. 软件消抖,
  4. 多按键按下时,序号低的优先输出
  5. 侧键功能:
    未按下FN:截图、PGUP、PGDN
    按下FN:INS、HOME、END
Ver0.2:
  1. 加入灯光驱动(不可按键调节)
  2. 将io全部配置成开漏输出,运行功耗降低(一点点)
Ver0.3:
  1. 优化消抖,在廉价轴上的双击现象会有改善。按键上升沿无影响,但下降沿会延迟10ms
  2. 功耗优化(键盘扫描次数边少了,改为定时扫描,自然功耗就降低了)
Ver0.4:
  1. 重写USB底层,修改代码里的调试端点,改为鼠标端点。
  2. 修改FN键下的触发,改为在FN期间按下的,直到对应按键松开为止都是FN下的功能。
  3. 大写时1Hz呼吸灯,小写时0.5Hz呼吸灯
  4. 消抖时间改为10ms
Ver0.41:
  1. 修复了上电ctrl可能误触发的bug
Ver0.5:
  1. 添加多媒体操作按键,详细见键位图
  2. 消抖时间改为12ms
Ver0.51:
  1. 开启看门狗
  2. 修复USB总线复位后死机的BUG
Ver0.52:
  1. 亮度,颜色变化过程修改,由线性变化改为对数变化(开始慢结束快)
  2. 降低数据包回报速率,从1000Hz改为500Hz
Ver0.6:
  1. 消抖动算法改良,按下和松开事件都是即时动作
  2. 因运算量增加,扫描周期改为2ms
Ver0.7
  1. 加入方向锁,FN+》启动或关闭,上下左右对应按键默认逻辑会翻转
  2. FN+《调节亮度
  3. FN+M调节灯效
  4. 方向锁和灯效会在20秒无修改后保存进EEPROM,下次开机仍然保持设置
  5. EEPROM均衡磨损算法
  6. 上报名称改为“最丐61+3键盘”
Ver1.0
  1. 开启端点4用作上位机通讯接口
  2. 获取单片机内部唯一ID作为设备ID
  3. 修复上报长度仅保留低字节的bug
  4. 添加上位机直接控制PWM和还原命令
  5. 上报版本号修改为0x0100
  6. 修复上电会闪灯的BUG
  7. PWM频率下调到2KHz

Ver1.1

  1. 通讯端点与小键盘同步更新
  2. 修改存储格式,更新版本需清空flash
  3. 修改改灯方式,FN+[|]多击来亮度、灯效、方向锁、开源网

灯效:


image.png

怕有人不理解后面几个灯效,就是caps按键下选择单独一个通道时做大小写指示,每种都有两个是分别对应两个通道相反的情况

61大小写切换灯效1.gif

61大小写切换灯效2.gif

程序前前后后持续了一年多的更新,我觉得现在功能很完善了,

所以软件版本接下来应该不会有什么功能性大更新了,当然如果你们有好的想法可以评论区提出。

IMG_20200626_204146.jpg

已知硬件BUG:

  1. 上面图片的稳压块封装反了,所以倒着焊接(现PCB已修正)
  2. S40的LED左右两通道是反的,注意一下(现PCB已修正)
  3. 灯光控制脚不拉低也会微亮,是我忽略了单片机io的钳位二极管。不过影响不大,也就灯不能完全灭掉。
  4. TYPE C只接了单面,故只有一个方向能识别。
  5. TYPE C的CC脚悬空,导致不能使用双TYPE C线触发OTG。


授权出售合集:

【腾讯文档】丐中丐小键盘授权ID以及授权费记账


程序更新教程引用站内另一个开源项目(记得不要勾复位脚使能):https://oshwhub.com/TheLight/zi-ding-yi-jian-pan

【由于版幅较长,把售出用户的成品摆到外观篇】

QQ截图20200815180450.png

关联词语:charlieplexing

这个名字是最近看到的,原理很类似,就把名字放这里了,有兴趣自己百度

其他版本:

通过减少一路pwm输出,达到九九八十一个按键,caps lock键下的灯还能作为大小写指示,并于其他LED保持相同亮度
IMG_20200627_175011.jpg

加入HUB修改布局给USB接口让路
微信图片_20210125210145.jpg

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
WCHISPTool_Setup.exe
98
2
64键盘程序Ver0.3.hex
27
3
64键盘程序Ver0.41.hex
22
4
64键盘程序Ver0.51.hex
21
5
64键盘程序Ver0.52.hex
21
6
64键盘程序Ver0.7.hex
32
7
最丐灯控上位机.exe
93
8
最丐61+3键盘Ver1.00.hex
47
9
最丐61+3键盘Ver111.hex
34
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航