DIY键盘记录——剑盘SwordBoard

恩,正式开始我的DIY键盘了。。

为了防止之前项目都没有一个好名字,先起个还凑合的名字”剑盘“....

目前没有很多想法,想先用arduino做一个分体键盘,基本功能和Ergodox一样。

目前已有的成果:
Ergodox 工程文件(打开方式kiCAD):http://ergodox.org/Downloads/ErgoDox_PCB_Designed_by_pbiphany.zip
某大神分享的自己DIY键盘工程文件TOHKBD里面好像还有键帽的STL文件一类的,电脑没装暂时还看不到。。。
https://github.com/dirkvl/TOHKBD

现在在找主控的型号,好像大部分用的都是ATMEGA32U4我在找命名规则。。
好像终于搞清楚了U4好像就是能模拟成USB 设备。

2015年12月14日 UPDATE:

接下来是记录下Ergodox对我来说不方便的几个地方,我的想法是因为估计会普通键盘和ergodox一起用,防止精神分裂,尽量无痛的在Erogodox和普通键盘之间切换

  1. F1-F12键以及对应在mac上的功能键的位置在zxcv下面。。
  2. 没有小键盘
  3. 大拇指上的按键太多了
  4. []|‘这几个键被移到了其他的位置

2015年12月15日 UPDATE:

恩,找了一下Ergodox和model 01两个键盘的配列

model 01的默认配列
默认的Ergodox库,空白键是需要自定义的

他们共同的问题是因为键盘其实是一个倒三角的,然后如果变成直上直下的话,右手有几个键就会多出来,和左手其实是不对称的。。。具体的说是[]'这三个键,另外esc也要换到其他的地方,我还是想不更换这几个键的位置,再想想。

2015年12月16日 UPDATE:

今天晚上仔细的看了下Ergodox的设计(主要是pcb方面),收获不少。
先说一个最简单的,为了让左右手都用同样的板子,在引脚上做的变化。

这个是一个最普通的轴,为了让正反都可以把轴插上,多开了几个孔

而原版的cherry轴的引脚本身是这样的。

原版cherry轴的引脚

下面多出来的这几个是为了适配不同封装的二极管,上面的则是为了让正反都能插上。

然后是在边缘的有灯的地方加的灯位。

这部分我没有特别看懂,可能要拿一个实体才能看懂。但是大概是意思应该是可以让一个轴横过来,但是好像少了两个孔。位置在每排的最右边。

接下来这个是我觉得很厉害的一个地方。可以看到这样的设计可以让最终的键盘既可以放置两个1x的键,也可以放一个2x的键。

以及画了人生第一个eagle的库。。

2015年12月16日 UPDATE:

额,今天又有一些顿悟。。。原来我想的是两个引脚我直接用线连起来,然后今天发现原来原理图上的一个符号可以关联多个引脚。。。然后修改后现在的库是这样的。操作的话点图左下角那个append就行。。然后改了下原理图的引脚顺序,因为sw2一定会链接D1的所以这样连线方便点。

然后变了下其中一个引脚的焊盘形状用于区别方向。

在新建12或者21通用的按键,发现这里还有一个精妙的地方

红框部分的二极管是可以共用的,不管是放一个2x键还是放两个1x键的下面的轴,都是共用这一个二极管的

2015年12月17日 UPDATE:

qq群里有人介绍了一个网站:http://builder.swillkb.com/ 可以自动生成钢板cad图。然后里面需要用到这个网站生成的数据http://www.keyboard-layout-editor.com/

2015年12月18日 UPDATE:

莫名其妙好像变成每日打卡了。。。
总之今天写完了两个库,后面可能还要修改,不过总算的开始自己慢慢学会eagle了。。

1x键位
两个1x或者1个2x通用的

2015年12月22日 UPDATE:

额,前几天没有更新不过还是做了些事情。

首先,最终的布局确定了是这样。

手绘版本

kle版本

网址是http://www.keyboard-layout-editor.com/#/gists/bd4b96720686773f2365

2015年12月24日 UPDATE:

然后画了一个左手的

2015年12月25日 UPDATE:

恩,突然发现2x的键好像还要有卫星轴呵呵呵呵。。。

然后就是今天买轴的时候发现原来轴有2种,5脚和3脚的,5脚的话可以不用钢板,cherry原厂的是无钢板的,但是一般货很少,而且3脚的价格是2.5一个左右,5脚的价格是3一个。不过,因为不用钢板,所以少了钢板的钱,然后也不用话钢板的图了,打算第一个先用5脚茶轴吧。然后我计算了下我这个总共需要78个1x的键,二婚11个2x的键。然后卫星轴10块一个。。。找了半天终于找到一个5块的。。

