嘉立创产业服务站群
发作品签到
专业版

【MultiPad】stm32f103vet6 效率桌面控制键盘

工程标签

3.5w
0
0
55

简介

一个能够高自由度定义的桌面控制键盘,操作简单,烧录硬件就能用,可以编辑图片显示、支持键盘、鼠标、媒体功能以及多种可配置硬件触发方式,由 Electron 制作的上位机使用直观简单,编辑处理迅速。

简介:一个能够高自由度定义的桌面控制键盘,操作简单,烧录硬件就能用,可以编辑图片显示、支持键盘、鼠标、媒体功能以及多种可配置硬件触发方式,由 Electron 制作的上位机使用直观简单,编辑处理迅速。
星火计划2024

开源协议

GPL 3.0

创建时间:2024-03-05 07:48:52更新时间:2025-06-25 10:09:58

描述

项目说明

项目如果都用便宜的材料,复刻成本在 100 元以内,硬件焊接好并烧录后上位机直接配置,没有其他步骤。

如果有问题或是建议我们可以一起交流,可以添加一下 QQ 群组 762551232,对于微信使用频繁的朋友我也方便邀请进入微信群组。
一个能够高度自定义的效率键盘,包含多个屏幕显示,包含按键和编码器的响应形式。
上位机可以简单直观的操作,能高效的实现不同功能,包括组合键、组合延迟键、媒体按键、鼠标控制、菜单控制、发送文本、打开文件与路径的功能。并且可以编辑每层菜单所代表的不同屏幕显示,类似使用的不同软件,不同场景。
上位机编辑完成之后,和配置好的键值一起存储在硬件中,这样硬件可以不借助上位机就可以完成对电脑的控制。

如果借助上位机的话可以完成一些更复杂的操作,类似读写剪切板、软件调用、记录电脑操作、创建文本模板之类,这部分还没有完善,在后续的软件版本中会陆续实现,这部分存储在本地数据库中。

硬件原理图中包含了没有添加进 PCB 的模块,可以根据需要进行添加,并自己绘制 PCB,而且要注意 BOM 表单的配置。

硬件实物图:

硬件图片png.png

群友复刻成功图片

懒人图云.png

复刻图片2.png

开源协议

GPL 3.0

!请注意,使用此开源协议,根据我的基础更改的内容也需要开源
!作者声明,此项目禁止商用

项目相关功能

项目完整功能及外壳安装介绍

https://www.bilibili.com/video/BV1rw6aYAEAK/?spm_id_from=333.999.0.0&vd_source=b3a4b2a67c6d035459b8368916df6c17

软件主界面

  • 右键可以呼出扩展菜单
  • 可以导入与导出配置文件
  • 清除当前的菜单或者所有的配置信息

当前窗口配置的信息也会记录在系统中,每次修改都会覆盖,如果想在其他电脑也想很快配置好,就可以导出配置信息:**

1.gif

屏幕显示内容编辑功能

硬件有一个 1.47 寸的彩色 lcd 屏幕和两个 0.42 寸的单色 OLED 屏幕,里面显示的内容按照软件中的不同层级,可以自由配置,包括:

  • 🍚 可以直接模拟对硬件屏幕的布局和显示进行编辑和调整
  • 🍫 可以导入任何类型的图片
  • 🍜 编辑文字与图形
  • 🥘 添加与调整不同滤镜
  • 🥠 软件内可自动缩放与裁剪图片

编辑组件:

2.gif
image.png

编辑完成点击确认之后的主窗口:

键盘上位机图片.png

硬件可编辑事件

8个机械按键,可以设置的事件:

  • 按下与抬起事件。
    配置按键按下与抬起两次动作,分别可执行的程序

三个编码器可以设置的事件:

  • 左旋、右旋、按下、抬起、按下左旋、按下右旋
    配置旋钮所有可执行动作,分别可执行的程序

软件可配置的功能

