当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]在设计我们的控制器时,我希望采用一个简洁的设计,遵循Xbox手柄的按键布局。我基本保持了按键布局不变,但将整体造型从传统的手柄设计改为圆润的长方体形状,并带有弧形背部。该设计极简,为了美观,我计划使用两种颜色打印部件。

这是我自制的一款Xbox手柄,完全从零开始制作。它以ESP32-C6开发板作为主MCU,搭配定制的按键板、模拟摇杆以及特制外壳,打造了一款DIY无线Xbox手柄。

使用这款手柄就像使用任何Xbox手柄一样,只需通过蓝牙配对,打开Steam,设置按键映射,然后就可以用它来玩游戏了。

在演示过程中,我试玩了《Broforce》和《辐射:新维加斯》,两者都运行良好。

本文将介绍该项目的完整构建过程。让我们开始构建吧。

所需材料

本项目所使用的组件如下

•定制PCB(由PCBWAY提供)

•ESP32 C6 开发套件 V1

•4x44 触摸开关

•12x1222 按键开关

•M2螺丝

•模拟摇杆扩展板

•3.7V 500mAh 14500锂离子电池

•PCM模块

•手持式TIG焊机

3D打印零件

设计

在设计我们的控制器时,我希望采用一个简洁的设计,遵循Xbox手柄的按键布局。我基本保持了按键布局不变,但将整体造型从传统的手柄设计改为圆润的长方体形状,并带有弧形背部。该设计极简,为了美观,我计划使用两种颜色打印部件。

整个设计均使用 Autodesk Fusion 360 创建。

零件

我们从将所有硬件(如ESP32板、模拟摇杆、开关PCB和锂电池)排列成类似普通Xbox手柄的布局开始设计过程。按钮和摇杆的位置严格遵循了Xbox手柄的布局,其余组件则根据其在设计中的最佳位置进行布置。

根据这一布局,外壳被设计成围绕组件排列的结构。

XBOXBOXBOX 按键 SUDO PCB

现在来一个巧妙的小技巧:你知道吗?你可以用3D打印自己制作的PCB。虽然不是完整的PCB,但可以打印出能固定通孔元件的电路板。我正是这样设计了Xbox按钮的PCB。

为此,我在设计上加装了一个12×12的按钮,并添加了四个用于开关线缆的安装孔,以及两个额外的孔位,用于将电路板固定到控制器外壳上。

这里的思路是使用普通PLA打印这个电路板,将开关安装在上面,让开关的引脚固定住所有部件。然后在接线时,直接将电线焊接到开关的引脚上。这个“PCB”仅起到固定作用,确保开关能够稳固地安装到位。

3D打印部件

前后机身部分采用黑色PLA打印,所有按钮则使用红色PLA打印,以营造出红黑双色的视觉效果。

此处所有打印均使用HYPE PLA红色和黑色线材,所有部件均采用0.4毫米喷嘴、15%填充率、0.2毫米层高进行打印。

硬件

本项目所使用的硬件相当简单。我们以ESP32-C6开发板作为主控制器,该设备提供了大量GPIO引脚,其中大多数在本次构建中得到了使用。

我们还定制了D-pad和扳机按钮的PCB,用于作为按键输入板。

对于模拟控制,我们使用了从亚马逊购买的通用模拟摇杆,它们被用作控制器左右两侧的模拟摇杆。

PCB开关板

在本项目PCB设计中,我使用了两个专为类似项目设计的按钮板。这类项目需要添加按钮功能。其原理很简单:在PCB上放置多个按钮,将所有按钮的一侧连接到GND,另一侧则连接至一个接口,该接口可与微控制器相连接以获取按钮输入信号。

这些电路板主要用于类似本例的概念验证组装。电路板的布局、轮廓和按钮位置均根据开关板的CAD文件尺寸进行设计。

PCBWAY 服务

在完成设计后,我生成了PCB Gerber文件,并将其发送至PCBWay进行制作。我为触发器和D-pad的PCB都选择了紫色基板,搭配白色阻焊层。

质量非常出色,表面干净,丝网印刷清晰锐利,所有细节都与设计完美契合。

过去十年间,PCBWay凭借可靠的PCB制造和组装服务建立了良好声誉,已成为全球工程师和制造商的首选。

说实话,如果你在制作定制PCB时不考虑PCBWay,那只会让自己事倍功半。他们还提供CNC加工和3D打印服务。

PCB组装

这两个按钮板的组装过程也很简单,唯一需要的部件是一个4×4的按钮开关。在我们的制作中,需要两个四键板和两个双键板,总共12个按钮。每个按钮都逐一被放置到四个板上各自指定的位置。

之后,每块电路板都被翻转过来,我们使用焊锡笔将所有开关永久固定到位,完成了按钮板的组装过程。

电源组件

为了控制器的电源,我们希望使用比普通18650电池更小的电池。使用锂聚合物电池是一个选择,但它们的容量不足以支持设备长时间运行游戏。

相反,我们决定采用不同外形的锂离子电池。我们选用了14500电池,它本质上是18650电池的缩小版,容量约为前者的二分之一。