另外有r1,r2,r3,r4几种。还有OEM和原厂高度两种,买的 时候要注意一下。这里有一个用r几的图


图片来源:淘宝卖家

然后因为想用无刻的彩色键帽,而pbt无刻的大键位没有,可能要先买abs的了,据说看不出来区别,而且我想了下好像大键位除了回车用的也确实不多。。

另外发现之前的库好像没有画卫星轴的脚,等轴回来了我照着画一下吧。。。

2015年12月26日 UPDATE:

我噗。。。。。。
原来最大的坑是键帽。。。就是平常用的键盘每行的形状是不一样的。。。。。我擦为什么有这种设定。。。。然后现在大键部分就不知道怎么办了。。。买了几个abs的,然后1x的买了彩色的。。。等回来看看吧。。。

2016年01月07日 UPDATE:

恩,好几天没更新,不过这两天还是做了一些事情的,首先是把mega32u4的周边电路基本画完了,然后今天弄了写USB hub的周边电路。。


然后就是因为大尺寸的打样不是要加钱么。。所以我可能会先弄一个小尺寸的验证下画的是不是对,然后想做一个只有几个按键的小键盘,测试下是不是成功。然后再做大的键盘,不过我今天看到竟然有开源的5按键键盘。。。https://github.com/kairyu/staryu


2018年01月02日 UPDATE:

恩,不知不觉就过了2年了。。。。。。。。最近打算重启这个项目。。。然后发现了有人做出了Ergodox的一个新的变体Ergodone,资料在这里:

最近看到了另外一个基于ergodox的方案,觉得很不错。这个是作者的简书文章,介绍了固件怎么下载:
https://www.jianshu.com/p/1d37d1f015a4
这个是淘宝的链接:
https://item.taobao.com/item.htm?id=534570622972
这个是github的地址:
https://github.com/ktec-hq/ErgoDone

然后看到了一些新的资料,首先是tmk,一个基于32u4的固件,图纸是kicad画的,不过有点麻烦的是我不太懂他的那种makefile的方式,好像是配置mk文件然后生成hex文件上传到芯片上,知乎上有人翻译了原作的一个教程:
https://zhuanlan.zhihu.com/p/21470513

另外看到了一个台湾人的做的项目,我觉得确实基本达到了我要做的所有功能。。。不过他是用线连的。。。。搞的有点蛋疼。。。

https://medium.com/@alan81920/%E5%BE%9E-0-%E9%96%8B%E5%A7%8B-%E6%89%8B%E6%89%93%E4%B8%80%E6%8A%8A%E5%B0%88%E5%B1%AC%E7%9A%84%E8%97%8D%E7%89%99%E9%9B%99%E6%A8%A1%E4%BA%BA%E9%AB%94%E5%B7%A5%E5%AD%B8%E9%8D%B5%E7%9B%A4-0-559e623f48a2

有人做了一个键盘的主控kimera:
https://github.com/kairyu/kimera
确实挺不错的

然后有一个叫qmk的固件,据说是tmk增强版本
https://github.com/qmk/qmk_firmware

但是这个类的方案看起来确实有点吃力,下载回来后电脑上会是一个makefile和一堆c和h文件,之前没接触过linux这类的东西,实在看不太懂。。。

github上有人建了一个我觉得最和我想近的项目:
https://github.com/mannuray/ergodox-firmware-arduino/tree/master/src/keyboard


算了算了。。。看了一下午眼睛都疼了。。。
还是打算自己从头写软件把。。。感觉也不比用tmk,qmk什么的少什么事情。。。。

发现一个神器http://kbfirmware.com/ 图形化写配列自动生成文件,关键是支持arduino pro micro,不过不支持分体。。。

2018年1月4日 UPDATE:

今天搞懂了一个东西。。。



之前一直没懂红框里面是什么功能,现在发现原来还有这种黑科技。。。

然后ergodone和ergodox不一样的有一个地方是用mcp23017代替了mcp23018,然后这两个ic的区别我在官网上看到的区别主要是最大的总线速度。查了下arduino的论坛好像一般只能增加到400k,有人说可以800k的。 。而mcp23017最高也支持1.7M,mcp23018的3.4m其实是没用的。。。所以我觉得也就用mcp23017吧。。。

MCP23017

MCP23018

2018年01月05日 UPDATE:

