
你见过这么有趣的键盘吗....(宏键盘可编程键盘)
简介
灵活多变的用户事件输入需求,让用户的输入更加的简单、便捷、高效和无限可能; 设计开发主要包含如下几部分: 电路设计实现 低功耗蓝牙BLE软件的开发与实现 上位机PC端软件开发与实现
简介:灵活多变的用户事件输入需求,让用户的输入更加的简单、便捷、高效和无限可能; 设计开发主要包含如下几部分: 电路设计实现 低功耗蓝牙BLE软件的开发与实现 上位机PC端软件开发与实现开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
“工程简介
——————————————————————————————————————————————————————————————
本设计实现了灵活多变的用户事件输入需求,让用户的输入更加的简单、便捷、高效和无限可能。设计开发主要包含如下几部分:
-
-
- 电路设计实现
- 低功耗蓝牙BLE软件的开发与实现
- 上位机PC端软件开发与实现
-
01项目背景”
——————————————————————————————————————————————————————————————
由于最近深圳的断崖式降温,让这个开源项目得以展示给大家(周末实在是太冷了,哪儿也不 想去,只能在家摸鱼;于是呼,就开始思
考人生;时间一晃,已经是2023年的12月24日了,这一 年马上就要过去了!咱们不能啥也不做吧, 想想这也太浪费生命了,是不是可
以做一些有意义的事 呢?于是就想起了之前做的一个项目,想把她整理出来,分享给大家一起交流交流学习,助力国产, 让国产越来
越好,越来越开放,只要我们不认输,谁也别想打倒我们,芯片也是如此,哈哈,有点喝 高了的感觉)。
02项目亮点”
——————————————————————————————————————————————————————————————
1. 多种连接方式,本设计可通过USB线(HID),或者低功耗蓝牙(BLE)与电脑连接使用;
2. 微软Swift-Pair,当使用低功耗蓝牙(BLE)与电脑连接时,本设计还具备了微软的swift-pair功能,实现蓝牙的迅速配对特性,让蓝牙
的连接交互变得简单快捷。
注意:另外电脑端需要配置如下的蓝牙配置项。

3. 实现了各种可配置的丰富按键组合,如各种常用键盘按键组合,按键系列之间的时间延迟,甚至是鼠标输入与键盘输入的组合等,
让用户的输入更加的简单、便捷、高效和更多的可能性。可有效地用于办公、游戏等
4. 简洁、灵活、可视化的PC端上位机配置工具。
5. 本设计实现了微软的Surface Dial功能,让本设计具备更多输入方式,丰富了用户的可操作性。
6. 所有软件,硬件全部开源。
03开源项目描述”
——————————————————————————————————————————————————————————————
此项目由以下三部分组成
1. 宏键盘实体,由6个按键,一个脉冲编码旋钮,和USB接口等组成

硬件框图


实物和3D预览
2. 上位机配置工具,此工具通过USB HID与宏键盘实体进行配置信息的交互;上位机使用Electron软件框架进行开发,主要考虑跨平台。

PC端上位机预览
3. 低功耗蓝牙软件,本设计使用的控制器是国产蓝牙芯片AC6321A实现按键的扫描和按键事件有线/无线BLE的传输。
04硬件介绍”
——————————————————————————————————————————————————————————————
1.板子资源、尺寸标注图


2. 主控芯片AC6321A
AC6321A是杰里的一款蓝牙芯片V5.3+BR+EDR+BLE specification,杰里在gitee上有开源,大家可 到gitee上做进一步的详细了解,gitee上有SDK、
相关开发文档和开发环境。部分原理图如下:

主控芯片原理图
RF电路,根据实际的电路和结构布局,这些RF电路上的电容与电感 需做调整,这部分电路影响RF的接收灵敏度,和发射效率。

时钟电路,为芯片提供24Mhz的时钟信号,两个负载电容容值需根据晶振数据手册选定,本设计选定为12pF,晶振误差范围±10ppm

电池电路比较简单,由一个2.0MM的2pin插座和一个波动开关组成

芯片1.3V核心电源电路,这部分由一颗10uH的功率电感、两个滤波电容和芯片内部的DC-to-DC电源组成。

电池充电电路,本设计使用芯片内部的电池充电管理LDO对电池进行 充电管理,可提供4.2V,最大200mA充电电流。

电源滤波电路

3. USB接口电路
由TYPE-C接口和两个CC口对地的5.1k下来电阻组成。至于为啥是5.1k的电阻而不是其他阻值的电阻,可以查看 USB中文网关于
type-c部分的详细解释说明

4. 按键电路
由6个按键和滤波电容组成

5. 脉冲编码旋钮电路
由1个脉冲编码旋钮和滤波电容组成,这里需要注意的是C16,C15这两个电容的容值需根据不同厂家的编码器旋钮要做适当调整,
不然在旋转时没法很好的滤除干扰噪声。如果选择容值太大,会影响信号的上升沿时间;太小对旋钮的抖动很难滤除。

6. LED电路
本设计计划使用3个PWM驱动普通的RGB led灯。但是后期个人感觉效果不是很好,这部分也就没有使用。

05 主控器蓝牙软件部分介绍”
——————————————————————————————————————————————————————————————
下图红色框中的文件夹中包含了主控制器蓝牙软件源代码和相关文档

文件目录
1. 软件框架简介
主控蓝牙软件分为按键扫描、脉冲编码器扫描、按键处理、和USB HID、BLE HID和HID报告描述符等几部分实现。如下是软件模块框图。

软件模块框图
涉及的源代码主要包含如下红框中的文件。

代码文件结构
按键部分软件处理流程图(点击图片可以看大图)

