-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nRF51 BLE60蓝牙双模机械键盘(蓝牙4.0) #2
Comments
留言测试 |
咦,我们用一样的博客应用,而且都是键盘侠。 |
我从你的博客看到的。哈哈~!!老罗 |
google来的,非常赞,如果早看到就好了,现在在折腾无线优联+usb2usb的方案,收藏一下,这阵子忙完了学习一下,非常感谢:-) |
你好 是否能提供一下Kicad的工程文件呢 希望修改一下图案 |
改图案什么的不太好吧。要么就自己建,原理图和bom都有的。暂时不公开工程文件。 |
好的 还是十分感谢 |
很详细,有没有能买到样品呢?求一个 |
刚刚买了楼主一块PCB,到手看看怎么样 |
要是早点看到就好了,也是折腾Jim的蓝牙开源方案。 |
你的飞线键盘好sao,不愧是键盘侠 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
2019年开年后,发现了Jim的蓝牙开源方案,基于NRF51822,感觉很不错,决定折腾蓝牙机械键盘。从1月底开始研究,购买需要的开发板、蓝牙模块、元件,打板PCB,研读源码,到最终完成成品,耗时一个月。现在基本完成,整个工程学了很多东西,比如Keli编译、单片机烧录固件、对芯片数据手册进行学习等。最终的蓝牙键盘个人也比较满意。感谢Jim开放的源代码,以及细心的解答各种问题,以下是相关制作过程的记录:
A、购买芯片工具
蓝牙主控板:RF-BM-ND01 点击淘宝购买
Jlink烧录工具:J-OB V2
其他芯片:CH552T(USB)、TP4057(锂电池充电)、XC6206P30(3.3V稳压)
整个BOM清单详见表格(以60%键盘为例,部分元件需要根据轴的个数确定数量)
成本方面给大家也算一下:
当然你还需要有电洛铁、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的延迟就好了。
The text was updated successfully, but these errors were encountered: