基于 CH32V103 的多功能推杆设计
一、项目简介
“创意源于生活,工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关,结构中采用阻尼器/滚珠轴承等器件,使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一个功能,于是内部采用 CH32V103、霍尔编码器,振动马达驱动等外设构建了一个具有开关/线性控制,力感反馈推杆,通过自定义 USB TYPE-C 接口和 HID 协议,实现了对电脑的开关机、音量控制、鼠标/键盘/摇杆模拟、甚至可以针对不同应用实现快捷键等功能。
二、硬件构成
我认为一个想法要有完整的设计,不能只停留在开发板上,所以在前期我使用开发板完成了软件功能的实现,后面又设计并打样了 PCB 和机械结构,把开发板上仅有的一枚 CH32V103 焊到了自制的 PCB 板上,安装到 3D 打印的 DEMO 模型中,所以比较晚才完成提交项目。接下来我将从硬件和机械两部分进行介绍。
首先是硬件部分,整体的硬件架构如下图所示:
作为一个推杆,编码器是必须的,为了结构简单而不失分辨率性能,我选择了 12bit 分辨率的 AD5600 线性旋转霍尔传感器,通过 IIC 与主控 CH32V103 相连接。为了丝滑推感同时增加可玩性,我增加了 DRV2605 和线性马达作为力反馈,DRV2605 内置多种震感波形,结合线性马达可以提供多种力反馈特性,也通过 IIC 与主控相连接。
在推杆一端,我设计了一个DRV2605带灯的微触开关,微触开关的开关量,结合摇杆的线性控制量可以实现很多功能。在推杆本体中设计了两个并联的LED作为装饰灯光,通过定时器可以实现呼吸灯效果。
整个硬件原理图如下图所示:
layout并打个样板:
当然,定义了Typr-c的接口,对应的数据线也需要特殊处理下,才能支持开关机功能,不过上述设计好的地方就是 普通的数据线接上推杆,也可以进行HID通讯,不妨碍USB的功能;特殊处理过的数据线也可以当做普通的USB Type-C线来用,妙哉吧~
接下来是机械结构。
在构思结构时,最开始我设想是导播室里面那个切换台的推杆,那个质感不错,只是感觉元素少了很多,所以就又找了找,正巧刷到《双人成行》的游戏视频,看到第一关里面夫妻变小了,在家里闯关时,需要一起拉动吸尘器的推杆,这推杆不正是我所设想的么!
于是以此为原型,我设计了本项目的推杆的ID,如下图所示
3D打印了个DEMO,试了下手感,那种顺滑舒服只可意会不能言传啊!
移植好了,只是烧写器还是需要用开发板上的,上电测试,功能一切正常:
三、软件说明
开发平台:MounRiver Studio
硬件MCU:CH32V103R8
代码仓库:https://gitee.com/zealerlu/mult-push-rod-riscv
软件部分的整体的功能设计和程序设计如下思维导图所示:“创意源于生活,工具始于懒惰。”
软件部分主要逻辑都体现在上面的思维导图中。
- 点赞
- 收藏
- 关注作者
评论(0)