|
本帖最后由 踏平幼稚园 于 2016-11-21 22:07 编辑 # l. v, F7 s' a* U/ P4 S2 s 2 d: x! U* G0 U8 S 忙了2、3个月了,终于有点小成果了,下面跟大家分享一下。 4 K2 p' c& F7 { 11月20更新:/ _3 |# i6 {. F! k/ R ? 1、灯控代码更新,解决灯效显示bug; 2、stm32l432引脚布局更改,解决灯控中有一路pwm的io脚与usb引脚冲突的bug;6 n/ U, e" n. j7 p7 I4 j5 U# E 3、灯终于到了,视频演示出增加灯控视频(目前实现了三种:全亮<亮度可调>、全呼吸<频率可调>、按键行点亮<亮度可调>);! ?7 A( m, r* Q. w' a 首先:说一下项目发起理由,主要是因为手上现有机械键盘为usb键盘,不支持蓝牙,灯效过少且定制性差。 项目目标: 改造键盘,增加蓝牙、usb、扩展灯效。% D: B" j' z1 ^6 w/ v: ?1 f- y1 I 8 R# ?3 n9 v2 Z- P 方案:蓝牙da14583(就是那个功耗低到没朋友的货)主要实现按键检测,蓝牙键盘;stm32L432(这个功耗也非常低,性能也很强)实现主要usb键盘及灯控。补充:因为有吧友问到,这里说一下键盘型号:ikbc c87。- N2 a. p' E3 e8 I5 m 接下来分别介绍软、硬件部分具体实现: 一、软件(蓝牙、stm32):' c0 _& O) B8 m3 j2 ` 1、整体框架
2、主程序流程" l; L" G3 s3 I1 ]0 E# u D a、蓝牙部分:按键扫描,键码映射( 通过硬件部分可得到映射表),蓝牙按键发送,发送协议数据。流程如下:
' A& `8 N- w6 W. C# m1 q, R7 k8 C b、stm32L432:主程序结构,协议处理,usb键盘枚举,usb按键发送,灯控。流程如下:
. s+ t1 l' @7 ^+ t3 u1 n6 I4 D 3、通信协议介绍:4 Z/ ?; d) S. G 目前使用的串口通信,为减少协议开销,提高按键实时性,协议由两个字节:
4、灯效 目前实现的灯控包括: a、全灭;. l9 N L c' M. U b、全亮(可调亮度);7 W8 c X2 L8 P c、全呼吸灯(可调呼吸速度); d、按键对应行亮(可调亮度);; i1 |: G Y G( X% A8 Z2 W 5 k8 i( I& z5 }& s P; r ; Y6 _/ R0 K5 ` 二、硬件: 1、检测键盘引脚与主控引脚对应关系(主要包括按键行列引脚,led控制引脚,电源引脚),检测方法:万用表测导通
2、准备usb按键对应码表一份,如下图:https://pan.baidu.com/s/1gfwnVSR+ D9 s) a) g* m: U) D4 g3 N3 D9 Q9 R% Q
, q. j2 ~# C6 {5 @; t% j 3,再根据引脚关系和键码表,可得出下表* p. t+ O$ T" h; E6 g! B$ u1 `
, A' J1 L" N1 E5 r$ k 8 ~+ j9 `! Z b7 v- D, _& q8 R 4、拆键盘主控,用飞线大法连接蓝牙,nucleoL432等7 \8 i% K6 w! L9 b, L a、键盘主控引脚飞线,40多跟。。。。。累死了
b、蓝牙模块跳线部分$ _( ?+ }1 w" K# g( X
c、nucleoL432主控板,灯控线没有连接,所以看起来线不多,图中至连接了串口和usb3 g1 w1 U1 R2 \2 g
' t( M: E9 b1 C7 r5 s" E# j; i 5、上电调试$ B! X5 c$ Z8 n" Q& Q* r! F& J) y
8 s4 w! l6 U7 m( X; T* w( V 2 I6 V# l" C* S0 g8 K 至此:8 j) X4 [9 ?% z 基本功能完成,其中灯控是以行为单位。 以下是视频演示: 1、基于蓝牙的键盘部分 2、基于nucleoL432的usb键盘部分 3、基于nucleoL432的灯控部分(灯控部分更新上传)7 V) f& O+ S: g3 s: l2 s 最后、不足及待完善的部分: 1、键盘硬件支持全键无冲,现在软件只是实现了标准usb键盘设备,最多同时发送6个按键,全键无冲部分待实现;: u( @- b8 p+ R- W 2、灯控现在是行控制,灯效扩展空间及其有限,以后会改为行列控制模式(飞线),甚至改成rgb行列模式(重画pcb),以实现更多效果; 3、当前通信方式为串口,速率过慢,虽然感觉不到按键延迟,但是按键响应越及时越好,以后接下来会将改为spi;% X$ x7 O6 V) j$ R: n3 u" k 4、电池电源管理和睡眠还没有实现,低功耗也是本次改造机械键盘的主要目的之一,待增加; 5、按键映射只做了基本按键功能,fn加按键的映射键位暂未实现; 6、键盘目前是调试完善阶段,所以板子都是直接飞线裸露在外面,同时键盘也因此不能组装起来,待调试稳定之后,会为蓝牙增加ota功能,stm32L432增加串口升级固件功能,并集成到键盘外壳中。 nucleoL432代码(已更新):
stm32_keyboard.zip
(1.77 MB, 下载次数: 255)
|
微信公众号
手机版
蓝牙部分 爱板网经验频道做过分享过经验【DA14580DEVKT-B评估板】http://jingyan.eeboard.com/article/75260 这是第一部分链接,一共7部分剩下的自己搜
我也喜欢简约,对绚丽的灯效外观之类没太大兴趣 加灯只因为看着那么多没用的io口舍不得浪费
我说呐,国内现在许多键盘都是看着就绚丽的要命。这一个看着挺适合办公用。我就比较喜欢。
0 L/ B6 W( r* S" a+ n" Y* {* M
感谢楼主的分享
ikbc c87
感谢 支持