基于STM32的多外设客制化键盘设计
扫描二维码
随时随地手机看文章
0引言
随着人们对键盘个性化需求的不断增长,越来越多的消费者追求能够体现个人风格的键盘产品,即键盘客制化。为了满足这一需求,键盘制造商不仅在设计语言和风格上不断创新,还在键盘上集成了更多外设功能以吸引用户。本文将介绍如何基于支持用户通过简易编程实现按键映射、宏定义及RGB灯光调控的QMK固件,针对市场需求开发出集成多种外设功能的机械键盘。
1 系统总体设计
通过键盘布局编辑器选定配列并生成定位板文件,实现项目初步设计。系统以STM32F103CBT6为核心,键盘矩阵采用列到行加二极管设计,消除鬼影效应,由RT9193—33GB稳压器提供电源。外设方面,音量调节功能使用EC11旋钮编码器连接定时器接口,显示动画通过0.91寸OLED屏幕实现并采用I2C接口进行通信,敲击音效是通过控制引脚高低电平驱动电磁锁以及利用定时器PWM驱动无源蜂鸣器来实现的。系统基于QMK固件实现软硬件深度适配,为客制化输入设备提供可靠且可定制的解决方案。系统总体框架如图1所示。
2配列设计
为实现个性化配列设计,通过KeyboardLayout Editor(KLE)平台完成布局编辑[1]。KLE平台提供直观的功能区,用户通过“AddKey”按钮即可轻松添加按键,利用“DeleteKeys”按钮移除多余按键,还能调整按键大小与位置。通过图形化界面,用户可实时预览动态修改后的按键布局,打造符合自身操作习惯的自定义键盘配置(键盘配列如图2所示)。
3硬件构成
3.1 STM32控制电路
STM32F103CBT6作为高性能、低功耗的32位ARM Cortex—M3微控制器,拥有丰富的外设接口。每个外设接口和I/O引脚均可灵活配置,满足复杂的应用需求[2]。芯片采用LQFP48封装,具有48个引脚,适合表面贴装。因此本方案选定其作为主控芯片,其主控电路及针脚分配如下:时钟电路方面,该芯片外接8 MHz晶振,搭配2个22 PF电容组成时钟振荡电路,为系统提供基础时钟信号;复位电路由按键、100 nF电容、10 kΩ电阻构成,短按按键可实现系统复位。通过RT9193—33GB稳压芯片将+5 V电源转换为3.3V为其供电,同时配备滤波电容保障电源质量。芯片电源部分通过VCC3.3供电,利用多个100 nF的电容进行滤波,有效去除电源噪声,为芯片提供稳定\纯净的电源(图3)。
3.2矩阵按键扫描电路
按键原理图中的电路采用矩阵式布局,以减少微控制器引脚的使用数量。每个按键连接到相应的行(ROW)和列(COL)引脚,微控制器5TM32F103CBT6的引脚分别连接ROW0~ROW4(行信号)和COL0~COL4(列信号),构成5×5的按键矩阵,按键的行引脚串联二极管实现防鬼键功能。当按键按下时,对应的行和列引脚之间的电平状态发生变化,微控制器通过扫描这些引脚的电平来判断按键状态,实现输入检测。EC11旋钮其A、B引脚分别连接微控制器的输入引脚,C引脚接地。A、B引脚输出正交信号,通过检测两者的相位差可判断旋钮的旋转方向,信号变化次数则对应旋转步数,实现精确的模拟量输入或功能切换控制,D、E引脚可作为按键信号接入主控引脚,其触发逻辑与普通按键相同(图4)。
3.3外设电路
为了实现客制化键盘的多功能性,设计中集成了多种外设模块,包括电磁锁\蜂鸣器\EC11旋钮和OLED屏幕。电磁锁电路由5 V供电,通过NPN三极管控制,5IGN—1引脚输出高低电平控制电磁锁的开关状态,并串联反向二极管(1N4148W)保护电路。蜂鸣器电路由3.3V供电,同样通过NPN三极管驱动,5IGN—2引脚输出高低电平控制蜂鸣器的发声状态,正极连接22 Ω限流电阻。EC11旋转编码器的硬件接口设计包含按键检测与方向检测双通道。按键触点通过串联二极管实现防鬼影接入键盘矩阵的行线,其触发逻辑与普通按键相同;方向检测引脚(A/B)连接至5TM32定时器的编码器接口引脚,实现音量调节和菜单导航等功能。基于55D1306驱动的OLED屏幕通过I2C接口与5TM32通信,5DA引脚用于数据传输,5CL引脚用于同步时钟信号,通过4P接口连接,用于显示键盘状态。外设电路如图5所示。
4软件设计
软件设计选用QMK固件作为核心框架,实现了键盘功能与外设模块的联动[3]。针对外设硬件(如EC11旋钮、OLED屏幕及蜂鸣器),通过定时器与I2C协议及GPIO中断开发驱动代码,完成旋钮的旋转方向检测、屏幕状态显示及蜂鸣器和电磁锁触发功能。在QMK框架结构里,通过inFo.json文件定义按键矩阵的引脚、布局等硬件参数,同时,在keyboard.c映射按键布局、宏、层切换等个性化配置。其中rules.mk文件的作用是开启或关闭硬件功能,config.h文件用于设置默认的编译选项,mcuconf.h文件的作用是配置微控制器外设功能,halconf.h文件则负责启用或禁用硬件抽象层功能,上述这些文件共同定义了键盘基本属性和功能配置。最后使用QMKMSYS编译并刷入即可,其文件关系流程图如图6所示,实物展示如图7所示。
5 实验测试与结果
通过按键测试对所有物理按键进行触发测试。测试时,按压任一按键后,软件界面中对应键位高亮显示,如图8(a)所示,表明信号传输正常。连续触发测试100次,所有按键均能稳定响应,无信号抖动或误触现象。
系统通电后,OLED屏幕自动加载预设动画,如图8(b)所示,内容包含启动LOGO与状态栏,动画播放。通过按压EC11旋钮进入Fn功能层,OLED屏幕实时显示“Fn”字符标识,如图8(c)所示。
6结束语
在当今市场上,键盘种类繁多,功能各异,这使得许多消费者在面对众多选择时感到犹豫不决,难以挑选出最适合自己的产品。根据本文所述方法,消费者可以充分发挥自己的创意和想法,亲自投入到键盘的设计过程中,打造出具有个性化特点的键盘。通过这种方式,用户能够设计出符合个人操作习惯和审美偏好的键盘,借助KeyboardLayoutEditor平台设计个性化配列,并通过QMK固件为这款个性化键盘提供丰富的功能支持,它不仅能定义旋钮、蜂鸣器、电磁阀等功能,还支持屏幕实现更丰富的动态显示效果,从而实现真正的个性化定制。
[参考文献]
[1] 杨宸畅,王钰.基于ATmega32u4的新型客制化键盘设计[J].机电信息,2023(4):40-43.
[2]勾慧兰,刘光超.基于sTM32的最小系统及串口通信的实现[J].工业控制计算机,2012,25(9):26-28.
[3]任虎.基于QMK固件的小键盘设计[J].无线电,2023(10):42-47.
《机电信息》2025年第16期第10篇