这里我们使用的是一个3.7V 500mAh的锂离子电池。

电池裸装,不带任何PCM电路。当锂电单体使用时,若没有专用的充放电电路,则必须配备PCM电路。该PCM电路可提供低通、高通和短路保护功能,以保护电池,防止其像鞭炮一样爆炸。

为了将PCM添加到电池单元中,我使用了一种新工具:便携式TIG焊机。这种工具在处理电池单元时非常实用,因为它能确保我们不会用烙铁直接接触锂电池的电极。使用高温烙铁触碰电极可能会损坏电池并降低其容量。

我们是如何将PCM与电池单元连接起来的:

•PCM预装有两条镍条。我们将PCM与电池单元一起放置,并裁剪掉镍条的多余部分。

•然后,我们将金属条与电池端子对齐进行弯曲。使用TIG焊机,先将镍条点焊到正极上。为了增强连接强度,我们进行了两到三个焊接点。

•之后,我们将电池翻转,并对负极重复同样的操作。

•连接完成后,我们把导线接到了PCM的P+和P−端子上,然后用万用表检查是否获得了输出电压。这确认了我们的电池工作正常。

这是为什么这个PCM很重要:我们将把该电池单元连接到ESP32开发板的5V输入端。这意味着当我们插入Type-C数据线时,电池会从5V开始充电。但如果电池电压超过4.2V,电池可能会发生爆炸。PCM可以防止这种情况发生。当电压达到4.2V时,它会切断B+和P+之间的连接,从而停止充电过程。

低压保护也是如此。当电池电压达到约2.2V时,PCM会切断电源,这是推荐的最低放电限值。

前部车身总成

我们从前面壳体内部开始组装,将方向键和XYAB按钮安装到相应位置。

接下来,将按钮板放在D-pad和XYAB按钮上,并与螺丝凸起对齐。然后,我们为每块PCB使用了四颗M2螺丝进行固定。

同样,模拟式操纵杆模块被安装在相应位置上,并使用M2螺钉固定。我们在此处采用了垫圈头螺钉,以确保操纵杆模块牢固固定。

XBOXBOXBOX 按键 SUDO PCB PCB PCB 装配

Xbox按钮已就位,我们在其上方放置了3D打印的开关PCB。对准两个安装螺丝凸起后,用两颗M2螺钉将其固定。

肩部与扳机按钮PCB

扳机键和肩部按键的按钮板已正确安装到位。

我们在顶部结构中设计了两条支撑肋条,使PCB板可以轻松滑入其中,并通过压力固定牢固地保持位置。

布线

这个设置的布线过程相当简单直接。在布线时,我们需要大量的跳线。我使用了单芯银涂层铜线,因为它与焊盘连接良好,而且由于是单芯线,因此不会出现单根导线焊接不牢而意外短路到相邻连接器的问题。

我们首先将所有按钮板和两个模拟摇杆的GND连接到ESP32-C6开发套件的GND引脚上。

接下来,将ESP32的3V3引脚连接到两个模拟摇杆的VCC引脚上。

联系

•将左摇杆X连接到GPIO0

•左摇杆 Y Y Y 轴连接至 GPIO1

•右摇杆X连接至GPIO2

•右侧摇杆 Y Y Y 轴连接至 GPIO3

按钮连接

•GPIO10 为 A A A 按钮

•GPIO11 为 B B B 按钮

•GPIO13 为 X X X 按钮

•GPIO18 为 Y Y Y 按钮

•GPIO15 为 LB LB LB 按钮

•GPIO23 为 RB RB RB 按钮

•GPIO6 为左摇杆点击(LSLS 点击)

•GPIO7 为右摇杆点击(RSRS 点击)

•GPIO8 为 Xbox Xbox Xbox 指南 / / 家庭按钮

代码与测试运行

这是我为这个项目准备的代码,很简单。

我们的草图将ESP32-C6开发套件转变为一个功能完整的无线游戏手柄。为此,我们使用了BleGamepad库,该库通过蓝牙的HID协议模拟出标准即插即用的Xbox风格无线控制器。

我们将代码上传到ESP32-C6开发套件,上传后在电脑上搜索时,设备显示为蓝牙游戏手柄。我们连接后打开了Gamepad Tester网站,这是一个测试有线和无线控制器的优秀工具。

每次我们按下按钮或移动摇杆时,都能看到它显示为按钮输入或轴向移动,从而确认设置正常工作。

最终组装

我们首先将锂电池的正负极连接到ESP32-C6的5V和GND引脚上,以开始最终组装过程。

随后,将ESP32-C6板放入后部机身的指定位置,并使用热熔胶枪将其固定。

接下来,将肩部和扳机按钮安装到前后两个机身部分。之后,将两个机身半部分拼接在一起,并使用四颗M2螺钉固定,完成装配过程。

我们的控制器现在已经完成了。

结果

这是我们构建的最终成果:一款可在 Windows 和 Mac 上使用的 Xbox Xbox 手柄。它甚至应该也能在 Linux 上运行,不过我还没测试过这一点。

