本帖最后由 踏平幼稚园 于 2016-11-21 22:07 编辑 # \$ M# A3 Q1 k' a9 C5 T6 z! C' {( l 忙了2、3个月了,终于有点小成果了,下面跟大家分享一下。 11月20更新: 1、灯控代码更新,解决灯效显示bug; 2、stm32l432引脚布局更改,解决灯控中有一路pwm的io脚与usb引脚冲突的bug;* M6 s; H$ f: Q. G! l2 b( c 3、灯终于到了,视频演示出增加灯控视频(目前实现了三种:全亮<亮度可调>、全呼吸<频率可调>、按键行点亮<亮度可调>); : Q! \* ~% Y# j5 Z! o q4 R2 ~ 首先:说一下项目发起理由,主要是因为手上现有机械键盘为usb键盘,不支持蓝牙,灯效过少且定制性差。 ( L2 `( s+ g/ y- Y( v ) r% Z0 `3 M2 G/ c1 b! U2 } 项目目标: 改造键盘,增加蓝牙、usb、扩展灯效。# X* }6 v2 M. W% i) y# D* `, b/ H: P 方案:蓝牙da14583(就是那个功耗低到没朋友的货)主要实现按键检测,蓝牙键盘;stm32L432(这个功耗也非常低,性能也很强)实现主要usb键盘及灯控。补充:因为有吧友问到,这里说一下键盘型号:ikbc c87。2 ^* X, c6 `/ I0 o6 ?% H & ~- V: i) J- `+ e8 j - y3 x0 M4 U% D2 k W 接下来分别介绍软、硬件部分具体实现:* v m c+ z" t7 V7 |& f$ D5 W9 c" v 一、软件(蓝牙、stm32):: M) \* i6 X% N& |# z4 _' p 1、整体框架- C2 |# p- ]5 z, K 2、主程序流程 a、蓝牙部分:按键扫描,键码映射( 通过硬件部分可得到映射表),蓝牙按键发送,发送协议数据。流程如下:9 d& z- ]7 K3 z/ K5 i2 @0 W 9 g3 A/ Q/ I" x' C b、stm32L432:主程序结构,协议处理,usb键盘枚举,usb按键发送,灯控。流程如下: + s% A& K& Z9 k i$ A- c, M) ~ 3、通信协议介绍: 目前使用的串口通信,为减少协议开销,提高按键实时性,协议由两个字节:1 L0 _' N; s: e: M: ^# ? D # [: m9 Z$ y& K V% e7 W/ F 4、灯效3 R& |' q$ I1 H) S7 C: p 目前实现的灯控包括: a、全灭; b、全亮(可调亮度);2 p3 c4 g7 R: c) s4 D9 a c、全呼吸灯(可调呼吸速度); d、按键对应行亮(可调亮度);) F, g5 U! z, l9 d/ ^ - b6 G r+ T: W: k7 y ( s& F1 W. L1 _, e8 t9 Q6 O( P 二、硬件:4 q6 F* E U5 ?: p& i C( N 1、检测键盘引脚与主控引脚对应关系(主要包括按键行列引脚,led控制引脚,电源引脚),检测方法:万用表测导通 2、准备usb按键对应码表一份,如下图:https://pan.baidu.com/s/1gfwnVSR ) C; P3 x: }$ X3 }1 c2 w 3,再根据引脚关系和键码表,可得出下表* g0 g" `2 B |$ c3 H9 I + b' |$ P* X" e1 j. d6 X* _* ] 4、拆键盘主控,用飞线大法连接蓝牙,nucleoL432等 a、键盘主控引脚飞线,40多跟。。。。。累死了! d! Y; [7 }5 n: G & e( f: l4 f# T) i% p/ V b、蓝牙模块跳线部分 * k' m0 U7 X) l9 r, Q# x c、nucleoL432主控板,灯控线没有连接,所以看起来线不多,图中至连接了串口和usb 5、上电调试* s6 `( \$ E5 I4 P! h5 P4 r , r6 e6 D, s. S. L . Z5 p3 \+ k( J" g 至此:" X+ K2 x2 s4 o$ p U: A3 | 基本功能完成,其中灯控是以行为单位。 以下是视频演示:; M' o; K+ ]0 h2 c3 j. { 1、基于蓝牙的键盘部分 % d/ k' {. C" Y t1 E$ X6 G 2、基于nucleoL432的usb键盘部分# t' W8 u# O; U5 j8 K 3、基于nucleoL432的灯控部分(灯控部分更新上传) . B: s1 R8 A( @5 B' c0 s5 ]/ ] 最后、不足及待完善的部分: 1、键盘硬件支持全键无冲,现在软件只是实现了标准usb键盘设备,最多同时发送6个按键,全键无冲部分待实现; 2、灯控现在是行控制,灯效扩展空间及其有限,以后会改为行列控制模式(飞线),甚至改成rgb行列模式(重画pcb),以实现更多效果; 3、当前通信方式为串口,速率过慢,虽然感觉不到按键延迟,但是按键响应越及时越好,以后接下来会将改为spi;. m1 ?3 R+ q, ?& z' }& R* p 4、电池电源管理和睡眠还没有实现,低功耗也是本次改造机械键盘的主要目的之一,待增加;( s) |; f6 m# G 5、按键映射只做了基本按键功能,fn加按键的映射键位暂未实现; 6、键盘目前是调试完善阶段,所以板子都是直接飞线裸露在外面,同时键盘也因此不能组装起来,待调试稳定之后,会为蓝牙增加ota功能,stm32L432增加串口升级固件功能,并集成到键盘外壳中。 % Q! }3 J2 k8 G+ X# f2 C }& l nucleoL432代码(已更新): |
蓝牙部分 爱板网经验频道做过分享过经验【DA14580DEVKT-B评估板】http://jingyan.eeboard.com/article/75260 这是第一部分链接,一共7部分剩下的自己搜5 i8 \6 \1 X0 }2 a2 T d
我也喜欢简约,对绚丽的灯效外观之类没太大兴趣 加灯只因为看着那么多没用的io口舍不得浪费
我说呐,国内现在许多键盘都是看着就绚丽的要命。这一个看着挺适合办公用。我就比较喜欢。! F5 D) |( }, b. N* W. D3 n
感谢楼主的分享
ikbc c87
感谢 支持