Open genokolar opened 5 years ago
留言测试
咦,我们用一样的博客应用,而且都是键盘侠。
咦,我们用一样的博客应用,而且都是键盘侠。
我从你的博客看到的。哈哈~!!老罗
google来的,非常赞,如果早看到就好了,现在在折腾无线优联+usb2usb的方案,收藏一下,这阵子忙完了学习一下,非常感谢:-)
你好 是否能提供一下Kicad的工程文件呢 希望修改一下图案
改图案什么的不太好吧。要么就自己建,原理图和bom都有的。暂时不公开工程文件。
改图案什么的不太好吧。要么就自己建,原理图和bom都有的。暂时不公开工程文件。
好的 还是十分感谢
很详细,有没有能买到样品呢?求一个
刚刚买了楼主一块PCB,到手看看怎么样
要是早点看到就好了,也是折腾Jim的蓝牙开源方案。
咦,我们用一样的博客应用,而且都是键盘侠。
你的飞线键盘好sao,不愧是键盘侠
2019年开年后,发现了Jim的蓝牙开源方案,基于NRF51822,感觉很不错,决定折腾蓝牙机械键盘。从1月底开始研究,购买需要的开发板、蓝牙模块、元件,打板PCB,研读源码,到最终完成成品,耗时一个月。现在基本完成,整个工程学了很多东西,比如Keli编译、单片机烧录固件、对芯片数据手册进行学习等。最终的蓝牙键盘个人也比较满意。感谢Jim开放的源代码,以及细心的解答各种问题,以下是相关制作过程的记录:
A、购买芯片工具
蓝牙主控板:RF-BM-ND01 点击淘宝购买
Jlink烧录工具:J-OB V2
其他芯片:CH552T(USB)、TP4057(锂电池充电)、XC6206P30(3.3V稳压)
整个BOM清单详见表格(以60%键盘为例,部分元件需要根据轴的个数确定数量)
成本方面给大家也算一下:
自己焊的话能节约焊接费用,但是其实焊接人工费就高了。如果对价格不敏感,可以直接PCB厂商进行SMT,节约大量时间。以最据性价比的嘉立创计算,一张PCB的SMT成本大约20元。
当然你还需要有电洛铁、USB数据线什么的工具,不累述。锂电池也应该准备一个,电池大小1000mah左右的应该都能放下(自己根据自己壳子选择大小)
B、软件下载安装
Keil 5 --编译工具 用于编译蓝牙芯片APP DFU两部分固件,并烧录固件
Jlink驱动 --烧录工具驱动 官网最新版下载
以上软件分享地址:https://pan.baidu.com/s/1PkUEUNOMQgMm7IrDNyoOjA
Code Blocks --编译工具,开源免费 点击进入官网下载地址
SDCC --C编译工具,开源免费 点击进入官网下载地址
以上Code Blocks和SDCC用于编译CH544的固件。
WCHISPTool --CH55X固件烧录工具(可通过USB烧录) 点击进入官网下载地址
C、源代码电路板
键盘固件等源码:https://github.com/genokolar/nrf51822-keyboard
PCB电路 :https://github.com/genokolar/GT_BLE60_Keyboard_PCB 注:可以直接打板使用。
预编译键盘固件、配例下载工具: https://github.com/genokolar/nrf51822-keyboard/releases
D、学习教程推荐
Keil的系列教程 : https://www.strongerhuang.com/Keil/Keil系列教程.html
Jlink烧录固件 : https://blog.csdn.net/weixin_42108484/article/details/80533032
E、键盘使用说明
休眠按键:Fn2+ESC - 15分钟不按键自动休眠,自动休眠后可按任意键唤醒;按Fn2+ESC键可以手动进入休眠模式,手动休眠后只能按ESC键(第一个按钮)才可以唤醒。
注:GT-BLE60默认将APP/MENU键设定为Fn2键,可通过配例自由设定更改
关机按钮:Fn2+Backspace - 按Fn2+Backspace键可以手动进入关机模式,关机后需要按背部的Bootloader按钮才可重新开机。
清空蓝牙绑定信息按键:SPACE+E - 每次唤醒或开机同时立即按SPACE+E可以清空蓝牙绑定信息。
切换连接模式按键:Fn2+TAB - 在通过USB和蓝牙同时连接一台设备(也可通过USB连接一台设备、蓝牙连接另一台设备)的情况下,按Fn2+TAB可以切换连接模式。如未同时使用USB模式和蓝牙模式,此按键无效。
清空Keymap自定义配例:SPACE+BACKSPACE - 每次唤醒或开机同时按SPACE+BACKSPACE可以清空自定义配例信息。如果出现按键错乱,也可以采用此键恢复初始配例。其余BOOTMAGIC键参考TMK,是基本一样的。
切换默认层 - 每次唤醒或开机通过同时按住SPACE+0、SPACE+1,切换第0层或第1层为默认层。默认配列中第0层启用了二合一按键作为方向键,第1层中未启用二合一方向键,启用了二合一按键作为Menu键。详细参看源码配例文件。此默认层设定将存储,重启或者休眠后唤醒都会恢复你设置的默认层。
切换临时默认层 - 通过同时按住Lshift+Rshift不放,按0、1,切第0层或第1层为默认层。此临时默认层不做记录,重启或者休眠后唤醒都会恢复第0层为默认层。
关于耗电 - 由于硬件上采用的低功耗蓝牙芯片,功耗控制的相当的好。官方数据来看,使用时耗电每小时为10ma左右,休眠时耗电为5ua。从自己使用感受看,1000mah的锂电池,每天2小时使用时间,大体使用时间80天以上。如果自己调整源码的相关省电参数,功耗还可以继续降低。
关于蓝牙通讯 - 蓝牙通讯上,延迟基本不存在,通过KeyboardTest测试出来的延迟,蓝牙模式下单按大约是120ms,双按键大概是2ms,USB模式下单按键大约是135ms,双按键大约是2ms(个人认为这个测试数据仅供参考,并不一定科学,因为居然比AKKO 3108的数据还好 ))。由于是低功耗,实测有效使用距离是5米内。耗电也和蓝牙信号有关,信号越好,耗电越低。
相关参数的设定 - 考虑到耗电问题,正常键盘扫描按键输入为4ms一次,回报率为250Mhz;如果两分钟不按键转入慢速扫描,100ms一次,当有按键按下,又自动转入正常扫描速度4ms一次;如果15分钟无按键行为将自动转入休眠模式,此时要重新启用键盘,只需要按任意键就可唤醒,唤醒动作后约1-2s可以正常输入。
默认按键设定
默认按键共有4层,1、2层是不同的全局按键设定,3、4层是功能按键设定。查看默认按键设定。
自定义按键
自定义按键采用Tkg网页+配例下载工具的方式实现:通过网站(因为tkg.io官网没支持,我自己建立了一个:kb.glab.online)配置好按键,然后下载keymap.eep文件,通过专门的刷配例软件KeymapDownloader.exe刷入蓝牙芯片。如下图
DFU空中升级
除了初次烧录固件需要jlink外,后续升级固件可以通过手机蓝牙连接键盘,通过DFU模式更新固件。 点击查看详细升级方法
F、制作过程记录
因为考虑外壳的问题,本次制作的是BLE60,现在已经完成了初步的固件测试和PCB设计制作,接下来就是打板制作、焊接测试了。-- 2019-02-10
PCB打板回来了,焊接测试完成,经过测试调整,蓝牙键盘部分已经没有问题,由于部分的元件才收到,暂时没有焊接USB芯片和锂电池充电芯片。从测试结果来看,蓝牙连接的延迟并不高,完全可以做到实时输入,耗电情况也非常良好。断断续续用了两天,电量仅仅下降1%。接下来根据个人使用测试情况,继续请教JIM,做相关调整吧。 -- 2019-02-19
完成了USB芯片和锂电池的焊接工作,CH552完成了固件编译,并烧入了固件。到现在为止,PCB板一共发现了两处错误,都是原理图符号不标准的锅,一处只需要反着焊开关二极管即可,一处是USB的D+/D-反了,这个我只好破坏原线路,然后重新飞了线。从测试来看,双模工作都算正常,但是也有一些小问题需要解决。已知BUG是USB模式下二合一键存在问题。--2019-02-21
添加了蓝牙连接指示灯,调整了灯的工作方式为常亮,JIM修正了电池初次上传错误问题 -- 2019年2月23日
Jim更细了LED驱动,个人根据GT BLE60硬件完成了bootloader的修改,根据新LED驱动更改了蓝牙连接指示,基本没有大的问题了。GT BLE60的PCB文件已经修正错误 --2019年3月1日
调整暂时完成,今天更改了相关参数,准备开始长期使用。将预编译的HEX文件以及当前源代码已经同步到github。如果有兴趣的可以直接用公开的PCB打板,然后焊接完成后用Jlink刷入源码固件、通过USB刷入USB部分的固件即可使用,算是傻瓜式的了。相关说明会逐步更新 --2019年3月3日
近期完成了配例下载的测试(自己搭了个私有的tkg网页测试配列下载),DFU升级部分也通过了,暂时使用官方的源码小修改后编译了一个能用的bootloader(SDK12.3、SDK15.2里面的DFU升级也测试通过)。简单来说,以后升级固件可以不依赖Jlink,更改键盘配列也很简单了。 --2019年3月14日
修正了充电指示灯不工作问题,移除了看门狗 。 --2019年3月23日
更改了指示灯的工作模式,以便更加省电。 --2019年3月31日
修正了最大的问题:usb模式下二合一按键第一次短按丢包。然后做了一些其他其他更改。这个蓝牙双模方案固件方面没有啥大问题了。硬件电路还可以稍微改进下,等待我的Rev.D版本回来验证。 --2019年4月16日
修正的源码里面Bootloader无法DFU升级的问题;对休眠、关机方式进行了修改,当前不再使用两种模式,都采用自动休眠任意键唤醒,手动休眠ESC唤醒或BL按钮唤醒方式,方便对电源进行管理;重新启用了看门狗以及一些参数微调。nRF51的BLE keyboard基本完成,不再做修改。 --2019年5月12日
G、更改调试记录
现在CH552和NRF51822通讯,CH552采用的uart1接口,CH552的fsys设置为12Mhz,uart1波特率设置为57600。同时NRF51822的时钟频率为16Mhz,波特率设置的57600。实测,两者设置波特率不能高于57600,时钟频率CH552仅能设置为12Mhz,否则均无法进行通讯。(但根据官方说明,在5V供电,24Mhz主频下,波特率可以设置为115200,但是实测不行,待查)(2019年6月19日更新:已经可以再24Mhz、115200波特率下通讯)
当前几个地址记录:SD: ROM1 : 0x0 :0x18000,RAM1: 0x20000000 : 0x2000; APP : ROM1 : 0x18000 : 0x24000,RAM1 : 0x20002000 : 0x2000 ; BL :ROM1 : 0x3C000 : 0x3C00,RAM1 : 0x20002C00 : 0x1380 : RAM2 : 0x20003F80 : 0x80; --- 其中softdevice需要占用96KB,APP空间为144KB,实际占用约38KB,Bootlaoder空间为16KB,实际占用约12KB
SDK12.3的地址记录:SD: ROM1 : 0x0 :0x1B000,RAM1: 0x20000000 : 0x2000; APP : ROM1 : 0x1B000 : 0x25000,RAM1 : 0x200025E0 : 0x1A20 ; BL :ROM1 : 0x3AC00 : 0x5000,RAM1 : 0x200025E0 : 0x19A0 : RAM2 : 0x20003F80 : 0x80;
二合一按键在USB模式下第一次短按失效,已经修复。其实就是第一次短按,由于识别二合一是按键还是MOD是在释放的时候完成的,在释放的时候会同时发送按下和释放按键的数据包,而蓝牙主控和USB串口通讯速率达不到,造成了丢包,直接更改tmk的源码加一个10ms的延迟就好了。