大学时同学打游戏人手一个机械键盘,工作后经常写代码,于是想换一个顺手的机械键盘。淘宝看看各家的卖点大致为全键无冲,响应迅速,进口轴体,抗干扰磁环。不同点也只是在流水灯效和外观结构上。网上查了查键盘实现的原理,发现比较简单。加上自己工作上一直在接触USB协议,于是做一个USB机械键盘。先展示一下半成品,104个键通信正常,外壳还没有做,灯效目前只做了呼吸灯效果,还需要再改善一下。
硬件选型:MCU选择了WCH沁恒的8位单片机CH549L,因为公司一直在用他们家CH376T和CH340G芯片,在接口通信方面做得挺好的国产厂家。找原厂申请了几个样品,说一下当天就发了货,后面遇到技术问题支持也挺到位,非常感谢这位FAE!CH549L,资源大致如下。
机械轴我选择了青轴,触发键程2.4±0.6mm,压力克数60±1.5g,机械段感落感强,咔哒声音大,打字打游戏都可以。直接在淘宝上买了,65块钱110个按键,便宜质量也还不错。CIY设计的轴体,换轴很方便,手残的必备哈哈。
硬件设计: 键盘采用8×16的扫描矩阵,实际用了104个键,1000HZ的轮询速率,响应迅速挺快。每个按键处加了二极管,实现全键无冲。
芯片USB可选择1.5Mbps(LS)的低速模式,也可以选择全速12Mbps(FS)的工作模式,USB信号线直接输出无需添加上下拉电阻,PCB走线注意以下几点即可:
1)D+/D-平行走线,如果不能确保PCB走线质量,芯片可以放置到角落减少PCB走线;
2)D+/D-信号线上建议添加ESD保护器件,或者便宜一些的TVS管;
3)外部的USB线尽量选用带屏蔽的USB信号线,确保信号可以正确传输,如果线材较差,没有屏蔽,可以选用LS模式,对线材要求比较低;
4)由于采用外部供电,电源上最好加上自恢复保险丝,确保不会因为外部供电造成芯片损坏; 灯部分就有点偷工减料了,没有采用RGB灯,而是用了单色LED,节约成本鸭。而且觉得炫彩的太浮夸不适合打字用。
这是我设计的电路图:
PCB:
软件编写:
做USB键盘,不得不把USB HID协议看懂,就不具体展开讨论了。我这里是基于WCH官网CH549模拟键鼠的例程更改实现的,例程已经封装好USB设备模式配置,设备模式启动,收发端点配置和HIDValueHandle()等函数,所以改起来还是挺方便的。
全部0条评论
快来发表一下你的评论吧 !