本帖最后由 踏平幼稚园 于 2016-11-21 22:07 编辑 0 F' p% N8 {- X" D8 @ 忙了2、3个月了,终于有点小成果了,下面跟大家分享一下。 11月20更新:! B5 v+ x3 o; }( W& q1 K2 E. P 1、灯控代码更新,解决灯效显示bug;# k; U! N G# @3 A 2、stm32l432引脚布局更改,解决灯控中有一路pwm的io脚与usb引脚冲突的bug;7 z" y" h% L$ {% b+ \ 3、灯终于到了,视频演示出增加灯控视频(目前实现了三种:全亮<亮度可调>、全呼吸<频率可调>、按键行点亮<亮度可调>); ( H6 I1 P5 R& l * J1 W; Q$ A. P 首先:说一下项目发起理由,主要是因为手上现有机械键盘为usb键盘,不支持蓝牙,灯效过少且定制性差。 项目目标: 改造键盘,增加蓝牙、usb、扩展灯效。1 m! O0 c& Q {* B! I % b5 b2 `- Z$ y' C; S! C l; D7 d 方案:蓝牙da14583(就是那个功耗低到没朋友的货)主要实现按键检测,蓝牙键盘;stm32L432(这个功耗也非常低,性能也很强)实现主要usb键盘及灯控。补充:因为有吧友问到,这里说一下键盘型号:ikbc c87。% \2 r j/ f) t; F3 Q I) u8 I5 H# V* K 9 M8 V+ \. ]9 f; M4 M5 o Y 接下来分别介绍软、硬件部分具体实现: 一、软件(蓝牙、stm32):- I- }! N8 [: g0 e Z6 ^, z) A 1、整体框架 2、主程序流程 a、蓝牙部分:按键扫描,键码映射( 通过硬件部分可得到映射表),蓝牙按键发送,发送协议数据。流程如下:/ f$ S& z* t* s# s7 X; ^7 b8 h 7 d3 c' ?6 p1 A b、stm32L432:主程序结构,协议处理,usb键盘枚举,usb按键发送,灯控。流程如下:0 ]/ v0 N( [8 r# Q; h 3、通信协议介绍: 目前使用的串口通信,为减少协议开销,提高按键实时性,协议由两个字节:+ h. r* T4 @7 w7 l- B) L3 z 4、灯效 目前实现的灯控包括:# D& {; p" u7 J' k: g9 j } a、全灭;3 s1 v" W. X$ [1 F* i- z b、全亮(可调亮度);) u* W9 g* p* |- k; ? c、全呼吸灯(可调呼吸速度);, }: Y9 z2 w1 ^* X* K5 Q- k d、按键对应行亮(可调亮度); ( g3 d# U! N4 R% G 二、硬件:' ^3 R* k4 H2 ` 1、检测键盘引脚与主控引脚对应关系(主要包括按键行列引脚,led控制引脚,电源引脚),检测方法:万用表测导通% I* V6 B4 x% Y 2、准备usb按键对应码表一份,如下图:https://pan.baidu.com/s/1gfwnVSR! ?/ h: w1 G- j. T" ^5 r 3,再根据引脚关系和键码表,可得出下表% z3 c* ?2 K( u: I: L 7 `5 R* k3 ]. d/ W: F0 s; x 4、拆键盘主控,用飞线大法连接蓝牙,nucleoL432等! U Q" j1 ?, H2 `) u5 w a、键盘主控引脚飞线,40多跟。。。。。累死了 b、蓝牙模块跳线部分 c、nucleoL432主控板,灯控线没有连接,所以看起来线不多,图中至连接了串口和usb( Z4 k9 `) B, q4 D( i/ ?# z8 ^, Z % M, I5 F+ u3 M 5、上电调试 ' d/ ~3 f- A# f* M- t' g4 c4 s7 K( ` / c$ ?; s# s; B" \9 O 至此:! S3 I% \5 ~" r8 W 基本功能完成,其中灯控是以行为单位。 $ x* }. l2 w1 Q" B3 a! L 以下是视频演示: 1、基于蓝牙的键盘部分. W4 G+ o. x4 M% K- e* [ % t5 K- \5 w |0 t7 u( a 2 b: z L) u# o/ ~/ `5 b# | 2、基于nucleoL432的usb键盘部分, \" G1 {7 U5 o1 C; k9 D 1 q' |; N7 l( ^; c / r, y1 e' m3 ?" K; v2 A7 N 3、基于nucleoL432的灯控部分(灯控部分更新上传) 最后、不足及待完善的部分: 1、键盘硬件支持全键无冲,现在软件只是实现了标准usb键盘设备,最多同时发送6个按键,全键无冲部分待实现; 2、灯控现在是行控制,灯效扩展空间及其有限,以后会改为行列控制模式(飞线),甚至改成rgb行列模式(重画pcb),以实现更多效果;! f$ u% h, W2 k/ u, c 3、当前通信方式为串口,速率过慢,虽然感觉不到按键延迟,但是按键响应越及时越好,以后接下来会将改为spi;4 g+ K* e. q, N3 J 4、电池电源管理和睡眠还没有实现,低功耗也是本次改造机械键盘的主要目的之一,待增加;9 {9 Z e# V/ g2 r, G% g 5、按键映射只做了基本按键功能,fn加按键的映射键位暂未实现;+ m- |( H" W7 @' q 6、键盘目前是调试完善阶段,所以板子都是直接飞线裸露在外面,同时键盘也因此不能组装起来,待调试稳定之后,会为蓝牙增加ota功能,stm32L432增加串口升级固件功能,并集成到键盘外壳中。 & Q. B7 T. u. ?% b' p nucleoL432代码(已更新): |
蓝牙部分 爱板网经验频道做过分享过经验【DA14580DEVKT-B评估板】http://jingyan.eeboard.com/article/75260 这是第一部分链接,一共7部分剩下的自己搜1 T' h" Y: z! `) W
我也喜欢简约,对绚丽的灯效外观之类没太大兴趣 加灯只因为看着那么多没用的io口舍不得浪费
我说呐,国内现在许多键盘都是看着就绚丽的要命。这一个看着挺适合办公用。我就比较喜欢。$ i4 w! \2 _: m8 H4 m: T
# v2 r8 n3 l# P
感谢楼主的分享
ikbc c87
感谢 支持