Posted April 17, 2025 by Ziduan
#ZH-S
大家好!今天,我们要深入介绍这款游戏真正的核心与灵魂——那把独一无二的、我们亲手打造的定制雨伞控制器!这里会有从原型阶段到最后我们是怎么一点点升级和设计我们控制器的,如果你也有机会自己制作一把雨伞来玩那这将会是一个很好的参考。(真的会有人尝试吗?)
最开始定下来游戏的内容后,就开始尝试设计我们的控制器。首先这一切的主体当然得是一把伞,其次就是根据玩法,我们需要实现三个核心动作的检测:
为了达成这些需求,我们一个个的找解决方案。
在正式设计伞柄前,我们在面包板上快速搭建了一个最小原型,连接了 IMU 和 ESP32,初步测试了姿态追踪算法和软硬件通信流程。
然后下一个问题就是怎么将这些东西放到伞上呢?
想来想去最适合的位置还是伞柄。将原本伞的伞柄拆下,装上我自己设计的包含了所有零部件的伞柄是最好的。我参考了自己常用的一把伞的尺寸,用 Fusion 建模设计了一个加长版的伞柄,预留出容纳电子元件的空间。
你可以看到我们掏空了一个圆柱体的内部,将其切分成三份,在中间是我们主要放置零件的地方。我们设计了一些位置刚好的挡板和螺孔来固定我们的零件,在最上方留了一个用于连接伞的结构。在这里使用热熔胶将原本的伞杆和我们的伞柄连在一起。最后上下两个部件一起构成圆润的外形,还给摇杆预留了空间。摇杆帽也是我们自己单独设计打印的。
经过一段时间的建模调整和 3D 打印,第一个定制伞柄诞生了!然后就是组装和焊接,由于空间比较狭窄,且电烙铁一不小心可能会融化我们的伞柄,所以在做这一步的时候得非常小心。
在第一次组装完成后,我插上电测试时,整个雨伞完全没反应!ESP32 没输出,传感器读不到。我一度崩溃,以为哪里焊错了。仔细排查后,发现问题出在连接伞顶部 IMU 的线上。为了把电源线 (VCC, GND) 和 I2C 数据线 (SDA, SCL) 从伞柄穿过伞杆引到顶部,线缆拉得太长了,我也是硬件新手,不知道这是因为什么,但根据我的测试和网络上的建议,I2C可能确实短一点比较好。最终我决定使用 ESP-NOW 无线中继,这样的解决方案有点“曲线救国”,不过确实能用:只从伞柄向上引电源线,在伞顶部增加一个 ESP32,这个顶部的 ESP32 只负责读取顶部 IMU 的数据,然后通过 ESP-NOW 协议无线地将数据发送回伞柄里的主 ESP32。这样,所有数据就在主 ESP32 汇总,再统一通过 USB 线传到电脑。问题解决!
这就是我们的第一版控制器。它很简陋,拖着根线,但它确实能用。
原型阶段过后,我们明确了 V1 的不足和未来的方向:
为了实现这些目标,我们就需要往我们的伞添加一些新的硬件:
那摇杆还留着吗?答案是留着,我们还是需要一个扳机的,通过外壳限制摇杆的左右移动就可以了。
自然的,我们迎来了全新的设计挑战:把所有新东西塞进伞里!
新加入的电池、UWB 模块等都挺大的,但我的 3D 打印机尺寸有限,伞柄无法做得更长,只能稍微增加一点直径。接下来就是漫长的 3D 建模、打印验证、调整、再打印的循环。如何在极其有限的空间内,合理布局所有元件、电池、走线,还要考虑实际安装和焊接的可行性,对我这个 3D 建模初学者来说是巨大的挑战。最终,我们的设计是这样的:
你会发现,大致的结构和我们的初版设计差不多,整个伞柄变得更粗了,为了保证一定的握持感,将最上面削平了。底部主要给电池模块预留安装位置,在此之上叠加新的 UWB 芯片。摇杆还是占据了伞柄中部的位置,ESP32 和 陀螺仪则叠加在摇杆上方。最后上下外壳都给振动马达预留了一个可以卡进去的槽位,和伞杆的连接部分与之前一致。考虑到强度,最终的伞柄我们选用了 PLA-CF 材料进行打印,显著提升了外壳的强度和刚性。
不过即使经过精心设计,最终的装配过程依然非常痛苦,因为预留的空间还是非常紧张。一些元器件本身的固定设计也是将一个螺丝钉能固定的物体数量发挥到了极致。最厉害的一颗螺丝钉同时固定住了电池、UWB 芯片、中框和下面的外壳。总之,我不想再装第二遍了。
↑ 这是组装过程的 gif,点击查看原图
以上就是我们的设计思路和过程了,现在让我们仔细看看 V2 控制器的内部构成和工作流程吧:
硬件清单:
数据流:
那么,这把倾注了我们心血的 V2 控制器表现如何呢?
打造 Umbrella Master 的这把伞是一段充满挑战、失败、学习和突破的旅程。它远非完美,还有很多需要改进的地方,但正是这些不完美和我们为之付出的努力,让它变得独一无二,哪怕到最后它都没法很好的工作,这段经历让我学会的新技能已经太多了。它不仅仅是一个输入设备,它是 Umbrella Master 体验本身。我们相信,这种真实的物理交互能带来传统手柄无法比拟的沉浸感和乐趣。希望这篇技术分享能让你对这把特殊的“伞”有更深的了解。