本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 Arduino Leonardo 的 USB 游戏控制器自行车—USBcycle

发布时间:2022-01-14
分享到:

基于 Arduino Leonardo 的 USB 游戏控制器自行车—USBcycle

发布时间:2022-01-14
分享到:

USBcycle 是什么?

USBcycle 是一款被入侵 USB 游戏控制器的自行车。它使您能够通过两种风格的开放世界游戏踏上自己的道路:

  • (A) 多轴操纵杆驱动游戏,您可以通过加速器、刹车和转向(如 GTA 和 ETS2 或飞行模拟器)以及额外的键盘输入来控制车辆
  • (B) WASD FPS“行走”游戏,例如 Portal、Talos Principle、Half Life、Dear Esther 等。

这个项目更多的是关于软件而不是硬件;我没有做任何原始电子电路设计。

我只是把一堆现成的零件放在一起,然后编写了 Arduino 代码,将它们变成了一个由自行车驱动的 USB 游戏控制器。这里唯一的聪明之处在于代码和对自行车的物理修改(甚至那些都很粗糙)。

在这篇文章中,我使用引用格式(紧接在下面)作为旁白、免责声明和游戏特定的注释,而不是引用其他人的话。Project Hub 在格式设置方面没有为我们提供很大的灵活性,因此我正在充分利用可用的内容。

免责声明:在我几乎完成了这篇文章的编辑之后,我想四处看看是否有人在类似的项目中使用了相同的名称。令我沮丧的是,我确实找到了一个“USB Cycle”项目,他们的标志与我的非常相似——我猜极客的想法是一样的。找到的项目是于荷兰诞生的,看起来有点学术性,有 Powerpoint 演示文稿等等。但它似自 2014 年初以来就没有新的变动更新了,所以我希望它是处于暂停状态或者已经完成,并且荷兰团队不会觉得我侵犯了他们的公众形象或试图窃取他们的街头信誉。我只想郑重声明,我和这个同名的项目没有任何关系,在我构建我的 USBcycle 时不知道它的存在,只是在我完成并命名我的项目后才发现它。荷兰的项目似乎被称为带空格的USB Cycle ,而我的项目则被称为没有空格的USBcycle 。


USBcycle 为什么?

在冬天我身材走样。我曾经是一个非常热衷骑自行车的人,但天气加上我们当地不适合骑自行车的地形让我变成了一个冬天的沙发土豆。嗯,电脑土豆真的,我花在玩游戏或编码上的时间比看电视要多。

但这没什么问题,对吧?来一辆健身车!低强度的室内运动,不下雨,不泥泞,不堵车,还有什么比这更容易的呢?

健身车的问题在于它们很无聊。我的意思是,真的很无聊。很难有动力去做一些如此无聊的事情,即使是 10 分钟,更不用说一个小时或更长时间了。但是我可以玩几个小时身临其境的电脑游戏而不会感到无聊。

显而易见的解决方案:为健身车配备视频屏幕,并将其与某种有趣的游戏类软件联系起来。这是一个如此明显的解决方案,以至于目前有不少人正在研究它。他们的项目范围很广,从相当漂亮的许可培训或锻炼包到基于车库的 Maker 工作。

我大致将它们分为三种受众:

  • 先进的自行车训练模拟器和支架(严肃的专业赛车手使用的那种)提供赛道模拟(骑自行车者正在准备的真实世界的课程),并配有应用程序控制的阻力按等级缩放。一些高科技教练架提供灵活的安装方式,因此自行车可以稍微倾斜一点,感觉更自然。非常漂亮。但是课程数量很少,软件是专有的,硬件非常昂贵。
  • 在学术界和原型设计的世界里,有一些聪明的人把自行车绑在 Google 地球上。一个横跨加拿大的实时虚拟骑正在进行中。这是一个非常酷的项目,但在家里复制似乎有点令人生畏。坦率地说,谷歌街景(根据我的经验)更像是幻灯片而不是动画。
  • 在低端市场,“USB游戏手柄自行车”开始出现;各种创意极客提出了免费或商业自行车/游戏控制器项目(通过马里奥赛车!通过无限生成的地形!)。此外,还有一些基于 iThing/计算机的健身自行车程序提供了不同复杂程度的虚拟赛道/课程。 一家公司正在销售一种专用的 USB 自行车形控制器和一些与之配套的简单游戏。但它不是通用的(它与特定于架构的硬件接口和/或供应商的专有游戏相关联)。而且它要花费 beaucoup bux。

