本帖最后由 踏平幼稚园 于 2016-11-21 22:07 编辑 ; C2 ^5 ^, {- e3 c 0 l7 e6 b+ D) c& U& `& ` 忙了2、3个月了,终于有点小成果了,下面跟大家分享一下。; ?; B5 I- M, W, r% J 11月20更新:$ N& q6 X2 V8 h/ d9 z* j 1、灯控代码更新,解决灯效显示bug;* a. G2 w7 @# H! ] 2、stm32l432引脚布局更改,解决灯控中有一路pwm的io脚与usb引脚冲突的bug;5 C/ J* ~0 w+ J+ ~. L 3、灯终于到了,视频演示出增加灯控视频(目前实现了三种:全亮<亮度可调>、全呼吸<频率可调>、按键行点亮<亮度可调>); ; r5 y' |8 E( z9 C( |, d+ E8 U6 n/ D / W7 i2 f# }9 Y. c' ` 首先:说一下项目发起理由,主要是因为手上现有机械键盘为usb键盘,不支持蓝牙,灯效过少且定制性差。 : p. {4 H% _) A+ [ `$ v) { 项目目标: 改造键盘,增加蓝牙、usb、扩展灯效。 方案:蓝牙da14583(就是那个功耗低到没朋友的货)主要实现按键检测,蓝牙键盘;stm32L432(这个功耗也非常低,性能也很强)实现主要usb键盘及灯控。补充:因为有吧友问到,这里说一下键盘型号:ikbc c87。 : O" c" O$ i) T0 y$ q5 j 接下来分别介绍软、硬件部分具体实现:) Z) d, P- K2 z! d/ r8 o3 d# v# n 一、软件(蓝牙、stm32): 1、整体框架* `+ D( B* o; N 2、主程序流程6 D# K# z( r8 q, W6 m( s a、蓝牙部分:按键扫描,键码映射( 通过硬件部分可得到映射表),蓝牙按键发送,发送协议数据。流程如下:; {) g1 z b- Y% a. y- w b、stm32L432:主程序结构,协议处理,usb键盘枚举,usb按键发送,灯控。流程如下:3 h8 e! ]7 u' t9 R4 c, ^5 B * P2 d/ _$ x5 j 3、通信协议介绍:% q% G8 ]4 s/ x& T% x6 i 目前使用的串口通信,为减少协议开销,提高按键实时性,协议由两个字节:# ?! ?3 i: K4 P: a+ k & _6 A) M( x; \% F; l/ ~, ^; I 4、灯效/ S& R n, q1 [# C 目前实现的灯控包括: a、全灭; b、全亮(可调亮度);, t6 a u, m! J9 g+ `+ C c、全呼吸灯(可调呼吸速度);( N4 t$ w4 H) I1 t d、按键对应行亮(可调亮度);& l2 p( V0 B( \ g , Z# q- S' w- H0 y6 N4 t2 e- j * ]+ C! @/ x% f: Y, q1 w; [+ l* Y 二、硬件: 1、检测键盘引脚与主控引脚对应关系(主要包括按键行列引脚,led控制引脚,电源引脚),检测方法:万用表测导通 2、准备usb按键对应码表一份,如下图:https://pan.baidu.com/s/1gfwnVSR; y( q, c0 g5 H/ A# o 3,再根据引脚关系和键码表,可得出下表1 P; r5 ^; p3 p! A ^1 K + J: K p3 D" v ]9 X2 u * h. Q* D3 W' G1 @* e 4、拆键盘主控,用飞线大法连接蓝牙,nucleoL432等 a、键盘主控引脚飞线,40多跟。。。。。累死了 b、蓝牙模块跳线部分 / f9 L2 Z' e. Q+ u) n c、nucleoL432主控板,灯控线没有连接,所以看起来线不多,图中至连接了串口和usb! n# Y' Y( A6 a% G% _+ Z: i " Y1 K M. G% S. o8 J" I: Y" q9 f 5、上电调试; R) L" [" P2 i+ V6 \' K ) P/ }8 {: ]$ L* g& e1 m . i6 J, K' j; J 至此:0 U1 v: \3 B5 ]9 V# O1 x; b 基本功能完成,其中灯控是以行为单位。 以下是视频演示:$ q% X( g& m0 Z* \2 H. K 1、基于蓝牙的键盘部分 / d: i! h6 s& t( ?5 ]2 L 2、基于nucleoL432的usb键盘部分 * f6 n- v- b7 V+ v4 v, r9 ~ 3、基于nucleoL432的灯控部分(灯控部分更新上传) 最后、不足及待完善的部分: 1、键盘硬件支持全键无冲,现在软件只是实现了标准usb键盘设备,最多同时发送6个按键,全键无冲部分待实现; 2、灯控现在是行控制,灯效扩展空间及其有限,以后会改为行列控制模式(飞线),甚至改成rgb行列模式(重画pcb),以实现更多效果;1 ~2 {6 W# l8 f2 X- T* @5 z1 u 3、当前通信方式为串口,速率过慢,虽然感觉不到按键延迟,但是按键响应越及时越好,以后接下来会将改为spi;! L4 B' d5 D, O. _ 4、电池电源管理和睡眠还没有实现,低功耗也是本次改造机械键盘的主要目的之一,待增加;5 L3 e* S, v8 A; @ 5、按键映射只做了基本按键功能,fn加按键的映射键位暂未实现;6 Z' B" S e7 P# L3 O- ^9 [ 6、键盘目前是调试完善阶段,所以板子都是直接飞线裸露在外面,同时键盘也因此不能组装起来,待调试稳定之后,会为蓝牙增加ota功能,stm32L432增加串口升级固件功能,并集成到键盘外壳中。; [9 _. r( l+ X - h; z% x8 K1 t $ Z: G5 X1 ~/ c6 `" j8 v nucleoL432代码(已更新): |
蓝牙部分 爱板网经验频道做过分享过经验【DA14580DEVKT-B评估板】http://jingyan.eeboard.com/article/75260 这是第一部分链接,一共7部分剩下的自己搜% m, C3 Q8 a8 L8 m) p* M
我也喜欢简约,对绚丽的灯效外观之类没太大兴趣 加灯只因为看着那么多没用的io口舍不得浪费
我说呐,国内现在许多键盘都是看着就绚丽的要命。这一个看着挺适合办公用。我就比较喜欢。5 l& E8 _/ }. y2 r3 D0 W
( e& k/ ], ^9 O* P3 W5 F; J- A1 q
感谢楼主的分享
ikbc c87
感谢 支持