从零开始,做一个单键炫彩多功能小键盘

2020-01-31 10:46:28 22点赞 64收藏 37评论

项目由来

玩电脑还算是比较早的,最早接触是在初中,486、586+Win95、Win98那个年代,那个时候已经不流行机械键盘了,基本都是薄膜键盘,但是外观和现在的机械键盘差不多。后来机械键盘以天价回归了,可我对它却并没什么感觉,尤其是在我看来虚飘的价格,近两年国产轴开始多了,机械键盘的价格也回落了。

做的第一把机械键盘做的第一把机械键盘

前段时间在 github上看到一个机械键盘的项目,做了第一把机械键盘,剩了一堆材料,于是就有了这个项目,一个单键键盘。

准备材料

键盘必须要用到的材料:

  • CHERRY MX机械键盘轴体或兼容轴体,颜色根据个人喜好(优先3脚,5脚需要处理下)

  • Digispark kickstarter ATTINY85 微型 usb 开发板

需要用到的工具(工具并不都是必要的,自己合理使用):

  • 电烙铁

  • 漆包线

  • 精细手锯

  • 螺丝刀

  • 电钻

  • 锉刀

键盘不必须用的材料:

  • Sk6812 mini 3535(全彩LED,可以用WS2812代替,但是5050的尺寸稍大)

  • 凯华 kailh热插拔轴底座(如果不需要更换轴体,这个可以不用)

  • 3D打印的外壳(外壳可以根据自己喜欢自己做,我同事直接用热熔胶箍上了)。

下面挨个介绍下原材料

国产轴体,兼容CHERRY MX国产轴体,兼容CHERRY MX

三脚轴体,如果是5脚轴,需要处理掉另外两个定位轴三脚轴体,如果是5脚轴,需要处理掉另外两个定位轴

Digispark 开发板,不一定非要选这个样子的,但是如果你零基础,最好选一样的,防止出现各种问题。Digispark 开发板,不一定非要选这个样子的,但是如果你零基础,最好选一样的,防止出现各种问题。

Digispark开发板背面Digispark开发板背面

Sk6812 mini 3535,体积要比5050小。Sk6812 mini 3535,体积要比5050小。

kailh热插拔轴底座正面kailh热插拔轴底座正面

kailh热插拔轴底座背面kailh热插拔轴底座背面

硬件部分

介绍完用到的材料后,再简单介绍下这个项目,其实这个项目很简单,就是用 Digispark模拟 HID设备,DigiSpark最出名的应该是用它制作 Bad-USB,Bad-USB同样是用它模拟 HID设备进行攻击或其他操作。

简单介绍完项目后,我们开始制作键盘。如果你想做一个和我一样的键盘的话,就需要对开发板进行简单的处理,需要对电路板做个小手术,把用不到的地方切掉(注意:如果你对开发板下载程序不熟,最好先跳到软件部分,把默认程序下载到开发板中,以免切割后,万一切坏,不知道问题出在哪里)。

电路板切完之后的大小,注意不要伤到芯片的引脚,引脚离边缘大概1mm就可以。电路板切完之后的大小,注意不要伤到芯片的引脚,引脚离边缘大概1mm就可以。

背面参考位置,以正面为准背面参考位置,以正面为准

切掉多余的部分后,主板的体积就会缩小很多,下一步就是焊接轴座(这里默认使用轴座,如果你不使用轴座,后面可以直接焊到轴上)、LED。轴座很简单,只要一端接 GND,一端接到芯片的 Pin2。

从零开始,做一个单键炫彩多功能小键盘

焊接 LED稍微麻烦点,先看下 LED的引脚图。

从零开始,做一个单键炫彩多功能小键盘

LED背面是四个引脚,因为只有一个灯,所以只用到其中三个引脚 VDD、GND、DIN,下面是对应关系):

  • VDD → 5V

  • GND → GND

  • DIN → Pin1

对应关系弄清后,就可以焊接了,漆包线可以去废旧耳机中找,如果你的焊接技术不太熟练的话,可以在加热过程中,用针把1、2脚挑起来,这样方便焊线,防止1、2脚短路,漆包线需要先上锡,LED最好也先上一层锡(注意:由于 LED非常小,焊接时间不能过长,如果你的电烙铁可调温的话,温度最好在270-280这样,不然高温可能会废掉你的 LED)。

