站内搜索
发作品签到
专业版

DIY键盘学习板

工程标签

89
0
0
0

简介

使用F103最小系统板制作的简易键盘,用QMK工具完成代码编写

简介:使用F103最小系统板制作的简易键盘,用QMK工具完成代码编写
复刻成本:34.2

开源协议

OpenAtom OHL 1.0

(未经作者授权,禁止转载)
创建时间:2026-02-21 14:57:08更新时间:2026-06-03 09:52:06

描述

项目简介

本项目是基于STM32F103C8T6开发板的diy键盘,适合想要开始学习diy键盘的同学使用。项目使用QMK开发工具开发,QMK(Quantum Mechanical Keyboard)是一款开源键盘固件,允许用户高度自定义机械键盘的功能和布局,代码简洁易懂,适合新手学习。

项目功能

  • 键盘共有10个按键,共3层,可实现数字输入,快捷键输入,键盘RGB调节;
  • 每个按键带ws2812彩灯(反贴),可以通过程序设计RGB灯效;
  • 键盘设计有一个EC11编码器旋钮,可以实现调节音量和屏幕亮度(适用于笔记本电脑)的功能;
  • 键盘设有三个宏按键,按下可以快速完成一系列操作(如按下输出邮箱地址等);
  • 开发板的排针已引出,方便后续有其他创意的同学在扩展排针上实现、验证自己的想法;
  • 此外,键盘的关键引脚也通过排针引出,可以通过杜邦线接其他开发板实现功能,不止局限于f103开发板。

项目参数

  • 本设计采用STM32F103C8T6开发板直插,简单易用同时减轻焊接工作量;
  • 采用EC11编码器旋钮实现调节,同时自带按键,按下可以实现换层的功能;
  • 选用凯华热插拔轴座,实现轴座热插拔;

功能介绍

该键盘硬件上分为3行4列,共11个按键(包括旋钮自带的按键),按键与示意图的对应关系如下表:

a3cbbf23cd0c84139740d4c260f0c92.jpg

第一列第二列第三列第四列
第一行789无按键
第二行456编码器按下
第三行123.

共由3层组成,分别为默认数字层、快捷键层、键盘调节层

数字层:

第一列第二列第三列第四列
第一行789无按键
第二行456切换到快捷键层
第三行1230

快捷键层:

第一列第二列第三列第四列
第一行切屏(ALT+TAB)保存(ctrl+s)退格(BackSpace)无按键
第二行宏1宏2宏3切换回数字层
第三行回退(ctrl+z)复制(ctrl+c)粘贴(ctrl+v)回车(Enter)

键盘调节层(需要按住按键“ . ”):

第一列第二列第三列第四列
第一行颜色+(换颜色)颜色-无按键
第二行饱和度+饱和度-关闭RGB灯
第三行动画速度+动画速度-切换RGB动态效果按住以调节RGB

例如需要改变颜色:按住按键“ . ”,同时按下按键“ 7 ”
.

编码器旋钮功能

顺时针逆时针
数字层屏幕亮度+屏幕亮度-
快捷键层音量+音量-
快捷键层RGB亮度+RGB亮度-

软件代码 & 可自定义部分

按键宏的修改

在keymap.c中可以看到如下函数,修改SEND_STRING中的内容即可改变按键输出,如SEND_STRING("123")则按下宏按键后输出123。

// ================= 按键模拟 =================
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    if (keycode == MACRO_one) {
        if (record->event.pressed) {
            // 当按键按下时,发送字符串 :此处可修改为你所需的宏
            SEND_STRING("123");
        }
        return false; 
    }

    if (keycode == MACRO_two) {
        if (record->event.pressed) {
            // 当按键按下时,发送字符串 :此处可修改为你所需的宏 
            SEND_STRING("456");
        }
        return false; 
    }

    if (keycode == MACRO_three) {
        if (record->event.pressed) {
            //当按键按下时,发送字符串 :此处可修改为你所需的宏 
            SEND_STRING("789");
        }
        return false; 
    }
    return true; 
}

键盘功能映射的修改

在keymap.c中可以看到如下函数,修改其中的内容即可更改键盘的按键映射,具体的映射可以查看QMK的官方文档,文档链接:https://docs.qmk.fm/keycodes

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    // 数字层 
    [0] = LAYOUT(
        KC_7   , KC_8   , KC_9   , KC_NO  ,
        KC_4   , KC_5   , KC_6   , TO(1)  ,
        KC_1   , KC_2   , KC_3   , LT(2, KC_0) 
    ),

    // 快捷键层
    [1] = LAYOUT(
        A(KC_TAB)  , C(KC_S)   , KC_BSPC     , KC_NO  ,
        MACRO_one  , MACRO_two , MACRO_three , TO(0)  ,
        C(KC_Z)    , C(KC_C)   , C(KC_V)     , LT(2, KC_ENT)  
    ),

    // 键盘调节层 2
    [2] = LAYOUT(
        RM_HUEU  , RM_HUED, KC_NO  , KC_NO  , 
        RM_SATU  , RM_SATD, KC_NO  , RM_TOGG,
        RM_SPDU  , RM_SPDD, RM_NEXT, KC_NO
    )
};

RGB动态效果的设置

