
【MultiPad】stm32f103vet6 效率桌面控制键盘
简介
一个能够高自由度定义的桌面控制键盘,操作简单,烧录硬件就能用,可以编辑图片显示、支持键盘、鼠标、媒体功能以及多种可配置硬件触发方式,由 Electron 制作的上位机使用直观简单,编辑处理迅速。
简介:一个能够高自由度定义的桌面控制键盘,操作简单,烧录硬件就能用,可以编辑图片显示、支持键盘、鼠标、媒体功能以及多种可配置硬件触发方式,由 Electron 制作的上位机使用直观简单,编辑处理迅速。开源协议
:GPL 3.0
描述
项目说明
! 项目如果都用便宜的材料,复刻成本在 100 元以内,硬件焊接好并烧录后上位机直接配置,没有其他步骤。
(如果有问题或是建议我们可以一起交流,可以添加一下 QQ 群组 762551232,对于微信使用频繁的朋友我也方便邀请进入微信群组。)
一个能够高度自定义的效率键盘,包含多个屏幕显示,包含按键和编码器的响应形式。
上位机可以简单直观的操作,能高效的实现不同功能,包括组合键、组合延迟键、媒体按键、鼠标控制、菜单控制、发送文本、打开文件与路径的功能。并且可以编辑每层菜单所代表的不同屏幕显示,类似使用的不同软件,不同场景。
上位机编辑完成之后,和配置好的键值一起存储在硬件中,这样硬件可以不借助上位机就可以完成对电脑的控制。
如果借助上位机的话可以完成一些更复杂的操作,类似读写剪切板、软件调用、记录电脑操作、创建文本模板之类,这部分还没有完善,在后续的软件版本中会陆续实现,这部分存储在本地数据库中。
硬件原理图中包含了没有添加进 PCB 的模块,可以根据需要进行添加,并自己绘制 PCB,而且要注意 BOM 表单的配置。
硬件实物图:
群友复刻成功图片
开源协议
GPL 3.0
!请注意,使用此开源协议,根据我的基础更改的内容也需要开源
!作者声明,此项目禁止商用
项目相关功能
项目完整功能及外壳安装介绍
软件主界面
- 右键可以呼出扩展菜单
- 可以导入与导出配置文件
- 清除当前的菜单或者所有的配置信息
当前窗口配置的信息也会记录在系统中,每次修改都会覆盖,如果想在其他电脑也想很快配置好,就可以导出配置信息:**
屏幕显示内容编辑功能
硬件有一个 1.47 寸的彩色 lcd 屏幕和两个 0.42 寸的单色 OLED 屏幕,里面显示的内容按照软件中的不同层级,可以自由配置,包括:
- 🍚 可以直接模拟对硬件屏幕的布局和显示进行编辑和调整
- 🍫 可以导入任何类型的图片
- 🍜 编辑文字与图形
- 🥘 添加与调整不同滤镜
- 🥠 软件内可自动缩放与裁剪图片
编辑组件:
编辑完成点击确认之后的主窗口:
硬件可编辑事件
8个机械按键,可以设置的事件:
- 按下与抬起事件。
配置按键按下与抬起两次动作,分别可执行的程序
三个编码器可以设置的事件:
- 左旋、右旋、按下、抬起、按下左旋、按下右旋
配置旋钮所有可执行动作,分别可执行的程序
软件可配置的功能
软件可以配置:提醒窗口、预制快捷键选择、菜单控制、快捷键定义、粘贴长文本、快捷键 + 延迟、打开文件/文件夹、特殊按键、媒体按键、鼠标控制和功能组合
硬件的任意事件,可以配置软件的任意功能
上位机软件分为专业版和标准版本,专业版有完整驱动事件和精简页面,这里以标准版做演示
- 提醒窗口
弹出一个新窗口显示配置的所有键值, 方便查看
- 预制快捷键
常用软件快捷键直接选择软件里内置了常用的软件,点开对应的软件图标后可以直接选择不同工具所代表的的快捷键,软件内部会做解析,可以作为备忘的清单列表,也可以快捷配置提高效率
- 菜单控制
设置切换上一级、下一级菜单或者切换到固定的菜单
- 快捷键定义
普通按键或者包含特殊按键的快捷键
里面可以输入不带任何 ctrl/alt/shift/win... 之类的普通按键(软件逻辑归为普通按键),如果想要配置特殊按键,只需要点选上方 Lctrl(左边的 ctrl 按键).. 按钮就可以了
- 粘贴长文本
按键之后会打出设置好的文本,有长度限制,如果文本中包含中文,就需要借助上位机
- 组合延迟键值
组合键值中可以穿插延迟,适用于需要等待加载的场合
例如按下 ctrl + a 紧接着按下 ctrl + c 之后等待两毫秒,最后按下 ctrl + v
- 打开文件/文件夹
通过设置路径来打开对应的文件或应用
目前通过硬件发送文本和指令的方式实现,只能选择文件或应用
- 特殊按键
特殊的按键类似 F1、方向键、删除键...
- 媒体按键
设置固定的媒体按键,类似打开计算器,或音量控制之类的应用
- 鼠标控制
可以设置鼠标上下左右移动的距离,左中右键的点击,以及中键的滚轮的上下位移,几个设置可以叠加,但是不能设置相反方向上的位移
- 功能组合
可以将当前菜单配置的所有功能做一个组合, 顺序由上到下依次执行
如果要切换为专业模式,可以点击软件 LOGO 弹出菜单来切换配置
配置页面切换当前编辑键值
在 LOGO 菜单中可以自定义主题界面
项目属性
本项目为首次公开,为本人原创项目。本项目未曾在别的比赛中获奖。未经本人授权,禁止转载,禁止商用。
本项目为自己的第一个全流程开发作品,包含所有 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 有点问题。
关于外部材料采购的问题,可以添加群组,群内有位热心且细心的朋友制作了一个详细物料文档可以进行参考,还有和我合作可以优惠购买物料的商家文档。在这里感谢所有给我提供帮助的朋友。
螺丝和隔离柱物料
---------------------- 问题与解决↓ ----------------------
烧录问题
下载固件文件 “.hex”
找到上面 “项目进度” 的板块,点固件下载地址的链接,找最新的"对应板子版本的固件"文件,进行烧录
(最新是指 Vx.x.x 中优先比较第一位,然后第二位,最后第三位相较于其他比较大的数字)
module (模块)版 PCB 串口烧录步骤
! 此烧录方式只支持排针模块屏幕板子
2. 下载好软件后,软件内部配置:
3. 注意烧录时要把开关拨到左边
如果没有自动烧录,不要害怕,没关系可以手动烧录。这只是说明自动烧录电路焊接的有些问题,下面是解决方法:
软件内点开始烧录,然后左手先按住 reset 按钮,然后右手按住 boot 按钮,然后右手松开,然后左手松开,也能烧录的
STlink 烧录步骤 (两种版本均可烧录)
需要有 STlink 烧录工具
- 下载 STlink Utility
进入网址:
https://stm32-st-link-utility.software.informer.com/download/#download_content
2. 然后打开软件完成下列配置
烧录成功的颜色显示:
烧录后屏幕显示空白问题
烧录后因为 Flash 里是没有任何数据的,所以屏幕显示的是空白的内容,连接上位机后配置一下内容就好了
驱动问题
在排除驱动问题前,需要保证硬件焊接没有问题,之后在设备管理器里尝试先卸载设备,然后重启电脑,重新插入硬件
串口驱动问题
如果打开烧录软件搜索不到串口,那就需要下载一个串口驱动:
下载好后安装就可以了
设备描述符请求失败问题
如果出现插入设备后上位机软件不能识别,而且设备管理器中显示:
我看了很多文章说 win10 以上的系统是内置 CDC 驱动的,如果出现这个问题多半还是硬件焊接问题,可以重新用烙铁拖动一下 type-c 口、电阻和芯片对应 d+ , d- 的 io 口,补一点锡用万用表测试一下通断,或者更换一下对应器件。
也需要测试一下晶振是否起振,如果没有的话可以更换一下晶振旁边的电容,或更换晶振看看能否解决。
如果确保硬件没有问题的情况下,可以尝试更换电脑,或者更改系统识别的驱动,可以参考 B 站网友的解决方式:
https://www.bilibili.com/read/cv19170227/
设计图

BOM


评论