用了这么就才发现原来arduino还有一个DFU mode的东西。。。http://coopermaa2nd.blogspot.jp/2011/11/atmega8u2-arduino-uno-ftdi-usb-to.html这么说其实不需要mkii也可以把arduino弄成midi和hid设备。。。

2018年1月7日 UPDATE:

这两天把线布了一下,打算明天先去打个样看看有没有什么问题,现在已知的一些问题是是因为左右手之间是用音频线的,所以只有四根线相连,主副手之间的I2C通讯用了vcc、gnd、sda、scl,所以有一个严重的问题。。。。就是灯的话是没法传输信号的。。。有点尴尬。。。


2018年01月08日 UPDATE:

突然想到也许可以两边各用一个32u4,然后用串口在主从机之间通讯,这样还有一个好处是两边其实都可以做主机了就。

2018年1月11日 UPDATE:

嗯。。。。然后我觉得既然自己做要不就做的还是完善一点吧,所以先在的方案是这样的。。。左右手各有一个32u4,然后两个usb type-c的接口,一个用于当主机和电脑连接,另外一个用于连接主机和从机,这样两边都可以当主机了,然后灯的控制问题也解决了,然后还用上了type-c。但是有个问题是type-c的资料比较少,连eagle的库都没找到。。。。sparkfun、adafruit、seeeed都没有相关的开源板子。。。所以基本要自己弄了。。。

2018年01月13日 UPDATE:

今天把板子画好了送去打板了,然后发现atmega32u4的封装用错了= =。。。。想想需要手焊QFN的atmega32u4还是有点痛苦。。。。

2018年01月17日 UPDATE:

恩。。。。。下单后立刻发现用错了32u4的封装。。。。

2018年1月19日 UPDATE:

额。。。据说usb两根线要长度一致。。。。。

2018年01月20日 UPDATE:

恩,今天突然想到一个问题,其实即使是两个arduino主机和从机之间可以用i2c通讯,这样的话串口就可以空出来给后面的蓝牙升级留出空间。

然后写代码的时候遇到一个问题是比如下面这个图,如果row输出的话因为输入引脚只能上拉,所以是不能工作的,如果想要工作必须要把二极管反接,然后才行,但后来看了别人的代码发现原来可以把row变成输入。。。然后col变成输入,这样row就可以上拉了。。。


恩,然后板子张这个样子。。。



2018年02月06日 UPDATE:

偶然看到这个键盘用的灯控是IS31FL3731这个芯片,然后adafruit也有这个芯片的板子和库,是一个扫描矩阵芯片
https://geekhack.org/index.php?topic=48851.250

2018年6月13日 UPDATE:

恩。。好像有过了一年(农历),然后今天偶然看到了这个项目,就是用arduino实现LUFA的所有功能https://github.com/Palatis/Arduino-Lufa
我觉得这个有一个更重要的意义是,arduino原来可以引入普通的avr项目,那么用arduino实现qtouch应该也不是不行的。。。
另外现在灯控我也基本搞明白了,可以看我那个扫描矩阵的博客,里面介绍了好几个芯片,选型的时候主要需要看下是不是支持单点的亮度调节。。。很重要比如IS31FL3730不支持,而IS31FL3731就支持。。。切记切记。。。

扩展Arduino键盘库的功能

arduino的keyboard是不能发送媒体信号的(上一首下一首什么的),然后这个人写了一个https://www.stefanjones.ca/blog/arduino-leonardo-remote-multimedia-keys/不过我觉得他的方法不太好的地方是改了系统层面的库却新加了一个类,我觉得应该是这样的,直接扩展在keyboard.press()传进去的参数,这样调用的方式是一样的

2020年03月31日 UPDATE:

想不到我还在更新这个文章。。。今天看到了一个收集了所有客制化键盘项目的网页,好像还挺全的。。。https://keebfol.io/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • 好好活下去 郭相麟 生活有时很难面对 悲伤的眼泪 面具遮挡住生命的脆弱 哪些死亡的阴影 盘旋在空中 ...
    郭相麟阅读 195评论 0 1
  • 1.修改复选框且保留复选框之前选中的值 控制器部分代码如下: html部分代码如下: 可以看到,控制器中找到对应这...
    gogocheng阅读 976评论 0 0
  • 没有气宇轩昂的面容 笑起来却是阳光明媚 并排坐过的桌椅 辗转过几个春秋 成了另两个我们的甜蜜 不曾对你说过 那简简...
    蓝桉_屿阅读 229评论 0 2