在config.h文件中可以看到对RGB动画的配置,如果要添加/更改键盘的RGB背光动态效果,可以查看QMK官方文档给出的现有RGB动态效果并按照相同的格式添加,官方动态效果见:https://docs.qmk.fm/features/rgb_matrix

//RGB动画
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_BREATHING 
#define STARLIGHT_DUAL_HUE
#define ENABLE_RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_VAL
#define ENABLE_RGB_MATRIX_HUE_WAVE

image.png

如何复刻?

由于该项目基于QMK开发,这里介绍如何通过QMK来修改/编写代码以满足您的个性化需求,如果您暂时没有修改配置的需求,可以先直接跳到第4步,直接烧录代码

另外,推荐一个我入门时看的教学视频,内容很详细:(b站:BV1Kx4y1V7zd)

1.下载QMK官方软件

image.png

下载QMK官方编译软件,用于代码工程的编译。官网:https://msys.qmk.fm/

image.png
下载QMKToolbox,用于烧录编译后的代码至键盘。官网:https://qmk.fm/toolbox

2.克隆QMK官方库

打开下载好的QMKMSYS,在终端输入:qmk setup -H D:/QMK (注意:末尾的路径决定了QMK文件夹的创建位置,同时需要先确保D:/QMK这个文件夹是不存在的才可以创建),等待克隆完成。

3.放入,修改工程并编译

将附件给出的diykeyboard文件夹放入刚才克隆出来的../QMK/keyboard下面:

image.png

此时,如果您有修改代码更改配置的需要,可以打开代码文件夹按照前文或者官方文档给出的方法进行修改。修改完成后,保存,打开QMKMSYS准备编译代码。

在终端输入 qmk compile -kb diykeyboard -km default -j 8对工程进行编译,其中 - kb 后面的代表您的工程名字。看到终端一路[OK]就说明编译成功了。

image.png

编译完成后如下图所示,会在../QMK/build路径下生成.bin和.hex文件,这里可以看到其推荐烧录.bin格式文件,接下来就可以用该文件进行烧录了。

image.png

4.烧入bootloader并烧录代码

先将开发板用usb线连接至电脑,此时打开设备管理器,可能会看到设备无法识别,这种问题大概率是没有烧录bootloader(如果插上后已经有检测到设备,请忽略这一步,直接跳到使用QMKtoolbox烧录步骤)

烧录bootlaoder:
1.下载bootlaoder文件,将其放置在您熟悉的文件路径即可(文件已经在附件中给出),也可以参考这位大佬的帖子,里面有详细的下载指导和其他bootloader选择:https://xujiwei.com/blog/2024/05/stm32duino-bootloader-toturial/

2.使用ST-link烧录bootlaoder:
将st-link与开发板连接好,打开QMKMSYS,在终端输入以下指令:
pacman -S mingw-w64-x86_64-stlink mingw-w64-x86_64-openocd

再输入下面的指令,通过st-link下载bootloader:
st-flash --reset --format binary write C:/QMK/generic_boot20_pc13_fastboot.bin 0x08000000
(其中,“C:/QMK/generic_boot20_pc13_fastboot.bin”应该改为您bootloader文件的实际存放位置)

此时再插上usb连接电脑,如果电脑没有错误信息提示,就可以进入最后一步烧录程序了。

补充:如果您手头没有st-link下载器,也可以试试TTL下载的方案,参考这位大佬的视频
(b站:BV1Jp421X7mJ),可以解决bootloader下载过程中的大部分问题。

使用QMKtoolbox烧录程序:
打开已下好的QMKToolbox,选择之前编译好的../QMK/build/diykeyboard_default.bin文件(附件中已给出),按下开发板的复位键,此时进入烧录模式,按下flash开始烧录。

image.png
烧录好后,再次按下复位键,此时键盘就可以正常使用了,恭喜你有了一个可自定义的键盘!

注意事项

  • generic_boot20_pc13_fastboot.bin 文件名中的pc13代表开发板上的led引脚,提供指示作用,可以根据自己的开发板去下载对应的boot loader文件。

  • 作者使用的st-link型号是市面上10元左右的st-link V2

  • 对于还没有打算修改代码的朋友, 附件中也准备了更加通用的可下载文件(diykeyboard_default_nomacro.bin),将宏按键改为了键盘的方向键。

组装流程

将PCB板放入外壳面板中,注意朝向

盖上底板

最后再安装上自己喜欢的键轴和键帽即可

扩展用法

作为新手入门的学习版键盘,该键盘保留了拓展的排针,供同学们实现更多可能

用法1: 在f103的基础上添加功能,使用杜邦线连接其他外设来丰富您的键盘,验证您的想法

用法2: 使用上方的排针,连接其他开发板使用,排针的对应功能已在PCB丝印上标注

最后

感谢各位观看!欢迎留下您宝贵的意见!

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
键盘.obj
0
2
diy键盘.3mf
0

附件

序号文件名称下载次数
1
diykeyboard.zip
0
2
generic_boot20_pc13_fastboot.bin
1
3
diykeyboard_default.bin
0
4
diykeyboard_default.hex
0
5
diykeyboard_default_nomacro.bin
0
6
diykeyboard_default_nomacro.hex
0
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航