peng-zhihui / HelloWord-Keyboard
- пятница, 5 августа 2022 г. в 00:33:09
瀚文
智能键盘是一把我为自己使用需求设计的 多功能、模块化 机械键盘。键盘使用模块化设计,左侧的多功能场景交互模块可以替换成各种自定义组件,默认使用的是一个带电子墨水屏以及FOC力反馈旋钮的
Dynamic组件
;键盘使用我自己开发的基于ARM Cortex-M芯片的键盘固件以及模块固件;键盘本体使用移位寄存器方式实现优化的按键扫描电路;模块以及键盘本体可以单独使用,也可以通过串口协议进行相互通信和调用。本仓库开源的资料内容包括:
- 瀚文本体硬件设计的10块PCB设计源文件,提供立创EDA专业版的文件格式
- 外壳设计结构文件
- 键盘本体的固件源码(已相对完善)
- Dynamic组件的固件源码(已完成框架,更多APP扩展WIP)
- 键盘二次开发SDK(开发中)
键盘功能演示可以参考:
注意:Issues里面是讨论项目开发相关话题的,不要在里面发无意义的消息,不然watch了仓库的人都会收到通知邮件会给别人造成困扰的!!!灌水可以在仓库的Discuss里讨论!
22.7.31更新:
Hardware文件夹内是瀚文键盘里面用到的所有电路的原理图和PCB文件,目前提供的是立创EDA专业版格式的源文件以及Gerber格式的光绘文件用于提供给厂家进行直接加工。
一共有如下几块板子:
Firmware中提供了上面所有板子的固件源码,以及预编译好的bin固件可以直接烧录,主要包含以下两个工程:
工程都是基于STM32HAL实现的,所以提供了对应的.ioc
文件,可以自行用STM32CubeMX打开,生成对应的keil或者STM32IDE工程文件。当让也可以像我一样,用CLion或者STM32CubeIDE进行编译和下载。
_Release
文件夹里是预编译好的bin文件,可以用ST-Link Utillity或者STM32CubeProgrammer之类的软件直接下载到芯片。
关于固件的实现细节后文有讲解。
把CLion变成STM32的IDE的方法参考我之前发的一篇教程:配置CLion用于STM32开发【优雅の嵌入式开发】 。
Software中提供了一些用于和键盘交互的电脑端上位机软件,包括视频里演示的傻瓜化修改墨水屏图片的上位机软件,以及后续会逐步补充用于修改键位的图形化软件给模块添加APP的应用商店软件,这些还在开发中。
Tools主要是提供一些三方的工具软件,比如STM32 ST-LINK Utility 、用于安装驱动的zadig等等。
文件夹里是键盘用到的所有结构件的3D模型文件,可以用于3D打印。
相关的参考文件,包括芯片的Datasheet等。
关于结构设计?
瀚文的结构包括三大部分:扩展坞底座、键盘输入模块和可替换的多功能交互模块,键盘输入模块和可替换的多功能交互模块通过若干接触式触点连接在所述扩展坞底座顶部:
而键盘本体也是一个标准的客制化键盘层叠结构设计,包含减震棉、PCBA、定位板、轴下垫等:
键盘的结构设计主要是Xikii根据S98修改而来,为75键布局,有其他布局需要的同学可以自行修改PCB和固件适配。
关于视频中展示的结构件,由于是Xikii的方案所以我也不好擅自把源文件放出,而且原始版本结构是用于CNC机加工的,成本会比较高。
所以我也让Xikii帮忙设计一套简化版可用于3D的结构件,并开源出来放到仓库。
关于芯片选型?
关于烧录方式?
使用JLink、STLink之类的调试器烧录,我在PCB和外壳上都预留了SWD调试口。对于没有硬件开发经验的同学,我晚点也会放出一个Bootloader,可以直接通过USB口进行固件升级。
关于电机选型?
我使用的是一个2204的二手电机,不过这一款电机目前好像不太好买,大家可以选取类似尺寸的无刷电机替换,参数方面需要KV值低一些,最好200左右。电机需要手动在转子上安装一个径向充磁的永磁体用于编码器定位,不同型号的电机需要对FOC参数进行一些调整。
待补充。
感谢以下项目:
olikraus/u8g2: U8glib library for monochrome displays, version 2 (github.com)
simplefoc/Arduino FOC for BLDC (github.com)
zhongyang219/TrafficMonitor: 这是一个用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 (github.com)