基于CH32V103的多功能推杆设计

一、项目简介

“创意源于生活,工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关,结构中采用阻尼器/滚珠轴承等器件,使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一个功能,于是内部采用CH32V103、霍尔编码器,振动马达驱动等外设构建了一个具有开关/线性控制,力感反馈推杆,通过自定义USB TYPE-C接口和HID协议,实现了对电脑的开关机、音量控制、鼠标/键盘/摇杆模拟、甚至可以针对不同应用实现快捷键等功能。

二、硬件构成

我认为一个想法要有完整的设计,不能只停留在开发板上,所以在前期我使用开发板完成了软件功能的实现,后面又设计并打样了PCB和机械结构,把开发板上仅有的一枚CH32V103焊到了自制的PCB板上,安装到3D打印的DEMO模型中,所以比较晚才完成提交项目。接下来我将从硬件和机械两部分进行介绍。      

首先是硬件部分,整体的硬件架构如下图所示:

作为一个推杆,编码器是必须的,为了结构简单而不失分辨率性能,我选择了12bit分辨率的AD5600线性旋转霍尔传感器,通过IIC与主控CH32V103相连接。为了丝滑推感同时增加可玩性,我增加了DRV2605和线性马达作为力反馈,DRV2605内置多种震感波形,结合线性马达可以提供多种力反馈特性,也通过IIC与主控相连接。

在推杆一端,我设计了一个DRV2605带灯的微触开关,微触开关的开关量,结合摇杆的线性控制量可以实现很多功能。在推杆本体中设计了两个并联的LED作为装饰灯光,通过定时器可以实现呼吸灯效果。

在对推杆如何连接电脑这块,我思考了很久,为了让推杆能够实现电脑开关机功能,最简单的方式就是将一个开关输出量与主机开关键并联,直接控制短接就能开机了。但这也就意味着要有两根线直接与主机相连。为了让推杆和电脑还能走USB协议,那么也就还要至少接上DM DP GND三根线,再想获得下电脑当前开机状态,那就还得再接两根线到主机的POWER LED上(可能你会说,为啥不用USB连接状态判断?因为刚开机那会儿还没建立USB连接,这个状态不可靠啊),算下来这就七根线了,另外推杆模块也需要供电,要么外接电池,要么再接一个VCC到电脑上,那就需要8个线了,其中4跟可以用USB micro接口,但另外四根就很难受了。        

可能你会说,为啥不用USB来启动呢?我也想到了,但是查了不少资料,都说现再新的电脑都不支持USB远程唤醒关机了的电脑,想想也是,系统都关了,USB通讯也建立不起来啊,(当然也是有部分电脑可以通过BIOS加载USB设备来启动,但我的电脑不支持。。)        

所以在简洁美观性的追求下,我的目光聚焦到了USBType-C接口,标准Type-C接口有24P,其中包含两组USB3.x的差分数据线,但那个线间距是真的小啊,而且半插半帖的连接器也不好焊,所以我选择了12P的剪裁版Type-C接口,其中包括一组USB2.0的接线,一组CC控制引脚和SBU控制引脚,后面这两组引脚一般用于正反差识别、快充协议上,而我这里用不到这些功能,就正好替代成主机开关键和开关机状态读取功能,这样一个Type-C接口就搞定了8根线的需求。为了也能正反插,在中间用二极管搭了个换向处理结构,这部分电路如下图所示:

整个硬件原理图如下图所示:

layout并打个样板:

当然,定义了Typr-c的接口,对应的数据线也需要特殊处理下,才能支持开关机功能,不过上述设计好的地方就是 普通的数据线接上推杆,也可以进行HID通讯,不妨碍USB的功能;特殊处理过的数据线也可以当做普通的USB Type-C线来用,妙哉吧~

接下来是机械结构。在构思结构时,最开始我设想是导播室里面那个切换台的推杆,那个质感不错,只是感觉元素少了很多,所以就又找了找,正巧刷到《双人成行》的游戏视频,看到第一关里面夫妻变小了,在家里闯关时,需要一起拉动吸尘器的推杆,这推杆不正是我所设想的么!

于是以此为原型,我设计了本项目的推杆的ID,如下图所示

光有外观还不够,还要有内部堆叠,为了实现柔顺并有推动阻尼感,我选型了好几款阻尼器,最终选择了一个合适力度的,设计了内部堆叠,蓝色高亮部分为阻尼器,并增加了四个滚珠轴承来减小轴上不可控摩擦,如下图所示:

3D打印了个DEMO,试了下手感,那种顺滑舒服只可意会不能言传啊!

由于手上只有开发板上一颗CH32V103的芯片,所以只好给它做个心脏移植手术了:

移植好了,只是烧写器还是需要用开发板上的,上电测试,功能一切正常:

三、软件说明

开发平台:MounRiver Studio  

硬件MCU:CH32V103R8 

 代码仓库:Mult-PushRod-RISCV: 多功能推杆1、开关机键替代、开关机状态识别2、USB HID 多功能推杆

软件部分的整体的功能设计和程序设计如下思维导图所示:“创意源于生活,工具始于懒惰。”

软件部分主要逻辑都体现在上面的思维导图中。由于在开发AS5600外设时,要是用IIC,本以为CH32V103的会比较好用,也看到有网友用起了他的硬IIC,但我经过好久的调试,还是卡在初始化之后,总线处于busy状态,硬件排查了信号也没啥问题,就是不好使。

四、项目演示

本项目设计的多功能推杆依靠HID协议,可以实现键盘输出任意字符、鼠标点击移动控制、系统操作、各种软件快捷操作等,实用性、美观性和可玩性极高。多功能推杆的照片:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

第一步 新建任务 第二步 输入项目名称和选择自由风格的软件项目点击确定 第三步 配置下项目地址和账号密码 第四步 配置 build steps 选择 shell 脚本 第五步 shell 配置 (注意shell 必须以#!/bin/sh开头,否则会报 找不到shell 命令的错) …

【Web】DASCTF X CBCTF 2022九月挑战赛 题解

目录 dino3d Text Reverser cbshop zzz_again dino3d 进来是一个js小游戏 先随便玩一下,显示要玩够1000000分 直接console改分数会被检测 先是JSFinder扫一下,扫出了check.php 到js里关键词索引搜索check.php 搜索sn,发现传入的参数是…

3-羟基丙酸(3-HP)应用前景广阔 生物基3-羟基丙酸市场占比将不断提升

3-羟基丙酸(3-HP)应用前景广阔 生物基3-羟基丙酸市场占比将不断提升 合成技术是制约3-羟基丙酸规模化应用的重要因素。3-羟基丙酸合成技术包括化学合成法、生物合成法两大类,其中化学合成法是主流生产工艺,但化学合成法存在工艺复…

.netcore+vue新生分班系统的设计与实现

.netcore vue新生分班系统的设计与实现说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于.net core架构和mysql数据库vue 东北石油大学新生分班系统的设计与实现 功能模块: 登录 注册学生 忘记密码 系统首顶 个…

完成学校官网页面制作

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>教务系统</title> <style> .wap{ margin:0 auto; width:955px; } .top{ height:150px; padding-left:85px; …

DHCP服务器配置故障转移后显示红色箭头、与伙伴服务器失去联系的解决方案

一、遇到的故障现象&#xff1a; &#xff08;主DHCP服务器与备用DHCP服务器连通性正常&#xff0c;在故障转移选项卡上却显示与伙伴失去联系、伙伴关闭&#xff0c;且ipv4协议旁边显示一个红色的小箭头&#xff09;&#xff0c;正常情况下是绿色 &#xff08;一&#xff09;…

外包干了6天,技术明显退步。。。

我是一名大专生&#xff0c;自19年通过校招进入湖南某软件公司以来&#xff0c;便扎根于功能测试岗位&#xff0c;一晃便是近四年的光阴。今年3月&#xff0c;我如梦初醒&#xff0c;意识到长时间待在舒适的环境中&#xff0c;已让我变得不思进取&#xff0c;技术停滞不前。更令…

金三银四面试题(二十):单例模式知多少?

设计模式也是面试中的热门考题&#xff0c;基本这个部分都是问问你知不知道XXX设计模式&#xff0c;有什么用&#xff0c;优缺点&#xff0c;然后再现场手写一个demo。很多时候是和spring一起考的&#xff0c;问问你知不知道spring框架用了哪些设计模式。今天我们来先看看单例模…

代码+视频,R语言对数据进行多重插补后回归分析

我们在临床做回顾性研究分析中经常要面对数据缺失的问题&#xff0c;如果数据缺失量大就会对我们的研究结果产生影响&#xff0c;近年来&#xff0c;对数据进行多重插补广泛应用于SCI论文中。我们在之前的文章中已经演示了使用SPSS对数据进行多重插补并分析。今天&#xff0c;我…

贪吃蛇的简单实现(c语言)

前言&#xff1a;学完了C语言的基础语法&#xff0c;和一点数据结构的知识&#xff0c;拿贪吃蛇来练练手&#xff0c;并熟悉以前的知识。写完之后&#xff0c;有一种成就感&#xff0c;为以后的学习饱满激情。 注意这里的讲解是由部分到整体的思路。 目录 控制台不能是终端&am…

ubuntu环境下使用g++把c++编译成汇编语言(暂时)

1. 引言 为了深入理解c&#xff0c;决定学习一些简单的汇编语言。使用ubuntu系统下g很容易将一个c的文件编译成汇编语言。本文使用此方法&#xff0c;对一个简单的c文件编译成汇编语言进行理解。 2.示例 文件名&#xff1a;reorder_demo.cpp #include<stdio.h>typede…

逻辑回归+分类的评估方式

一&#xff1a;什么是逻辑回归 解决二分类问题 二&#xff1a;损失及优化 三&#xff1a;逻辑回归API 四&#xff1a;案例 五&#xff1a;分类的评估方式 评估公式 分类评估API ROC与AUC&#xff08;介绍API&#xff09;衡量不平衡样本 ROC曲线的绘制 分类中解决类别不平衡

HackmyVM-----Boxing靶机

文章目录 正常打靶流程1.获取靶机IP地址2.获取靶机端口服务3.访问网页4.添加域名WindowsLinux 5.访问域名6.nc反弹shell 7.结束 正常打靶流程 1.获取靶机IP地址 ┌──(root㉿kali)-[/home/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, …

Drive Scope for Mac:硬盘健康监测分析工具

Drive Scope for Mac是一款专为Mac用户设计的硬盘健康监测与分析工具&#xff0c;致力于保障用户的数据安全。这款软件功能强大且操作简便&#xff0c;能够实时检测硬盘的各项指标&#xff0c;帮助用户及时发现并解决潜在问题。 Drive Scope for Mac 1.2.23注册激活版下载 Driv…

linux 驱动-匹配2 (amba_bustype)

目录 1.实例分析 a. 设备树实例 b. 驱动实例 2. amba匹配流程 a. 创建amba_device b. 确定总线以及总线的匹配函数 c. 分析总线的匹配函数 1.实例分析 a. 设备树实例 serial7e201000 { compatible "brcm,bcm2835-pl011\0arm,pl011\0arm,primecell"; //创建am…

用Python自动化操作PPT,看完这篇文章就够了!

1.PPT自动化能干什么&#xff1f;有什么优势&#xff1f; 它可以代替你自动制作PPT它可以减少你调整用于调整PPT格式的时间它可以让数据报告风格一致总之就是&#xff1a;它能提高你的工作效率&#xff01;让你有更多时间去做其他事情&#xff01; 2.使用win32com操作ppt 官…

【探索Linux】P.32(自定义协议)

阅读导航 引言一、自定义协议概念二、自定义协议需要注意的事项三、自定义协议示例(跨网络计算器协议)✅协议代码&#xff08;Protocol.hpp&#xff09;1. 计算器协议简单介绍2. 序列化部分3. 反序列化部分4. 请求和响应数据结构5. 使用自定义协议 四、总结温馨提示 引言 在上…

Rust Tracing 入门

Tracing 是一个强大的工具&#xff0c;开发人员可以使用它来了解代码的行为、识别性能瓶颈和调试问题。 Rust 是一种以其性能和安全保证而闻名的语言&#xff0c;在它的世界中&#xff0c;跟踪在确保应用程序平稳高效运行方面发挥着至关重要的作用。 在本文中探讨Tracing 的概…

C++ 初识模板

目录 0.前言 1.泛型编程 2.函数模板 2.1概念 2.2格式 2.3原理 2.4函数模板的实例化 2.4.1隐式实例化 2.4.2显式实例化 2.5模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 4.结语 &#xff08;图像由AI生成&#xff09; 0.前言 在 C 中&a…

Unity3D 爆火的休闲益智游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS&#xff08;射击&#xff09;类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…