按键处理流程图
2.HID报告描述符
USB和BLE共用一个HID设备的报告描述符,分为4部分,如下:

KEYBOARD:用于键盘事件的上报。
COUSTOM_CONTROL: 用于与上位机进行数据通信。
MOUSE_POINT: 用于鼠标事件的上报。
MICROSFT_DIAL: 用于微软Surface-Dial控件事件的上报。
如下部分是具体的报表描述符,C代码数组,可在源码中搜索。
const static u8 kb_hid_report_map[];
3.主要API函数介绍
- int usr_hid_app_init(void);初始化用户应用程序。
- void key_driver_scan(void *p_dat); 输入按键扫描函数,负责检测按键状态。
- void button_handler(u8 k_id,bool pressed);按键处理,根据配置信息对按键事件进行处理,上报按键事件给电脑。
- void macro_key_start_handle(macro_k_t *p_macro_table);宏按键处理。
- void mouse_send_btn_handle(u8 btn_msk,bool btn_pressed);上报鼠标事件。
- int send_key_board_event(local_k_info_t k_value, u8 pressed);上报键盘、鼠标、用户自定义等事件信息。
- static surface_dail_k_handle(u16 local_k,u8 pressed);上报surface-dial旋钮事件。
- int usr_custom_hid_rec_handle(u8 *p_dat, u8 len);用户自定义HID报告描述符,接收数据处理函数,主要是与上位机的一些数据交互。
- void hid_report_send(u8 report_id, u8 *data, u16 len);HID接口发送数据的总接口。
4.与上位机的通信数据格式
|
Head |
Length |
Pk_index |
Datas |
End |
Checksum |
|
0x55 |
1Byte |
1Bytes |
nBytes |
1Byte |
1Byte |
Head:固定0x55。
Length:等于head+length+datas+Pk_index+checksum总字节数。
Pk_index:当前数据包索引。
Datas:传输的有效数据。
End:1-->完成所有数据包传输;0-->还是数据包需要传输
Checksum:(head+length+datas+Pk_index)&0xff
06 PC端上位机软件介绍”
——————————————————————————————————————————————————————————————
1.软件UI结构简介
PC端上位机的软件UI由两部分组成,分别是设备页和配置页,设备页面根据产品系列又可以分成很多设备页面;配置页由6个页
面组成,如下图所示。如下的页面通过单选按钮进行选择。

软件UI框架图
2.软件使用说明
-
-
-
-
-
-
- 普通按键配置
-
-
-
-
-

-
-
-
-
-
-
- 多媒体按键配置
-
-
-
-
-

-
-
-
-
-
-
- 鼠标按键配置
-
-
-
-
-

-
-
-
-
-
-
- 宏按键配置
-
-
-
-
-

-
-
-
-
-
-
- 其他功能配置
-
-
-
-
-

-
-
-
-
-
-
- Surface-Dial配置
-
-
-
-
-

-
-
-
-
-
-
- 打开某个网站配置
-
-
-
-
-
原理是“win”+“R”键打开运行界面,延迟200MS后输入“www.lceda.cn”后回车键入浏览器页面。注意:输入法需在英文输入模式
才可行。

07 硬件实物展示”
——————————————————————————————————————————————————————————————
1.下面是按键,外壳,PCBA,以及成品的展示






08 其他附件”
——————————————————————————————————————————————————————————————
附件BT固件:ac6321a_hong_k_board.fw
蓝牙AC6321A开发环境以及官方最新的SDK,请拽这里:fw-AC63_BT_SDK: Firmware for Generic Bluetooth SDK(AC63 series), Support AC631N/AC635N/AC636N/AC637N/AC632N, compatible with AC69 series without audio support. (gitee.com)
附件PC端可执行文件:https://cloud.189.cn/t/nyAFZ3VNVNnm (访问码:xz3x)
所有源代码地址:https://gitee.com/Bryan_He/macro_keyboard.git
09 固件下载”
——————————————————————————————————————————————————————————————
1. 按如下方式接好USB线到板子,如果芯片是空片,这里就不需要杰里的强制升级的开发工具了,这里我们只需准备一条如下图的USB数据线就可以;
后面更新程序时就不用数据线了(因为本项目的源码是打开了OTA功能的),我们可以通过杰里的OTA升级小程序更新软件,(可以在微信端搜索
“杰里OTA”)。

点击图片看大图
接上USB线到电脑后,电脑端“设备管理器”中应该可以看到如下的USB设备

点击图片看大图
2. 用VS CODE打开SDK源代码,按如下图操作,编译并下载程序(如果你的VS CODE没有安装Task Explorer插件的话自己需按装一下)。

点击图片看大图
你最终应该会看到类似如下的提示信息,说明程序下载完成。

点击图片看大图
3. 如果需要OTA的话OTA文件在如下的目录里。

点击图片看大图
10 项目当前已知问题”
——————————————————————————————————————————————————————————————
1. 外壳与PCB板的间隙不够,需要手动用刀片刮一下外壳内侧,这部分需要调整。
2. 电池插座插上电池后与外壳有干涉,需调整。
3. 电脑端配置工具还有许多bug
本项目是我的第一个开源项目,后续我还会陆陆续续的把我的想法和创意变成一个个可
实现的项目,把他们展现给对嵌入式电子/软件感兴趣的每一个爱好者,我会尽量把我的
项目经验,想法理念通过文字、图片和框图的方式与大家共同探讨学习,欢迎大家留言
讨论。
如果您觉得本项目不错,麻烦点个赞。
同时如果您觉得本项目有实用价值,也欢迎您收藏一下;让更多的爱好者看到!!
11 演示视频”
——————————————————————————————————————————————————————————————
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论