灵动微课堂 (第252讲)|开源项目:基于MM32F0160微控制器的机械键盘
来源:灵动MM32MCU 发布时间:2023-04-20 分享至微信

点击蓝字添加“星标★” 关注我们






引言

最近,为了配合新品推广,灵动的软件与系统工程SE团队,基于带有 USB 外设模块的 MM32F0160 微控制器,实现了一套低成本带RGB灯效的机械键盘。这里将设计机械键盘的全过程开源出来,感兴趣的开发者,可以向灵动申请 MM32F0160 微控制器的样片,复刻一把自己专属的机械键盘,也可以继续进行二次开发,实现更加有趣的作品。






一些机械设计工作

首先需要选择将要设计机械键盘的配列,也就是按键的布局。这里选用了对程序员最友好的87键配列。使用“键盘布局编辑器”(http://www.keyboard-layout-editor.com/)可以导入标准的配列布局。如图1所示。

图1 keyboard-layer-editor在线编辑器

这里可以选择标准104键配列,再删除右侧小键盘的区域,得到标准87键配列的方案,如图2所示。

图2 使用keyboard-layer-editor设计标准87键配列

然后,复制Raw data中的代码,到“定位板在线编辑器”(http://builder.swillkb.com/)中,如图3所示。

图3定位板在线编辑器

此时,点击页面最下方的 Draw My CAD!!! 按钮,生成定位板的图纸。如图4所示。

图4 生成87键配列的定位板

此时,在页面的右上角选择下载 DXF 格式的文件。这个文件可以发送给工厂,用于生产机械键盘的定位板。板子的厚度为1.5mm,在本案中使用了PC材料。






设计PCB

机械键盘的按键部分电路,就是普通的键盘矩阵,但为了避免出现“鬼影按键”(Ghost Key)和实现“全键无冲”,每个按键开关上都需要串联二极管。为了在每个按键下放置一颗RGB彩灯实现灯效,本案使用了 WS2812 级联的电路。

本案使用KiCAD 7.0设计了整个机械键盘电路系统的原理图。

按键矩阵部分的电路如图5所示。

图5 按键矩阵原理图

RGB彩灯矩阵部分的电路,如图6所示。

图6 RGB彩灯矩阵原理图

使用MM32F0160微控制器作为核心的控制电路,如图7所示。

图7 基于MM32F0160的控制电路原理图

这里还引出了扩展插座,包含了 MM32F0160 微控制器的调试信号、按键矩阵行列信号、RGB灯控制信号,可用于扩展更大的键盘配列(例如增加数字小键盘)。

然后将原理图配合合适的封装(可以在KiCAD的元件库中找到Cherry轴的封装),导出生成PCB文件。在PCB文件中,可以导入之前用于生产定位板的 DXF 文件,参照着定位板的位置放置按键和RGB灯。最终完成走线的PCB板效果图,如图8所示。

图8 走线完成的机械键盘电路板






设计软件

本案使用的软件来自于灵动的软件与系统工程SE团队开发和维护的MindSDK软件开发平台,可以选择 Mini-F0160 开发板的软件包作为模板,下载已经适配TinyUSB协议栈的 tud_hid_keyboard 样例工程。如图9所示。

图9 MindSDK中的tud_hid_keyboard样例工程

之后再进行改装,适配使用 GPIO 扫描按键矩阵,并增加 DMA+SPI 的方式控制 WS2812 灯带的功能(可参考MindSDK中的 ws2812_spi_dma 样例工程)。

特别注意,本案使用Keil MDK编译生成可执行文件,除了需要安装Keil MDK集成开发环境外,还需要开发者从灵动官网下载 MM32F0160 的设备支持包(https://www.mindmotion.com.cn/support/software/keil_pack/),以及需要准备一个适配Arm核微控制器的调试器,例如JLink或者DAPLink等。






技术资料

这里开源基于MM32F0160微控制器的机械键盘项目的所有资料,托管在Gitee的平台上(https://gitee.com/suyong_yq/mechanical-keyboard-diy),如图10所示。

图10 托管在Gitee上的机械键盘开源项目

最后,放一张第一个成品样品的照片,如图11所示。

图11 基于MM32F0160微控制器的机械键盘成品


往期精彩

第251讲|为MindSDK搭建armgcc编译环境(Windows版)

第250讲|mm32-2nd-bootloader技术白皮书(6)——总结及注意事项

第249讲|mm32-2nd-bootloader技术白皮书(5)——编译可在QSPI Flash上运行的程序

第248讲|mm32-2nd-bootloader技术白皮书(4)——设计实现简单的2nd bootloader

第247讲|mm32-2nd-bootloader技术白皮书(3)——设计实现QSPI Flash的下载算法

第246讲|mm32-2nd-bootloader技术白皮书(2)——QSPI外设简介

第245讲|mm32-2nd-bootloader技术白皮书(1)——配置软硬件环境

第244讲|FlexCAN OTA

第243讲|单独下载可执行文件到MM32F5微控制器

灵动微课堂大合辑


公众号推送机制改版

感兴趣的动态频频“失联”?

简单两步点亮“星标★”

不再错过每一篇灵动动态!


关于灵动

上海灵动微电子股份有限公司成立于 2011 年,是中国本土领先的通用 32 位 MCU 产品及解决方案供应商。公司基于 Arm Cortex-M 系列内核开发的 MM32 MCU 产品拥有 F/G/L/A/SPIN/W 六大系列,目前已量产 300多款型号,累计交付超 4 亿颗,每年都有近亿台配备了灵动 MM32MCU 的优秀产品交付到客户手中,在本土通用 32 位 MCU 公司中位居前列。

灵动客户涵盖智能工业、汽车电子、通信基建、医疗健康、智慧家电、物联网、个人设备、手机和电脑等应用领域。灵动是中国为数不多的同时获得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了独立、完整的通用 MCU 生态体系。灵动始终秉承着“诚信、承诺、创新、合作”的精神,为客户提供从硬件芯片到软件算法、从参考方案到系统设计的全方位支持。


灵动股份

微信号:MindMotion-MMCU

长按识别二维码关注我们

MORE

官网:www.mm32mcu.com

微信公众号:灵动MM32MCU

灵动MM32MCU技术论坛:

bbs.21ic.com/iclist-696-1.html

[ 新闻来源:灵动MM32MCU,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!