我有一辆很好的旧 MTB,我不再使用了(年纪太大了,不认为在 BC 冬天的雨中和寒冷中骑行很有趣)。 而且我有一台性能中等的游戏电脑(一台带有 GTX 970 的 i7 Hackintosh,只要我留在 1080p 世界就足够了),而且我已经支付了一个非常好的开放世界驾驶模拟器的许可费——一个如此我已经花了 300 多个小时驾驶它,既可爱又有趣。整个冬天坐在我越来越厚的屁股上驾驶一辆虚拟卡车在欧洲各地并不能帮助我保持身材……但是这三种资源肯定可以以合理的成本组合成一个虚拟自行车设置吗?

因此,我决定看看是否可以将一辆普通的现成自行车变成一个 USB 游戏控制器,让我能够骑自行车而不是开车,通过超过 45,000(虚拟)公里的欧洲公路我最喜欢的开放世界模拟游戏。花了大约 4 个月的时间,因为我真的是从零开始(以前从未制造过任何本土电子产品,除了用组件组装计算机,对 Arduino 是什么只有最模糊的概念),但最终我成功了——并希望其他人可能会根据我的经验决定也这样做。

最终结果:一个通用的自行车到操纵杆控制器 (USBcycle),在车把上安装了一个用户控制面板。用户控制面板包括大量按钮(最后计数为 36 个!);我通过将按钮映射到特定于 ETS2 的命令来定制我的控制器,最终的结果是我非常喜欢的虚拟自行车旅行体验。

具体说明:

一个可以穿越的开放世界

  • 1 份 SCS 驾驶模拟器 Euro Truck Simulator 2(或 American Truck Simulator)。此 sim 适用于 OSX、SteamOS 和 Linux 以及 Windows。它可以通过 Steam 获得。核心游戏仅需 22 美元 CDN,但您会想要 DLC;SCS 的“whole enchilada”更像是 60 美元,您可以使用各种社区地图模块免费扩展您的开放世界。加一个简单的模组,让玩家的 POV 更像是骑自行车的人看到的道路。我可以为你提供这个模组。

运行开放世界并穿越它的硬件

  • 1 台能够以让您开心的图形质量运行 ETS2 或 ATS 的游戏计算机
  • 1 辆自行车或运动小玩意:1 辆标准公路自行车、山地车、卧式自行车或任何你身边的任何东西,至少有一个驱动轮、一个转向装置和一个制动执行器。如果您的自行车小发明是一辆真正的自行车,那么您需要一个训练架(不必花哨,我在 Ebay 上买了一个便宜货)。你可以使用滚轮架,但我认为你会失去使用自行车车把转向的能力——我认为在滚轮架上扭转车把会导致摔倒,尽管我没有亲自验证这一点。
  • 1个控制器将自行车变成USBcycle:

USBcycle控制器

  • 2 Arduino Leonardo
  • 一些硬件将传感器适当地安装在自行车上;没有 3D 打印机,我喜欢用泡沫芯、门皮、1/4 英寸层、废木头、热胶、闭孔包装泡沫、魔术贴、电工胶带等制作东西。
  • 各种长USB线,长HDMI线,长音频线等,用于在计算机和自行车之间传输信号。如果需要,您可以使用有源设备将这些长度扩展到 100 英尺以上。我只是把自行车放在电脑附近:-)
  • 一些专用(且更昂贵)的电子元件:I2C 分线板上的一个 ams 5601 霍尔旋转编码器、Adafruit Trellis 键盘(又是 I2C)、Adafruit 7 段显示器 I2C 背包、用于 WASD 版本的 WiiChuck(这也是 I2C)。
  • 一箱小型通用(廉价)电子元件——电阻器、LED、电容器、7 段显示器、线性电位器、旋钮、滑动开关、簧片开关、霍尔线性编码器(接近传感器)、按钮、无焊原型试验板、小型原型 PCB、跳线、RJ45 连接器和电缆等。
  • 一个带有用户控制面板的项目箱,安装在自行车车把上。制造一个或重新利用一个珠宝盒或其他一些盒子——大约 2 叠精装书的大小对我来说很舒服,但我相信你可以让它更紧凑。
  • 电子行业常用的基本手动工具,抗静电垫等。大多数情况下,它们不必非常昂贵;但我确实建议您购买或借用一个像样的烙铁来进行最终组装(以及用于构建套件组件,例如 Adafruit 背包)。一个好的铁杆可以在挫折(以及可能的组件损坏)和成功之间产生巨大的差异。
  • 可能是您项目最重要的资源:了不起的 Arduino 社区。论坛、几乎所有分线板和设备的免费库、数以万计的文档项目、官方在线文档和教程:所有这一切使我能够从“什么是 Arduino”变成一个可行的、相当复杂的项目在 6 个月内。诚然,我在编码和电子方面都有背景,但我认为即使是绝对的 n00b 也可以在 Arduino 上取得成功,因为支持质量非常高(官方和社区)。

我估计总成本低于 250 美元。

最后,在实际使用时,您需要在自行车前放置一个屏幕来观看世界(起初我只是从客厅偷了电视),如果听到环境声音效果很好有,所以:

加上视频和音频输出

  • 1 个大屏幕 1080p 显示器放在自行车前面
  • (奢侈品)立体声扬声器,骑行时享受游戏音效;或者你可以戴耳机。

目标:

  • 第一个里程碑: 构建一个简单的 WASD 控制器,其中踩踏动作决定了速度和前进/后退。通过使用真正的鼠标或模拟鼠标移动来引导。使用便携式步进设备作为踏板单元。这是第一阶段:可行性研究和原型。如果一切顺利,我计划继续...
  • 第二个里程碑: 使用真正的自行车而不是踏步机。代替简单的 WASD 按键,通过对自行车进行检测来模拟加速器/制动/转向控制轴。使用车把转向,使用 R 手制动杆制动,并以踩踏速度加速。让它感觉(有点)像骑自行车。

请注意,在这个版本的 USBcycle 中,我还没有成功地从游戏中获取任何遥测数据,所以这是一个零反馈系统。控制器无法知道(比我的 Driving Force GT 控制器知道的更多)卡车的速度或位置。所以它目前是一个相当愚蠢的系统。如果我是一个更快/更好的 C 编码器,或者可以找到一个合作者,遥测技术将开启各种可能性(比如风扇速度控制器,它会根据你的速度向你的脸上吹气,也许是应用程序控制的阻力,所以山丘是更现实,等等)。这一切都非常漂亮,并且在我的未来项目清单上。

开发套件:Arduino

我在这里从零开始,从未做过任何微控制器爱好。我决定使用 Arduino 技术,因为它看起来很流行、支持良好且用户友好。因此,我将使用 Arduino 构建一个模拟 2 个 USB HID 的设备:一个键盘和鼠标设备,以及一个具有 3 个轴的操纵杆。这实际上需要 2 个 'duinos,因为每个都只能模拟一个 HID。

我不知道为什么我在开始项目时如此确定这个 HID 限制。事实证明,一个 Leonardo 实际上可以模拟任意数量的 HID。可能我的应用程序无法容纳一个 Leo 的可用内存,所以我的 2-Leo 系统无论如何可能是一个不错的选择;但我现在很确定你可以将整个 shebang 放在一个 Due 上。
我知道我需要在控制面板上提供很多按钮来将击键发送到游戏(它使用很多单键命令);我还需要一个鼠标等效的鼠标功能(环顾、导航菜单),或者我可能会映射一些其他控制器来发送鼠标事件。我需要接受来自自行车上传感器的一些输入。

很明显,第二阶段版本将涉及大量 I/O。