软件可以配置:提醒窗口、预制快捷键选择、菜单控制、快捷键定义、粘贴长文本、快捷键 + 延迟、打开文件/文件夹、特殊按键、媒体按键、鼠标控制和功能组合
硬件的任意事件,可以配置软件的任意功能
上位机软件分为专业版和标准版本,专业版有完整驱动事件和精简页面,这里以标准版做演示

  • 提醒窗口
    弹出一个新窗口显示配置的所有键值, 方便查看

image.png

  • 预制快捷键
    常用软件快捷键直接选择软件里内置了常用的软件,点开对应的软件图标后可以直接选择不同工具所代表的的快捷键,软件内部会做解析,可以作为备忘的清单列表,也可以快捷配置提高效率

预制快捷键.gif

  • 菜单控制
    设置切换上一级、下一级菜单或者切换到固定的菜单

菜单控制.gif

  • 快捷键定义
    普通按键或者包含特殊按键的快捷键
    里面可以输入不带任何 ctrl/alt/shift/win... 之类的普通按键(软件逻辑归为普通按键),如果想要配置特殊按键,只需要点选上方 Lctrl(左边的 ctrl 按键).. 按钮就可以了

快捷键定义.gif

  • 粘贴长文本
    按键之后会打出设置好的文本,有长度限制,如果文本中包含中文,就需要借助上位机

长文本.gif

  • 组合延迟键值
    组合键值中可以穿插延迟,适用于需要等待加载的场合
    例如按下 ctrl + a 紧接着按下 ctrl + c 之后等待两毫秒,最后按下 ctrl + v

组合延迟.gif

  • 打开文件/文件夹
    通过设置路径来打开对应的文件或应用
    目前通过硬件发送文本和指令的方式实现,只能选择文件或应用

文件.gif

  • 特殊按键
    特殊的按键类似 F1、方向键、删除键...

image.png

  • 媒体按键
    设置固定的媒体按键,类似打开计算器,或音量控制之类的应用

image.png

  • 鼠标控制
    可以设置鼠标上下左右移动的距离,左中右键的点击,以及中键的滚轮的上下位移,几个设置可以叠加,但是不能设置相反方向上的位移

鼠标控制.gif

  • 功能组合
    可以将当前菜单配置的所有功能做一个组合, 顺序由上到下依次执行

功能组合.gif

如果要切换为专业模式,可以点击软件 LOGO 弹出菜单来切换配置

专业模式.gif

配置页面切换当前编辑键值

move.gif

在 LOGO 菜单中可以自定义主题界面

image.png

项目属性

本项目为首次公开,为本人原创项目。本项目未曾在别的比赛中获奖。未经本人授权,禁止转载,禁止商用。
本项目为自己的第一个全流程开发作品,包含所有 UI 设计,硬件设计选型,硬件开发,上位机软件开发,数据交互协议设计等。

项目进度

项目为全开源🎉

下位机硬件代码,开源地址(github):
https://github.com/iLx11/multi-pad
上位机软件代码,开源地址(github):
https://github.com/iLx11/key-pad-application

上位机软件下载地址(123网盘):
这里是所有版本软件的下载链接,下载新版软件之后也可以通过点击软件内 LOGO 来检测版本并跳转下载,之后的版本也会放在这里的。
https://www.123pan.com/s/qVcA-n3mUA.html

下位机固件下载地址(123网盘):
之后的版本也会放在这里的。
https://www.123865.com/s/qVcA-3opUA
备用:
https://www.123912.com/s/qVcA-3opUA

!请注意!上位机软件版本和固件版本都需要保持最新,因为版本之间并不兼容,如果配置有错误就请删除上位机的所有配置重新进行配置

设计原理

上位机软件设计原理

上位机通过点击对应的硬件位置映射来直观的配置,按照不同的触发方式来配置具体需要响应的键值。
用户编辑完图片和键值之后,通过软件内算法实现数据的拆分,并通过 CDC 将拆分后的数据持续发送到硬件,期间会判断是否为有效数据来进行简单的过滤,并修改数据,使其携带过滤的结果,以便硬件针对性写入 flash。

