本帖最后由 踏平幼稚园 于 2016-11-21 22:07 编辑 + C. X( e, x: p% c5 ~+ i4 k : H7 s$ u# e) @; b' ^; N9 J, T$ P% }; o5 U 忙了2、3个月了,终于有点小成果了,下面跟大家分享一下。# p) |1 h8 ^" ]. x8 e# Z5 k 9 g9 ~7 k4 o& {3 h- q 11月20更新:3 T6 C3 u3 x- r% m9 n 1、灯控代码更新,解决灯效显示bug;0 _) K! _2 _7 m* B( p. {9 n% N 2、stm32l432引脚布局更改,解决灯控中有一路pwm的io脚与usb引脚冲突的bug; 3、灯终于到了,视频演示出增加灯控视频(目前实现了三种:全亮<亮度可调>、全呼吸<频率可调>、按键行点亮<亮度可调>); ( j: Y. i% | Q! q! _+ q! P# E/ B# N 5 u3 v4 C: w1 ?5 b8 N7 \ 首先:说一下项目发起理由,主要是因为手上现有机械键盘为usb键盘,不支持蓝牙,灯效过少且定制性差。 项目目标: 改造键盘,增加蓝牙、usb、扩展灯效。 方案:蓝牙da14583(就是那个功耗低到没朋友的货)主要实现按键检测,蓝牙键盘;stm32L432(这个功耗也非常低,性能也很强)实现主要usb键盘及灯控。补充:因为有吧友问到,这里说一下键盘型号:ikbc c87。# F; r; A, ^7 n2 K* C 1 i; C$ |" M2 H n, M+ z; M 接下来分别介绍软、硬件部分具体实现:6 T, G d$ @' c: f 一、软件(蓝牙、stm32):! o) Q3 z% _; Q( s% a) m" H 1、整体框架 \: y1 B: [; t* w# q+ L$ } 2、主程序流程: o2 }7 k# \6 J3 n a、蓝牙部分:按键扫描,键码映射( 通过硬件部分可得到映射表),蓝牙按键发送,发送协议数据。流程如下: b、stm32L432:主程序结构,协议处理,usb键盘枚举,usb按键发送,灯控。流程如下: 3、通信协议介绍:) C) ?: N' T x- X 目前使用的串口通信,为减少协议开销,提高按键实时性,协议由两个字节: 8 e/ b0 r+ A4 C 4、灯效( [4 H$ L" I. Z' ]7 w' w+ q 目前实现的灯控包括:6 U( W2 o, \/ D$ n2 Y a、全灭;, n4 ]6 T7 r+ R9 }" n- i b、全亮(可调亮度); c、全呼吸灯(可调呼吸速度); d、按键对应行亮(可调亮度); e% d9 n7 {. o) U$ i 5 j) R2 X* n6 p | 二、硬件: 1、检测键盘引脚与主控引脚对应关系(主要包括按键行列引脚,led控制引脚,电源引脚),检测方法:万用表测导通2 i3 e: d) q* j# q) f ~0 t3 t' v 8 J b7 T) Z" W3 W7 `3 Q 2、准备usb按键对应码表一份,如下图:https://pan.baidu.com/s/1gfwnVSR1 N" S8 t2 i; T/ { ( g1 V/ p7 B, y1 f( H1 Q 3,再根据引脚关系和键码表,可得出下表5 r8 r- O2 c+ ]0 r$ Q7 a! O; a ; ]: E3 R% x% r, C& i& S5 Y3 q 4、拆键盘主控,用飞线大法连接蓝牙,nucleoL432等 a、键盘主控引脚飞线,40多跟。。。。。累死了* g/ ?6 \1 U$ D, T# J6 `: n& f) D b、蓝牙模块跳线部分 c、nucleoL432主控板,灯控线没有连接,所以看起来线不多,图中至连接了串口和usb/ G8 s+ L* D/ V; A/ J 5、上电调试 $ g9 F3 ^! c/ L8 U 至此:3 v4 {( `6 n( S9 ?( ~9 T 基本功能完成,其中灯控是以行为单位。 3 \ I0 U6 v/ n! U) q$ ^) O$ y# { 以下是视频演示:0 C) \0 ~+ k6 @4 z% {; I7 q 1、基于蓝牙的键盘部分 ' e- m9 G+ c1 O9 L5 z 2、基于nucleoL432的usb键盘部分 8 R2 e* Y) b3 c1 o- ^" P 0 ^/ h$ ?% i& b, b/ P6 e/ G 3、基于nucleoL432的灯控部分(灯控部分更新上传) % s" v& {5 K7 E 最后、不足及待完善的部分:$ U$ L( X; X+ u. N# W 1、键盘硬件支持全键无冲,现在软件只是实现了标准usb键盘设备,最多同时发送6个按键,全键无冲部分待实现; 2、灯控现在是行控制,灯效扩展空间及其有限,以后会改为行列控制模式(飞线),甚至改成rgb行列模式(重画pcb),以实现更多效果;) G& P( g& e: Z' Y) h 3、当前通信方式为串口,速率过慢,虽然感觉不到按键延迟,但是按键响应越及时越好,以后接下来会将改为spi; 4、电池电源管理和睡眠还没有实现,低功耗也是本次改造机械键盘的主要目的之一,待增加; 5、按键映射只做了基本按键功能,fn加按键的映射键位暂未实现; [1 o5 |/ m) r3 Z 6、键盘目前是调试完善阶段,所以板子都是直接飞线裸露在外面,同时键盘也因此不能组装起来,待调试稳定之后,会为蓝牙增加ota功能,stm32L432增加串口升级固件功能,并集成到键盘外壳中。+ e" ]+ J* E ^' q N9 c5 G3 X 0 C7 Y( h" k4 j% i2 W7 \+ @ nucleoL432代码(已更新): |
蓝牙部分 爱板网经验频道做过分享过经验【DA14580DEVKT-B评估板】http://jingyan.eeboard.com/article/75260 这是第一部分链接,一共7部分剩下的自己搜. L2 z0 \( G3 }! F) a5 q- Z
我也喜欢简约,对绚丽的灯效外观之类没太大兴趣 加灯只因为看着那么多没用的io口舍不得浪费
我说呐,国内现在许多键盘都是看着就绚丽的要命。这一个看着挺适合办公用。我就比较喜欢。
感谢楼主的分享
ikbc c87
感谢 支持