从零开始,做一个单键炫彩多功能小键盘

从零开始,做一个单键炫彩多功能小键盘

从零开始,做一个单键炫彩多功能小键盘

到这里,键盘的硬件部分就已经完成了,只需要把轴体插到轴座上就可以。

软件部分

开发化境

硬件准备完了,下面开始软件部分,写这篇文章之前,我就得这篇文章会非常短,因为确实很简单,代码也很简单,但是当我写到这,想起了从零开始,就不能有坑,那么就得配置 Digispark的编译环境。英文好的同学可以直接参考 Digispark的英文 Wiki,非常简单。

1、首先安装Arduino IDE,这个就不介绍了,实在不会,网上搜一下把,非常简单。

2、打开 IDE,依次 文件 → 首选项

从零开始,做一个单键炫彩多功能小键盘

打开“首选项”页面后,在附加开发板管理器网址处填入“http://digistump.com/package_digistump_index.json”,如果你此处已经填有其他网址,就按后面的按钮,在弹出页面中,另起一行,填入这个网址。

填入网址后,选择下面的 "好",保存退出。

3、依次 工具 → 开发板 → 开发板管理器。

从零开始,做一个单键炫彩多功能小键盘

打开“开发板管理器”页面后,选择 "Digistump AVR Boards" 安装,安装过程中会出现驱动安装界面,全是“下一步”就行。

从零开始,做一个单键炫彩多功能小键盘

安装完成后,再次选择 工具 → 开发板 → 选择 "Digispark (Default - 16.5mhz)"。到这开发环境就搭建完成。

开发境搭建完成后,就可以打开我附带的源文件了,然后选择“上传”(注意:这个时候开发板不能插在电脑上),当程序编译通过后,出现 "Please plug in the device..."时,插入开发板,程序上传成功后,会有提示。

程序解释

#include "DigiKeyboard.h"

#include <Adafruit_NeoPixel.h>


const int ledPin = 1; // RGB LED 引脚

const int keyPin = 2; // 按键引脚


int backlightR = 0; // 红色值(0-255)

int backlightG = 255; // 绿色值(0-255)

int backlightB = 255; // 蓝色值(0-255)

int backlightBrightness = 100; // 亮度值(0-255)


Adafruit_NeoPixel led = Adafruit_NeoPixel(1, ledPin, NEO_GRB + NEO_KHZ800);


void setup() {

pinMode(keyPin, INPUT_PULLUP);

led.begin();

led.show();

led.setBrightness(backlightBrightness);

led.setPixelColor(0, backlightR, backlightG, backlightB);

led.show();

}


void loop() {

DigiKeyboard.sendKeyStroke(0);

if(digitalRead(keyPin)==LOW){

DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT); //这个是按键功能,这里是 WIN+D,更多键值,直接在 DigiKeyboard.h 中寻找

}

DigiKeyboard.delay(100); // 防抖延时

}

可以修改的参数,我已经加了注释,B站有个转载自 Youtube的视频,里面有键值用法更详细的说明,这种转载,要是有引用网址就更好了。

外壳安装

如果你方便3D打印的话,可以打印外壳,安装也很方便,或者使用任何你喜欢的方式做一个外壳。

乐高键帽外壳

底座上面正视底座上面正视

底座底面正视底座底面正视

底盖底盖

键帽键帽

安装轴座和LED,需要用热熔胶固定下,一定少用,防止板子放不进去。安装轴座和LED,需要用热熔胶固定下,一定少用,防止板子放不进去。

安装好轴座和LED后的正视安装好轴座和LED后的正视

安装完底壳后,就可以插入轴体,安上键帽,键帽上可以放置乐高人仔或者积木。如果你用的打印材料比较透光,可以在轴体外壳部分做隔光处理。

空头箱外壳

从零开始,做一个单键炫彩多功能小键盘

空头箱键帽空头箱键帽

从零开始,做一个单键炫彩多功能小键盘

主体外壳主体外壳

从零开始,做一个单键炫彩多功能小键盘

底座盖板底座盖板