下位机软件设计原理

下位机构建一个 CustomHID + CDC 复合设备,并将 HID 的报告描述符分为键盘、鼠标、媒体三个设备用于传递对应数据到主机完成控制,CDC 用于上下位机传递配置的屏幕与键值数据。
在上位机向下位机发送数据时,硬件会首先对数据头部进行判断,之后区分不同数据或命令,划分为不同的解析与写入类型,并在数据量累计到指定大小后再进行处理以提高效率。
不同的类型对于解析和数据存储方式不同,定量的数据拼接完成之后会调用存储的接口进行持久化处理。

软件说明

开发环境说明

硬件代码是用 CLion 进行开发的,并使用 ST HAL 库,如果对于这个软件不太熟悉的朋友可以看我在 B 站发的部署环境的视频,视频链接:
https://www.bilibili.com/video/BV1AQ4y1w7He/?share_source=copy_web&vd_source=9bedad73781d020843be99c83000464a
我也在自己的笔记网站中写了较为详细的步骤和流程,视频里也有跳转的链接。工程是由 CMake 进行构建的,不会相关的知识也没关系,可以先看看视频内的介绍,然后大致仿照示例更改 CMakeLists 文件里对应位置的内容就可以了。其实只需要更改的地方就是包含文件和源文件的路径。
当然也可以按照自己熟悉的方式构建工程,然后移植我的驱动和主逻辑文件就好。
如果不进行开发的话,就不用配置环境编译了,请参照下面问题的与解决部分,我会介绍 hex 文件的下载方式和硬件烧录方式

硬件代码说明

硬件代码使用到的变量,以及程序的重要逻辑部分,我都添加了注释,并且是较为直观便于理解的变量名,而且没有任何全局变量,尽可能的保持规范。
软件部分通过上位机设置的特殊键值位,来响应和解析不同的功能,所以对于键值发送到电脑执行过程,几乎不涉及条件的判断,可以直接解析后执行,这样能保证最大程度的节省时间提高效率与响应速度。

上位机软件代码说明

上位机用 Electron + Vue3 + Ts 技术栈开发,对于环境的部署以及应用的开发可以参考网上的众多优秀教程。关于此项目的工程结构,可以看我 B 站视频对于取模软件的工程介绍,熟悉软件开发的朋友可以直接在 Github 上查看代码。

硬件烧录说明

如果是第一版使用模块的 PCB ,因为有串口和 USB 切换的开关,在连接到电脑上烧录时,需要把开关拨到左边。硬件串口模块有一键下载的电路,所以选好 Hex 文件,配置选择不使用 DTR 和 RTS 直接点击烧录就可以。
两版 PCB 都可以使用留出的 SWD 接口,用 STlink 或 Jlink 进行烧录。

设计注意事项

如果出现上位机软件识别不了硬件的情况,请将硬件的固件更新至最新,并下载最新版本的软件,如果要获取新版本的软件可以在软件内点击软件 LOGO 并检查更新,会自动跳转到下载页面。

实物展示

项目完整版介绍:
https://www.bilibili.com/video/BV1rw6aYAEAK/?spm_id_from=333.999.0.0&vd_source=b3a4b2a67c6d035459b8368916df6c17
项目初期视频,列表从上到下依次是开发流程和不同功能的阶段性介绍:
https://www.bilibili.com/video/BV12F4m1L7QF/?share_source=copy_web&vd_source=9bedad73781d020843be99c83000464a
项目基本功能已经开发完成,也在不断优化,添加更多更有趣的功能,可以看看我的其他视频,或许有其他让你感兴趣的部分。

关于外壳部分

外壳部分我目前只设计了第二版也就是 FPC 软排线版本的外壳,模块板子可以使用这个版本的后壳,但是前壳是不兼容的。

