以前公号发表一篇文章,现共享给小伙伴们哈~~~
哈喽,大家好!我是爱玩爱闹的源小北
!
不管是做硬件的还是软件的,大家肯定都知道稚晖君这么一个大佬。如果你还不知道,那就自己去百度一下吧!
稚晖君2018年进入OPPO算法岗工作,目前已经是华为AI架构师,本硕就读于电子科技大学。
稚晖君不仅仅是华为天才少年,更是一位热爱硬件开发、对作品追求极致的UP主,业余一直更新着硬件DIY视频,受到众多网友追捧。他是客制化产品爱好者所向往但是又渴望而不可及的大佬,作品《自动驾驶的自行车》、《B站最强小电视》、《自制钢铁侠机械臂》等作品均大受追捧。
作为他的崇拜者,小北将收藏的稚晖君开源项目--定制模块化智能键盘呈现给大家!
项目介绍
瀚文智能键盘是一把稚晖君针对自己使用需求设计的多功能、模块化机械键盘。
键盘本体是稚晖君自己开发的,基于ARM Cortex-M芯片的键盘固件以及模块固件;实现使用移位寄存器方式优化的按键扫描电路;模块以及键盘本体可以单独使用,也可以通过串口协议进行相互通信和调用。
由于使用了模块化设计,左侧的多功能场景交互模块可以替换成各种自己所需要的自定义组件,默认使用的是一个带电子墨水屏以及FOC力反馈旋钮的Dynamic组件。
稚晖君在做出了产品后,毅然将产品项目的文档与代码上传到Gitee,开源给广大客制化爱好者,并亲身录制视频让大家能够感受到客制化魅力。
项目文件说明
1. 硬件
Hardware文件夹下存放的是:项目所用到的所有电路原理图和PCB文件,目前提供的是立创EDA专业版格式的源文件以及Gerber格式的光绘文件用于提供给厂家进行直接加工。有主键盘、左侧Dynamic组件、底座连接触点、USB-A接口转接与母座、TypeC接口、Dynamic组件上OLED屏幕的最小驱动电路以及转接板、可选的电容触摸条模块等PCB文件。
2. 固件
Firmware文件夹下存放了上面所有板子的代码,以及预编译好的bin固件可以直接烧录,主要包含两个工程:主键盘固件、Dynamic组件的固件等。工程都是基于STM32HAL实现的,所以提供了对应的.ioc文件,可以自行用STM32CubeMX打开,生成对应的keil或者STM32IDE工程文件。_Release文件夹里是预编译好的bin文件,可以用ST-Link Utillity或者STM32CubeProgrammer之类的软件直接下载到芯片。
3. 软件
Software文件夹下提供了一些用于和键盘交互的电脑端上位机软件,包括视频里演示的傻瓜化修改墨水屏图片的上位机软件等。
4. 工具
tools文件夹下主要是提供一些三方的工具软件,比如STM32 ST-LINK Utility 、用于安装驱动的zadig等等。
5. 3D模型
3Dmodel文件夹里是键盘用到的所有结构件的3D模型文件,可以用于3D打印。
6. 文档
Docs文件夹下相关的参考文件,包括芯片的Datasheet等。
硬件架构说明
1. 结构设计
包括三大部分:扩展坞底座、键盘输入模块和可替换的多功能交互模块,键盘输入模块和可替换的多功能交互模块通过若干接触式触点连接在所述扩展坞底座顶部。
而键盘本体也是一个标准的客制化键盘层叠结构设计,包含减震棉、PCBA、定位板、轴下垫等,是75键布局:
2. 芯片选型
键盘主控选用的芯片是STM32F103CBT6,Dynamic组件主控的STM32F4,电机的磁编码器芯片使用AS5047P,按键扫描用的移位寄存器使用的74HC165,电容触摸板使用一个6通道电容触摸按键芯片XW06A,电机FOC驱动电路使用FD8288Q作为栅极驱动器,无需电流传感器。
3. 烧录
使用JLink、STLink之类的调试器烧录。
软件架构说明
1. 键盘固件按键映射方式
为了充分发挥移位寄存器扫描方案的优势,固件代码中将PCB Layout走线和按键扫描顺序解耦,通过软件进行重映射。也就是说PCB中按键的连接可以是任意的,走完线之后可以在hw_keyboard.h文件中的keyMap[KEYMAP_NUM][IO_NUMBER]中指定映射方式。下面是有关样例的截图,具体内容参见相关文档说明。
2. 键盘固件的滤波方法
固件中使用了每个按键独立的滤波,使用的是对称延迟独立滤波,也就是对每个按键进行两次检测,如果第一次检测到了按键变化,那么相隔N微秒(这个参数可以配置,大于按键典型抖动时间即可)再检测一次,如果两次检测结果一致,那么判断按键被按下,此时可以确保按键发生了变化,且不会重复触发按键,兼顾延迟和稳定性。这个过程是通过异或运算进行高效处理的,正好按键buffer由于是移位寄存器扫描得到的,本身就是每一位代表一个按键,所以滤波效率非常高,实测效果也挺好的。部分代码参见下图:
小北有话说
稚晖君开源了他的定制化智能键盘项目,方便大家下载研习和定制,还提供了很详细的文档说明。大家可以通过对源代码学习和了解如何针对自己的实际需求进行定制。
https://gitee.com/peng_zhihui/HelloWord-Keyboard
以上就是本次推荐的全部内容,我是源小北
,感谢各位的观看。
交流群
程序员了不起读者交流群,交流包括但不限于技术,人生感悟、每日大事、人生大事、吹水、摸鱼,白嫖群主收集的资源等。
有想要加入的小伙伴,关注:程序员了不起,回复:fff112 ,既可加入群聊,限时开放哦!