安装轴之后的高度安装轴之后的高度

安上键帽后,按键谈起时的高度安上键帽后,按键谈起时的高度

按上键帽后,按键按下后的高度按上键帽后,按键按下后的高度

这个外壳我比较喜欢,唯一遗憾是少几个绑上面那个蓝色“布”的绳子。网上下的 STL文件,重新画图建模,用这个外壳,需要对线的 Micro USB插头处理下,不然可能不太容易插上。

项目地址

展开 收起
37评论

  • 精彩
  • 最新
  • 空投箱么?

    校验提示文案

    提交
    嗯,空投箱外壳。

    校验提示文案

    提交
    收起所有回复
  • 这有啥用?

    校验提示文案

    提交
    可以设定组合键,一键多命令,你可以看下B 站那个视频,我现在是用来一键显示桌面。

    校验提示文案

    提交
    收起所有回复
  • 还是没看明白怎么做到的 事不是我弱爆了

    校验提示文案

    提交
    哪里没看明白?我自己不知道哪里有坑,可以再详细点。

    校验提示文案

    提交
    我看到了第二张图 [喜极而泣] [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 就是只有一个按键的键盘,适合法师打副本。

    校验提示文案

    提交
    我同事就是用来玩游戏,连击,一下50个"Q"键。

    校验提示文案

    提交
    收起所有回复
  • B站看了好多做键盘的视频,好简单,自己买了一堆配件,买了电烙铁,买了二手轴板,发现连他妈一个轴都拆不下来。

    校验提示文案

    提交
    拆轴对于新手 不是太友好 你可以吸锡,或者堆锡,焊接容易。

    校验提示文案

    提交
    空心针会拆起来容易一点,但是吸锡器是必须要学上手,慢慢适应的。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 生命在于折腾 [邪恶]

    校验提示文案

    提交
    这个键盘 用好了 其实可以方便很多 颜值也不低。

    校验提示文案

    提交
    这个还行 有点实用价值

    校验提示文案

    提交
    收起所有回复
  • 有没有只有上下左右回车esc的无线键盘?

    校验提示文案

    提交
    要是那样的话 这个主控不行 得用Leonardo

    校验提示文案

    提交
    收起所有回复
  • 想要第一个图双手键盘地址,或者再写一篇啊

    校验提示文案

    提交
    英文水平咋样?爬英文能爬吗?

    校验提示文案

    提交
    放个地址把

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 没有3D打印机可咋弄勒

    校验提示文案

    提交
    x宝,万能的。

    校验提示文案

    提交
    收起所有回复
  • github怎么找项目啊

    校验提示文案

    提交
    搜关键词啊 一搜就找到了

    校验提示文案

    提交
    收起所有回复
  • 轴连接芯片pin2时,是要把原来连接剪断吗

    校验提示文案

    提交
    断不断都行,只要链接到上就行,没连接的时候是悬空,没影响。

    校验提示文案

    提交
    收起所有回复
  • 前辈您好。按照您的资料自制了一枚小键盘用于绘画时常用的ctrl+Z键。我想再请教一下,ATTINY85这种板子能判断长按和点按吗?现在的情况是:长按会持续loop定义的功能键。但我如果希望长按不松时只触发一次,怎样做到呢?望请指教,辛苦了~

    校验提示文案

    提交
    很高兴这个小键盘对你的工作带来便利。网上有很多Arduino按键长按短按的代码,修改下就行,触发不同的减值。

    校验提示文案

    提交
    我尝试按照您的指点去查找相关资料。但发现网上检测长按的代码逻辑是“通过计时,判断为长按时,执行某个程序,或键值”。就是像长按弹出菜单类似的结果。而我希望的是,“按下时立刻执行键值,并不延迟,并在抬起按钮前,永远不执行第二次,无论按多久。”这个应该有办法解决吗?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 请问楼主 jorne这个是不是有无线版本的 我看闲鱼有人出。要是无线,为什么不左右各一个主控呢?中间有个线别扭

    校验提示文案

    提交
  • 还想请问下这个jorne,是通过qmk命令行修改键值的吗?可以加个联系方式么,关于这个键盘想请教一下

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
64
扫一下,分享更方便,购买更轻松