他们之间的两个 Leos 必须监控所有的按钮、旋钮和其他用户输入设备,并将它们转换为游戏命令;监控自行车上的传感器并将其值转换为操纵杆轴值;并通过 LED、分段显示器等方式提供诊断和功能反馈。事实证明,我几乎使用了两个 Leos 上的每个 I/O 端口,而且我还可以使用更多。在两个 Leos 之间分配工作需要一些思考和几次迭代。两个狮子座也不得不互相交谈,又是一个挑战!

对我来说幸运的是,其他 Arduino 用户编写了许多有用的库,其中包括一个允许 Arduino 通过 IIC (I2C) 总线相互通信的库。

这辆方便的公共汽车对我来说是一个培根节省者。它只需要两根电线/引脚进行通信,许多现代组件都可以使用它。我不仅可以让两个 Leos 通过 I2C 进行通信,而且在可能的情况下,我还使用了也“说”I2C 的传感器和显示设备,从而节省了 Arduino I/O 端口。例如,Adafruit Trellis 键盘为我提供了 16 个按钮,仅使用 4 根线(vdc、gnd 和 I2C 时钟和数据),每根都连接到公共总线。我需要 2 个这样的键盘,总共 32 个按钮——如果没有 I2C,我永远无法将整个应用程序安装到两个 Leos 中。

我为 OSX 使用了标准的 Arduino 开发环境;我尝试了其他一些变体(Platformio 等),但最后发现当修订变得严重时,当与使用 vi 的外部编辑结合使用时,Arduino IDE 就足够了。到目前为止,修订控制非常粗略,主要是通过在不同的检查点重命名源文件来实现的(天哪,牛仔编码);在实现第二个里程碑之后,我对修订控制和使用 git(本地)跟踪日常开发和使用 github 进行发布变得更加认真。

其他软件

除了在 Leo 1 和 Leo 2 上运行的 'duino 代码之外,我还需要为 ETS2 制作一个简单的小模块,它将其中一个摄像头向前、居中和向下移动(大约是骑自行车者的头部高度),以便卡车不可见(除非您将虚拟头转动得太远)。这并不太难(而且 ETS2 改装是一个太大的话题,无法在此讨论);你现在需要知道的是,这个模组可以和 duino 源代码一起在 github 上下载。

我希望第一个可发布版本为用户提供正常玩游戏的选项(除了使用自行车进行 3 轴控制);同时也让用户方便地使用游戏作为一种虚拟的“自行车游览”体验。这就是为什么我在控制面板上需要这么多按钮的原因:除非您想要将备用 USB 键盘绑在车把上(我猜这是一个合法的选择),否则您需要很多按钮来控制 Eurotruck(刹车、灯、拖车挂钩、换档、相机选择、喇叭等)。我还想要更高级别的按钮按下选项,例如“将我传送到我喜欢的特定风景骑行的起点”,“以我喜欢的踩踏速度将游戏的曲速设置为舒适的主观自行车速度”, “明天早上做,因为我不”

我希望 EBS1 的自行车旅行模式能够呈现更少的卡车式功能和更多令人愉悦的幻想,这意味着更多的游戏调整。幸运的是,ETS2 提供了许多用户可设置的选项。在我用于自行车旅行的个人资料中,我关闭了其他交通和所有道路法规;这意味着我可以在马路的错误一侧骑行,打破限速,闯红灯等,而且路上没有其他人......一个骑自行车的人的梦想世界!大多数这些调整都可以在不离开自行车的情况下启用和禁用,但不是全部;有些(如道路法规和疲劳模拟)只能通过游戏内菜单层访问。为了让卡车在人口稠密和守法的世界中正常运行,并开展标准的货运提货和交付活动,我将设置第二个配置文件。我包括“

我两种方式都骑过。成为一名运送货物的超高速自行车快递员很有趣(即使后视镜确实向您显示了半挂车和拖车)。而且(恕我直言)为了锻炼和观光而自由游览更加有趣。ETS2 的世界非常值得我们一览。

如果您对此项目有任何想法、意见或问题,请在下方留言。

原文链接丨以上内容来源网络,如涉及侵权可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论