要配对控制器,我们进入蓝牙设置,此时设备会显示为“无线控制器”。完成配对后打开Gamepad Tester,这是一款非常实用的网页游戏手柄测试工具。通过移动模拟摇杆和按下按钮,我们可以查看所有输入是否被正确记录,从而确认设置已完美生效。

接下来,我们打开 Steam。由于这个控制器默认不直接使用 XInput,而是作为无线 HID 控制器工作,因此我们需要先手动映射按键。进入 Steam 中的控制器设置,逐一为每个按键分配对应功能,跳过没有的按键,而我们的控制器只有两个按键。

完成映射后,只要我们将控制器与Steam配对,就能正常使用。甚至双击控制器上的Steam按钮,也能让Steam进入大图模式。

使用这个控制器,我们测试了两款游戏:《Broforce》和《辐射:新维加斯》。我注意到左右摇杆存在一定的输入延迟,但除此之外,其他功能似乎都运行正常。

现在,我的设计有个问题:它并不比Xbox手柄好。

当然,它确实能用,但看起来甚至不像一个廉价的商用控制器。它感觉非常像DIY产品,说实话,这完全没问题,因为它本身有其优势。最大的优势之一就是任何人都可以自己动手制作,并根据自己的需求进行定制。而且和大多数商用控制器不同,它是开源的。

这个项目更多是一个概念验证。未来,我会准备一个简化版本,减少布线,并将所有功能集成到一块单板上。可以不再使用ESP32开发套件,而是直接使用ESP32芯片本身。此外,还可以加入更高品质的摇杆和更优质的按钮。仍有很大的改进空间。

目前,这个项目已经完成。特别感谢你们一路支持到这一步,我很快就会带来一个新项目。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

EASY-EAIAI 编译环境是由广州凌茂科技独立开发的在线编译环境(开发板在线),可在 PC PC 终端与开发板终端之间建立实时同步映射关系,确保在 PC PC PC 端进行交叉编译时,能够实时链接到开发板的依赖库。

关键字: 开发板 计算机 RV1126B

PCB丝印常被视为纯粹的技术性产物,而非一种通信媒介。在两种情况下,可用性工作往往被认为比“真正”的工程工作次要。我们需要更加关注用户体验(或开发者体验),以让所有用户受益,包括初学者和资深开发者。这并不一定意味着要做出...

关键字: 开发板 PCB Arduino UNO

本实验/项目的目标是在基于STM32F407ZGT6的RT-Spark开发板上实现硬件定时器中断以及前台/后台任务调度系统。通过配置两个硬件定时器TIM2和TIM3,以不同速率切换两个内置LED灯;同时在KEY_UP按钮...

关键字: 定时器 开发板 STM32F407ZGT6

这辆Wi-Fi汽车是我工程设计辅修课程EDES 301项目的一部分。我一直对生活在广阔世界中的概念充满兴趣。最近,FPV(第一人称视角)在无人机和遥控车领域迅速发展。此外,业余爱好者3D打印技术的兴起也让更多人能够自己动...

关键字: Wi-Fi 3D打印 遥控车 EDES 301

作为领先的嵌入式处理器模组厂商,米尔将携安路FPGA核心板和开发板亮相。我们诚邀您共聚西子湖畔,一同探索FPGA技术在边缘计算、工业控制与AI加速等领域的最新技术突破与落地实践。

关键字: FPGA 核心板 开发板

关键之处在于这个项目的规模之大。我制作了一个夸张巨大的摩托罗拉DynaTAC 8000X复制品,用3D打印了机身,并打造出了一个几乎一模一样的、实际上能正常使用的复制品。

关键字: 蓝牙音箱 DynaTAC 8000X 3D打印

如果你曾尝试在边缘端构建过任何类型的视觉系统,比如农业监测、库存追踪等需要本地识别物体而无需向云端发送请求的场景,你可能已经遇到过同样的难题:传统微控制器(MCU)本身没有足够的内存来运行物体检测。无论是内存不足无法缓冲...

关键字: 单板计算机 开发板 STM32N6570-DK

本项目的目标是制作一个非常简单的电压表,至少具备良好的精度,并理解模数转换器(ADC)的工作原理。该项目使用了RT-Thread公司生产的RT-Spark(Spark-1)开发板。

关键字: 模数转换器 电压表 RT-Spark 开发板

该项目是一个基于 RT-Spark STM32 开发板的实时、裸机硬件接口。它充当了一个交互式的控制面板,将物理世界与数字世界连接起来。通过读取来自一个 5 个方向操纵杆的输入,该系统会立即触发数字逻辑来控制外部独立的...

关键字: 液晶显示屏 FSMC 开发板 STM32

米尔电子正式发布 MYDLMX9X 平台 V2.0.0 软件版本。本次升级以系统安全为核心,集成 EdgeLock® Secure Enclave 硬件信任根,完整实现安全启动 (AHAB) 、安全存储、安全 OTA 升...

关键字: 工业物联网 存储 开发板
关闭