其他

硬件设计的部分已经开源,可以保持当前的布局或自定义修改硬件布局,然后使用我的上位机进行配置。

有两套不同的 PCB

  • module (模块)版本
    使用屏幕模块,焊接简单,并包含串口和 USB 切换的开关,以及 reset 和 boot 的按钮,在键盘功能之外完全可以当做开发板来使用。
  • fpc 版本
    屏幕使用 fpc 软排线进行连接,去除了串口、开关和按钮,相对于成本低一点,注意屏幕全部买插接款,不要买焊接款。

原理图中包含了没有添加到 PCB 的模块,可以看自己的需求进行添加或更换,工程导出的 BOM 有点问题。

关于外部材料采购的问题,可以添加群组,群内有位热心且细心的朋友制作了一个详细物料文档可以进行参考,还有和我合作可以优惠购买物料的商家文档。在这里感谢所有给我提供帮助的朋友。

螺丝和隔离柱物料

5916bfbcb0ba61e7026e68281d692c1f.png


---------------------- 问题与解决↓ ----------------------


烧录问题


下载固件文件 “.hex”

找到上面 “项目进度” 的板块,点固件下载地址的链接,找最新的"对应板子版本的固件"文件,进行烧录
(最新是指 Vx.x.x 中优先比较第一位,然后第二位,最后第三位相较于其他比较大的数字)

image.png

module (模块)版 PCB 串口烧录步骤

! 此烧录方式只支持排针模块屏幕板子

  1. 进入网址 http://mcuisp.com/chinese%20mcuisp%20web/ruanjianxiazai-chinese.htm

19b882180ef39d0fdbe660d9ba8aed5e.png
2. 下载好软件后,软件内部配置:

d16a434376a78851e345867dbe7139a4_0.png
3. 注意烧录时要把开关拨到左边
如果没有自动烧录,不要害怕,没关系可以手动烧录。这只是说明自动烧录电路焊接的有些问题,下面是解决方法:
软件内点开始烧录,然后左手先按住 reset 按钮,然后右手按住 boot 按钮,然后右手松开,然后左手松开,也能烧录的

STlink 烧录步骤 (两种版本均可烧录)

需要有 STlink 烧录工具

image.png

  1. 下载 STlink Utility
    进入网址:
    https://stm32-st-link-utility.software.informer.com/download/#download_content

image.png
2. 然后打开软件完成下列配置

image.png
烧录成功的颜色显示:

image.png

烧录后屏幕显示空白问题

烧录后因为 Flash 里是没有任何数据的,所以屏幕显示的是空白的内容,连接上位机后配置一下内容就好了

驱动问题

在排除驱动问题前,需要保证硬件焊接没有问题,之后在设备管理器里尝试先卸载设备,然后重启电脑,重新插入硬件

串口驱动问题

如果打开烧录软件搜索不到串口,那就需要下载一个串口驱动:

  1. 打开网址:
    https://www.wch.cn/download/CH341SER_EXE.html

image.png

下载好后安装就可以了

设备描述符请求失败问题

如果出现插入设备后上位机软件不能识别,而且设备管理器中显示:

4c3ce302f1dea913005fa876065f2776.jpg
我看了很多文章说 win10 以上的系统是内置 CDC 驱动的,如果出现这个问题多半还是硬件焊接问题,可以重新用烙铁拖动一下 type-c 口、电阻和芯片对应 d+ , d- 的 io 口,补一点锡用万用表测试一下通断,或者更换一下对应器件。
也需要测试一下晶振是否起振,如果没有的话可以更换一下晶振旁边的电容,或更换晶振看看能否解决。
如果确保硬件没有问题的情况下,可以尝试更换电脑,或者更改系统识别的驱动,可以参考 B 站网友的解决方式:
https://www.bilibili.com/read/cv19170227/

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
定位板小板 工程图.zip
376
2
3D 打印.stp
312
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

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

底部导航