该项目始于我决定更新方向盘,以便适合我的个人模拟驾驶要求,这代表了现实主义和没有装饰的驾驶体验。
但是,话虽如此,它应该与任何兼容的Thrustmaster底座和控制台一起使用,因为它正在模拟F1方向盘。
我设定了高昂的目标,并列出了我想要方向盘功能的东西。
Steerig Wheel应具有PlayStation DualShock 4 Controller上所有可用的按钮
我想包括与方向盘相关的设置的显示(可能是将来的更新)
旋转编码器以快速访问必要的驾驶功能(制动平衡,ABS和牵引力控制)
我还想包括一个自定义的组合操作按钮(CAB),该按钮将使我能够通过单击一键增加或减少X次函数。
由于我无法立即访问3D打印机或CNC机器,因此我决定使用3drap。它的设计之一。在安东尼奥(Antonio)的帮助下,我们设计了他们现有的当前车轮的新版本,与我的设计相匹配。
观看行动中车轮的快速视频演示。
使用标准喷墨在A4贴纸上打印贴纸,然后用透明的包装胶带覆盖。
在此处下载贴纸表(PDF)。
硬件要记住的最重要的事情是,Thrustmaster底座用〜3,5V的方向盘为您的方向盘提供动力。您使用的所有内容都应该能够在该电压上运行。
从一开始,想法就是在Arduino Nano董事会周围建立它。我以前曾在这个平台上经验,并且在互联网上发现一些起点使这个决定变得容易了。
接下来是显示。我只是想让显示器作为我在车轮Itslef上查看和编辑设置的一种手段,而不是连接或查看遥测。因此,简单的16x2背光LCD就足够了。为了保持GPIO的限制,我还添加了一个I 2 C背包。
旋转编码器有点麻烦,因为Arduono Nano不支持许多GPIO。归根结底,我和三个Duppanet I 2 C旋转编码器迷你v2.1板一起去了。他们工作得很好,永远不要错过打击,只需要3个GPIO的总数。
最后,对于旋转开关,我使用了两个Mini 8向旋转开关,每个开关都驾驶一个模拟GPIO,从而减少了所需的GPIO的更多。这个想法非常简单,您可以在这里找到更多。
我需要22个按钮来执行我计划的所有funcitons。我从多个在线供应商那里采购了它们,没有特别的人提及。大多数按钮是简单的临时(ON)-Off开关,除了(ON)-Off-(on)切换。对于桨式换档3drap。它提供了紧贴机箱的重型微型开关。
?这是我使用的硬件的完整列表。
这是我从社区那里得到很多帮助的地方(请参阅下面的信用)。我进行了研究,发现许多人正在做类似的事情,但是我不希望方向盘上班。因此,我联系了其中一些,获得了一些见解,并开始构建自己的版本。
我的出发点是塔拉斯(Taras)的这篇文章,在那里我获得了T300的基本硬件和软件连接指南。这也是我读过的第一篇文章,引导我这次旅程。塔拉斯(Taras)一直在回答我所有的技术问题,这是一个巨大的帮助。
随后,我在Bram Harmsen的一个项目中发现了反向工程的Thrustmaster F1 Wheel Wheel Bits&Bytes,其中包括L3&R3按钮,而其他方向盘通常不可用。拥有复制所有操作所需的所有信息,我开始将其整合在一起。
我不会在此处了解该代码的细节太多,但是欢迎您在回购中查看它。我添加了尽可能多的评论。
?查看Arduino素描文件
车轮的行为与市场上的任何其他轮子一样。它模拟所有PlayStation DualShock 4控制器按钮。主要区别是按钮矩阵,显示菜单,旋转编码器和旋转开关(CAB功能)。
以在Nano上保存GPIO的名称,我创建了一个5x5按钮矩阵,以支持我设计的22个按钮(是的,我有3个可以备用!)。
?这是按钮矩阵。
我想要展示的原因有几个。首先,我需要一种方法来更改车轮设置,而无需将其连接到计算机。其次,我还认为有一个时钟可以显示现实世界的时间和日期是很不错的。第三,显示屏可以在以后的更新中使用以显示遥测...(但尚未计划)。最后,看起来很酷。
显示屏由三个显示按钮控制:
菜单:打开/关闭轮子菜单
下一步:滚动菜单
选择:选择一个选项
显示菜单选项:
车轮模式:根据您要播放的平台设置车轮模式:
PS- PlayStation(PS)模式
PC-高级(PC)模式
disp。模式:设置显示按键打开时的显示模式。每次按下按钮时,都会显示其函数:
PS-按任何按钮显示PlayStation按钮功能(交叉,三角,L2,R2,...等)
GT-按任何按钮显示模拟器按钮根据我的个人喜好(Pit Limiter,Hud,雨刮器等)显示
按键:在显示屏上显示按钮键盘
日期/时间:在主屏幕上显示或隐藏日期和时间
蜂鸣器- 打开或关闭蜂鸣器
小时chir-是的,它也可能每小时发出哔哔声,以跟踪您在模拟器上花费的时间
显示- 关闭显示(任何显示按钮再次将其重新打到A))
运行时- 显示方向盘启动以来的时间,所以您知道它运行了多长时间
旋转编码器允许在驾驶时快速访问制动平衡, ABS和牵引控制调整。旋转编码器很酷,因为您可以快速调整设置,而无需在屏幕菜单上分散自己的注意力。
旋转编码器的映射如下:
描述 | 左腐烂。 ( - ) | 右腐烂。 (+) |
---|---|---|
制动平衡(BB) | D-pad降低 | d-pad up |
反铁制动系统(ABS) | L3 | R3 |
牵引力控制(TC) | D-pad左 | d-pad右 |
描述 | 左腐烂。 ( - ) | 右腐烂。 (+) |
---|---|---|
制动平衡(BB) | 向下 | 向上 |
反铁制动系统(ABS) | 20 | 21 |
牵引力控制(TC) | 左边 | 正确的 |
?这是我在两个平台上使用的CORSA Competizione中应用的控制绑定图。
这是我在观看视频时考虑的事情,其中Nico Rosberg在单一膝盖上多次将刹车平衡从前后和后部转移以优化您的驾驶。您当然可以使用旋转编码器,但是您不能精确,尤其是在力量反馈启动方向盘时。
这个想法是创建一个可以根据您的喜好复制mutliple点击的设置按钮。使用旋转开关,您可以快速设置参数:
CAB模式:选择要复制的功能(BB,ABS,TC)
驾驶室步骤:选择要按按钮(1x-8X)的次数
驾驶室 - /+:选择驾驶室 - /+按钮时,它将在您选定的首选项上执行
我想保持尽可能紧凑的事情,以便需要定制板。我还希望事情可以可移动和互换,以防将来失败。我的目的是创建一个自定义印刷的PCB,但在此时间点确实没有意义(也许在更新中?)。最终板由5x7厘米的完美板组成,我使用实心芯线进行连接。
尽管我的第一次尝试(V1)正常运行,但并不像我想要的那样紧凑。实际上,它根本不适合转向围栏。我对轨道进行了重新设计,并使用角度的杜邦男性连接器重建了第二版(V2),从而节省了很多空间,这是由于高度有限。
?看看最终图的布局和板。
如果您按照图表显示的一切有线并连接,则可能会全部使用方向盘。
要编译Arduino草图,您需要安装这些库:
EEPROM.H-用于存储设置的EEPROM库
Liquidcrystal_i2c.h-液晶显示I 2 C库
i2cencoderminilib.h- rotery编码器I 2 C库
timelib.h-时间库
DS1307RTC.H- DS1307 RTC库
请按照库的说明进行有关如何在RTC上设置当前时间的说明。
按照图书馆的说明进行有关如何更改每个旋转编码板的地址的说明。我将它们设置为如下:
BB(制动余额):0x20
ABS(Antilock制动系统):0x21
TC(牵引力控制):0x22
鉴于返回的值取决于所提供的电压,可能需要调整的一件事是旋转开关值。将DEBUG_ROTARY_SWITCHES
设置为true
,LCD将显示两个交换机的当前值。记下这些数字,然后在getCABMode()
和getCABSteps()
函数下的t300_functions
Sketch File中更新它们。
我添加了内置性能监视器。您需要将DEBUG_LATENCY
设置为true
并打开串行监视器(115200 baud)。上传后,您将查看有关当前循环延迟的实时报告。
第一个软件版本有很多问题,延迟最大。时不时会单击按钮,这在比赛中意味着倒车或降档上的失火。这弥补了一些不好的表现。
在进行测试后,我发现一个循环以2800ms左右的速度运行,每秒大约106000ms的最终打ic。夸张的是,某些东西正在产生某种类型的延迟。我最终优化了旋转编码器和时钟(RTC)的代码。
由于显示器不会为驾驶体验增加太多,因此您可以选择通过长压ABS旋转开关在驾驶时将其关闭。
当前版本无缝地工作,我在赛车过程中没有注意到任何失火。
一个很小的空间来承认他人以前所做的工作。
Taras Ivaniukovich https://rr-m.org/blog/-对于他在博客上分享的工作以及他一直提供的帮助
bram harmsen https://www.thingiverse.com/thing:2813599-用于反向引擎F1方向盘
MRFID72-对于很棒的YouTube视频,解释了模拟旋转开关
丹尼·范·丹·布兰德(Danny Van den Brande) - 我在网上找到的代码帮助我设置了按钮矩阵
Antonio de Stefano https://3drap.it-对于令人敬畏的方向盘外壳
GNU通用公共许可证v3.0或更高版本