THKB_main_v0.1.3 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 THKB_main_v0.1.3

  • 2.4k
  • 5
  • 31

简介:THKB——TouHouKeyboard,一款便宜、低延迟的车万客制化小键盘。支持全键无冲、全键自定义、组合按键、三层自由键层、超低可调延迟、掉电保存记忆等功能;支持上位机改键值、改延迟,包含测试工具

开源协议: MIT License

(未经作者授权,禁止转载)

创建时间: 2023-07-24 18:02:35
更新时间: 2023-09-01 21:09:48
描述
# [THKB] TouHou Keyboard,便宜、低延迟的客制化小键盘 ![LOGO_black2.png](//image.lceda.cn/pullimage/DRRildI8lvhhMlxNE1ycnbI8IxGsw1GH0XY1mNwr.png) #### V0.2.2版本已经发布,链接:[THKB_main_v0.2.2 - 嘉立创EDA开源硬件平台 (oshwhub.com)](https://oshwhub.com/kairingo/thkb_main_v0-2-2) #### THKB是一款以便宜、低延迟为设计理念的客制化小键盘。支持全键无冲、全键自定义、组合按键、三层自由键层、超低可调延迟、掉电保存记忆等功能;支持上位机改键值、改延迟,包含测试工具以及使用指南。 机械轴体按键支持可调延迟(最低20us,最高50ms),轻触开关软件延时20ms;上位机仅支持Windows系统。 ##### 这里Readme版本更新可能不及时,最新内容请移步至gitee仓库。 本开源工程包含PCB的设计部分。 更多资料请访问Git项目仓库,包含THKB的下位机固件、上位机软件、PCB Gerber文件、CAD设计文件、3D模型以及相关文档等,链接:[[THKB] TouHou Keyboard 便宜、低延迟的客制化小键盘](https://gitee.com/Kairingo/thkb)
~~~~
本项目使用MIT开源协议,您可以随意的下载、Clone、Fork本项目作为任何用途。如果用作商业用途量产,希望您赠送一份样品给我,我的联系邮箱是2401977049@qq.com ![front_render_reflective.jpg](//image.lceda.cn/pullimage/Cj4vWMdRDuhfhrVujcyaqZ9N36Q1FFvbnrycVRlG.jpeg) ## 一、更新说明 ##### 2023.7.24更新:首次正式发布项目,修复了测试版的一些BUG ## 二、项目文件说明 #### Firmware -v0.1.0 ##### \|\-\- THKB\_fw 使用Keil5 C51配合 vs code Keil Assistant 插件配合编写 \|\-\-Obj 文件夹内的**THKB_fw.hex**为生成的hex文件,可以直接用于下载,将的P3.6引脚通过20K电阻下拉即可进入ISP下载模式,下载方法请参考沁恒官方 #### Software -v0.1.0 ##### \|\-\- THKB\_host\_software 上位机程序,使用C\#编写,dotnet Framwork 3\.5框架,winform窗体。使用Visual Studio开发 ##### \|\-\- fonts 包含上位机所需的字体 ##### \|\-\- pic 上位机中使用的一些图片素材 #### Hardware -v0.1.3 ##### \|\-\- pcb 包含PCB Gerber文件,设计文件:[THKB\_main\_v0\.1\.3 \- 嘉立创EDA开源硬件平台 \\(oshwhub\.com\\)](https://oshwhub.com/kairingo/thkb_main_v0-1-3) ##### \|\-\- bom 物料清单与购买链接 #### CADs -v0.1.0 ##### 包含顶板,底板以及垫高板的CAD文件 #### 3D_Models -v0.1.0 ##### 3D模型,包含零件与装配体。使用Soildworks 2022设计 #### Docs ##### LOGO、文档、渲染图以及一些相关文档等 ## 三、硬件架构说明 ### 2.1设计理念 为贯彻低成本的设计方案,所有元器件和结构都在保证稳定可用的情况下做了Cost Down。键盘总共有9个机械轴体按键(1个2u、1个1.5u和7个1u)和两个轻触开关。PCB同时支持热插拔和焊接方案,可以根据用途进行调整。 ### 2.2 结构设计 键盘倾斜角约为6°;为了节省成本,键盘的结构为三明治夹心结构,从上到下分别是2mm亚克力顶板、FR-4玻纤PCB板、3mm亚克力底板以及5mm亚克力垫高板,使用M3内六角螺丝进行紧固,为了提高稳固性,使用SMT贴片螺柱固定在PCB板上,无法拆卸。顶面使用4mm螺丝,底面8mm和12mm螺丝分别固定,底部使用2mm高的直通柱,防止底板接触到元器件。可以添加夹心垫、轴下垫等配件以提升手感。 ![explosive_front.jpg](//image.lceda.cn/pullimage/5fW5Gro9mItHXvNfEfLE0LUj76cOCxHm9edStH2F.jpeg) 键盘使用标准的樱桃MX轴体和PCB 2u卫星轴,建议使用DSA、XDA、原厂或者OEM高度等较低高度的键帽。 ### 2.3 芯片选型 选用来自南京沁恒的51单片机**CH551**,一块钱的售价,同支持USB FS 2.0、128B DataFlash以及24MHz的主频,非常适合用作本项目的主控MCU。极简的外围器件设计,仅需少量电阻电容,最小系统即可搭建完成。外加51内核的单片机一般都很皮实,可以抗住日常生活中的静电。更好的鲁棒性,让我可以放心在PCB上做一些美化设计,比如将镀锡的铜皮裸露,绘制出图案等。 ![pcb.png](//image.lceda.cn/pullimage/AtRO96Qk2rFda3HwHKKlYizkzZW3gGZbi2hInY4W.png) ![Sch.png](//image.lceda.cn/pullimage/bxACHr76xzBu1C7w9vNXJSeCtvxr4oZRFxISFSiW.png) ## 四、固件设计 按键的扫描方式是传统的矩阵扫描,扫描方式是从行到列。键盘由两行六列组成,总共11个按键。由于ch551没有下拉输入模式,每个列的引脚通过20K的电阻下拉到地,通过1n4148防止串扰。所有有关上位机与USB中断的操作都放在USB的终端服务函数中处理,由于我七月份才第一次使用51单片机,很多东西我也没有玩明白,譬如UINT8、UINT8I、UINT8X等,有函数不能重入等诸多限制。考虑到键盘的功能不算复杂,固件勉勉强强也没问题。~~反正人和代码一样能跑就行~~ ``` C void keyboard_scan(void) { memset(Keyboard_ScanBuf,0,11); IO_KEY_R0 = 1; IO_KEY_R1 = 0; mDelayuS(10); Keyboard_ScanBuf[0] = IO_KEY_C0; Keyboard_ScanBuf[1] = IO_KEY_C1; Keyboard_ScanBuf[2] = IO_KEY_C2; Keyboard_ScanBuf[3] = IO_KEY_C3; Keyboard_ScanBuf[4] = IO_KEY_C4; //按键消抖 if(Keyboard_ScanBuf[0]||Keyboard_ScanBuf[1]|| Keyboard_ScanBuf[2]||Keyboard_ScanBuf[3]|| Keyboard_ScanBuf[4]) { keyboard_delay(); Keyboard_ScanBuf[0] &= IO_KEY_C0; Keyboard_ScanBuf[1] &= IO_KEY_C1; Keyboard_ScanBuf[2] &= IO_KEY_C2; Keyboard_ScanBuf[3] &= IO_KEY_C3; Keyboard_ScanBuf[4] &= IO_KEY_C4; } IO_KEY_R0 = 0; IO_KEY_R1 = 1; mDelayuS(10); Keyboard_ScanBuf[5] = IO_KEY_C0; Keyboard_ScanBuf[6] = IO_KEY_C1; Keyboard_ScanBuf[7] = IO_KEY_C2; Keyboard_ScanBuf[8] = IO_KEY_C3; Keyboard_ScanBuf[9] = IO_KEY_C4; Keyboard_ScanBuf[10] = IO_KEY_C5; //按键消抖 if(Keyboard_ScanBuf[5]||Keyboard_ScanBuf[8]|| Keyboard_ScanBuf[9]||Keyboard_ScanBuf[10]) { keyboard_delay(); Keyboard_ScanBuf[5] &= IO_KEY_C0; Keyboard_ScanBuf[8] &= IO_KEY_C3; Keyboard_ScanBuf[9] &= IO_KEY_C4; Keyboard_ScanBuf[10] &= IO_KEY_C5; } if(Keyboard_ScanBuf[6]||Keyboard_ScanBuf[7]) { mDelaymS(20); Keyboard_ScanBuf[6] &= IO_KEY_C1; Keyboard_ScanBuf[7] &= IO_KEY_C2; } } ``` 全键无冲的方案参考了稚辉君的重映射键值方案,使用枚举,用负数表示特殊按键(如Ctrl、Shift等),普通按键从0~128依次枚举,用有符号char存储值,FN键层切换键也包含其中,如果FN被按下,则切换键层,并等待一秒钟。 ``` C static void keyboard_remap(char keyvalue) { UINT8 index = 0 , bit_index = 0; //特殊按键 if( keyvalue < 0) { Keyboard_RemapBuf[0] |= 1<<(8 + keyvalue); return; } //FN键 if( keyvalue == FN) { if(Current_Layer<3) Current_Layer++; else Current_Layer = 1; led_on(Current_Layer); mDelaymS(1000); return; } //普通按键 index = keyvalue / 8; bit_index = keyvalue % 8; Keyboard_RemapBuf[index+1] |= 1<<bit_index; } ``` ## 五、上位机软件设计 上位机软件使用C#编写,本来是想用Qt调用多个库,写一个全平台的版本,但是本人C++很烂,于是放弃了这个设想,还是C#开发起来快。 上位机使用Winform框架编写,调用了Hidlibrary库设计思路是主窗体中包含四个子窗体,通过点击主窗体的不同按钮切换子窗体,调用不同的功能,分辨是映射更改、延时更改、按键测试以及设置,左下角显示键盘当前的连接状态 ![host_keymap.png](//image.lceda.cn/pullimage/pfU2d3vqFTwY7ZUlCpyigBNHnH6rGSgTci5KYcDF.png) 键盘映射可以支持每个按键自定义绑定三个键值,比如(Ctrl+Alt+F4)等。总共三个键层,绑定FN的按键可以用于切换键层,FN与其他任意键值冲突,如果一层没有FN键,则这一层没办法切换到下一层,上电以后处于默认层(第0层),切换顺序是0->1->2->3->1->2->3。 ![host_delay.png](//image.lceda.cn/pullimage/0VGpIcQRc9zxwHwCugGttbnJ16S3vx1zvyzSSfP7.png) 按键延迟支持20us至50ms,可以输入特定值进行调整,上方的不同模式分别代码:stable稳定模式延时5ms、normal普通模式延时800us、game游戏模式延时50ms,在游戏模式下,若大力敲击会导致按键产生连击。延时大于50ms会导致案件无法触发,而低于20us则极容易发生连击。 ![host_tester.png](//image.lceda.cn/pullimage/NErOVNvsDuVq8AQtdYDxRf9CqKI3OTKDpTKPY4oM.png) 设置界面现在还未开发,所以还是一片空白~ ## 六、渲染图与实拍 图太大了传不上来,大家移步至gitee看吧~~~~ ## 七、授权条款与写在最后 本项目采用MIT开源协议,这意味着您不仅可以用作商业用途,还可以闭源。由于国内的开源大环境比较恶劣,任何开源协议最后大概率都会被忽视,与其让别人违背协议,不如彻底放开权限。 如果您想量产,或是基于这个项目进行商业用途的话,虽然不需要再征得我的同意,但还请发送邮件告知我一下,我很希望我的设计可以量产,或是被更多人看到,在这里仅抛砖引玉,给大家做键盘或是相关的东西提供更多的灵感。 我希望如果您参考了这个工程,我希望您能将您的代码开源;如果量产了这款键盘,我希望您可以将项目的开源仓库印在产品上,使用您自己设计的LOGO,或是用THKB提供的。 这个项目源于我六月底的一个灵感,如果您知道“东方Project”这个IP的话,相信您一定可以猜到了,这款键盘就是专门为了STG(弹幕射击游戏)准备的。可变延时可以适应不同的敲击力度,通过微调使延迟降到最低,以适配不同的使用者。当然,这款键盘的肯定还有更多的用途,这就等待您的开发了。 本项目中除了元器件的3D模型和封装由立创EDA提供外,所有LOGO、代码、图片、PCB板、CAD文件等,都由我编写或设计。本人为管理专业在校大学生,水平有限,项目中尚存在许多错误。实际开发总共就进行了两周半的时间,~~外加我要复习考研~~做的比较仓促,如有错误还请指出,恳请各位的批评指正。
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
暂无
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP