このプロジェクトは、ステアリングホイールを更新して、リアリズムとフリルなしの運転体験を表すものを表すものに合うように、ステアリングホイールを更新することにしたときに始まりました。
しかし、そうは言っても、F1ステアリングホイールをエミュレートしているため、互換性のあるスラストマスターベースとコンソールで動作するはずです。
目標を高く設定し、ステアリングホイールに備えたいもののリストを作成しました。
Steerigホイールは、PlayStation DualShock4コントローラーで利用可能なすべてのボタンを備えている必要があります
ステアリングホイールに関連する設定のディスプレイを含めたかった(そして、おそらく将来の更新)
必要な運転機能に迅速にアクセスできるロータリーエンコーダー(ブレーキバランス、ABS、トラクションコントロール)
また、1回のクリックで増加または減少することを可能にするカスタム結合アクションボタン(CAB)も含めたかったのです。
3DプリンターやCNCマシンにすぐにアクセスできないため、3Drap.itのデザインのいずれかを使用することにしました。アントニオの助けを借りて、私たちは彼らが持っている現在のホイールの新しいバージョンを設計し、以下の私のデザインに一致するものを設計しました。
動作中のホイールの簡単なビデオデモをご覧ください。
ステッカーは、A4ステッカーシートに標準のインクジェットを使用して印刷され、透明な梱包テープで覆われました。
ここからステッカーシートをダウンロードしてください(PDF)。
ハードウェアで覚えておくべき最も重要なことは、スラストマスターのベースが〜3,5Vでステアリングホイールを動かすことです。使用するものはすべて、その電圧で実行できるはずです。
当初から、アイデアはArduino Nanoボードの周りにこれを構築することでした。私はこのプラットフォームで以前に経験を積んでいますが、インターネット上でいくつかの出発点を見つけたという事実により、この決定が容易になりました。
次はディスプレイでした。私は、テレメトリーを接続したり表示したりするのではなく、ホイールで設定を表示および編集する手段としてディスプレイを望んでいました。したがって、単純な16x2バックライト付きLCDで十分です。 GPIOを制限するために、I 2 Cバックパックも追加しました。
Arduono Nanoは多くのGPIOをサポートしていないため、ロータリーエンコーダーは少しトラブルでした。一日の終わりに、私は3つのDuppanet I 2 CロータリーエンコーダーMini v2.1ボードを持って行きました。彼らはうまく働き、ヒットを見逃すことはなく、3 gpioの合計しか必要としません。
最後に、ロータリースイッチでは、2つのミニ8ウェイロータリースイッチを使用しました。アイデアは非常にシンプルで、詳細はこちらをご覧ください。
計画したすべてのファンシトンを実行するには、22のボタンが必要でした。私はそれらを複数のオンラインベンダーから、特に言及することはありませんでした。ほとんどのボタンは、(on)-off(on)トグルを除き、単純な一時的な(on)offスイッチです。パドルシフター3drap.tは、エンクロージャーにぴったりと収まる頑丈なマイクロスイッチを供給します。
?これが私が使用したハードウェアの完全なリストです。
これは、私がコミュニティから多くの助けを受けた場所です(PLSは以下のクレジットを参照してください)。私は自分の研究を行い、多くの人が同様のことをしていることを発見しましたが、ステアリングホイールに動作したかった方法はありませんでした。それで、私はそれらのいくつかに連絡し、いくつかの洞察を得て、自分のバージョンを構築し始めました。
私の出発点はTarasによるこの投稿で、T300への基本的なハードウェアとソフトウェアの接続ガイドを入手しました。これは私がこの旅に導いた最初の投稿でもありました。 Tarasは、私のすべての技術的な質問に対応してきたので、計り知れない助けでした。
それに続いて、L3&R3ボタンを含むBram Harmsenのプロジェクトで、リバースエンジニアリングされたThrustmaster F1ホイールビットとバイトを見つけました。すべてのアクションを複製するために必要なすべての情報を使用すると、私はそれをすべてまとめ始めました。
このコードについてはあまり詳しく説明しませんが、リポジトリで表示できます。できるだけ多くのコメントを追加しました。
? Arduinoスケッチファイルを表示します
ホイールは、市場の他のホイールと非常によく似ています。すべてのPlayStation DualShock 4コントローラーボタンをエミュレートします。主な違いは、ボタンマトリックス、表示メニュー、ロータリーエンコーダー、ロータリースイッチ(キャブ機能)です。
NanoでGPIOを保存するという名前で、デザインに必要な22のボタンをサポートする5x5ボタンマトリックスを作成しました(はい、3つの余裕があります!)。
?§ここにボタンマトリックスがあります。
ディスプレイが欲しかった理由はいくつかありました。まず、コンピューターに接続する必要なく、ホイール設定を変更する方法が必要でした。第二に、現実世界の時間と日付を表示するための時計があるといいと思いました。第三に、ディスプレイは将来の更新でテレメトリを表示するために使用できます...(ただし、まだ計画されていません)。そして最後に、それはただクールに見えます。
ディスプレイは、3つのディスプレイボタンによって制御されます。
メニュー:ホイールメニューを開閉します
次:メニューをスクロールします
選択:オプションを選択します
メニューオプションの表示:
ホイールモード:プレイしているプラットフォームに応じて、ホイールのモードを設定します。
PS -PlayStation(PS)モード
PC -Advanced(PC)モード
Disp。モード:ディスプレイキープレスがオンになっているときにディスプレイのモードを設定します。ボタンを押すたびに、その機能が表示されます。
PS-任意のボタンを押すと、PlayStationボタン機能(Cross、Triangle、L2、R2、...など)が表示されます
GT-任意のボタンを押すと、私の個人的な好みに応じてシミュレータボタンマッピングが表示されます(ピットリミッター、HUD、ワイパーなど)
キープレス:ディスプレイにボタンキープレスを表示します
日付/時刻:ホーム画面に日付と時刻を表示または非表示
ブザー- ブザーをオンまたはオフにします
Hour Chirp-はい、Simuatorで過ごす時間を追跡するために1時間ごとにビープ音を鳴らすこともできます
ディスプレイオフ- ディスプレイをオフにします(任意のディスプレイボタンが再びAで戻ります)
ランタイム- ステアリングホイールが起動してからの時間を表示してください。
ロータリーエンコーダーは、運転中のブレーキバランス、 ABS 、トラクション制御の調整に迅速にアクセスできます。ロータリーエンコーダーは、画面メニューなどで気を散らす必要なく、設定をすばやく微調整できるため、クールです。
ロータリーエンコーダーは次のようにマッピングされています。
説明 | 左腐敗。 ( - ) | 右腐敗。 (+) |
---|---|---|
ブレーキバランス(BB) | d-padダウン | d-pad up |
アンチロックブレーキシステム(ABS) | L3 | R3 |
トラクションコントロール(TC) | d-pad左 | d-pad右 |
説明 | 左腐敗。 ( - ) | 右腐敗。 (+) |
---|---|---|
ブレーキバランス(BB) | 下 | 上 |
アンチロックブレーキシステム(ABS) | 20 | 21 |
トラクションコントロール(TC) | 左 | 右 |
?これは、両方のプラットフォームにAssetto Corsa Comperizioneで適用したコントロールバインディングのマップです。
これは、 Nico Rosbergが運転を最適化するために1ラップでブレーキバランスをフロントからリアに複数回シフトし、何度も戻す必要があるかを説明しているビデオを見ながら考えたことです。もちろん、ロータリーエンコーダーを使用することはできますが、特にホイールを蹴る力のフィードバックでは、正確にすることはできません。
アイデアは、好みに応じて、複雑なクリックを複製できるセットボタンを作成することです。ロータリースイッチを使用すると、パラメーターをすばやく設定できます。
CABモード:複製する関数を選択します(BB、ABS、TC)
キャブの手順:ボタンを押したい回数(1x-8x)を選択します
CAB-/+: CAB-/+ボタンを選択すると、選択した設定で実行されます
カスタムボードが必要なので、できるだけコンパクトにしたかったのです。また、将来的に失敗した場合に備えて、物事が取り外し可能で交換可能であることを望んでいました。私の意図は、カスタム印刷されたPCBを作成することでしたが、現時点では実際には意味がありませんでした(おそらくアップデートにありますか?)。最終的なボードは5x7cmのパフォーマンスで構成されており、ソリッドコアワイヤを使用して接続を行いました。
私の最初の試み(V1)は完全に機能しましたが、それは私が望むほどコンパクトではありませんでした。実際、それはステアリングエンクロージャーにまったく適合しませんでした。トラックを再設計し、角度の付いたデュポン男性コネクタを使用して2番目のバージョン(V2)を再構築し、高さが限られているために多くのスペースを節約しました。
?最終的な図のレイアウトとボードをご覧ください。
図が表示されているようにすべてが配線され、接続されている場合は、おそらくすべてがステアリングホイールを使用するように設定されています。
Arduinoスケッチをコンパイルするには、これらのライブラリをインストールする必要があります。
eeprom.h-設定を保存するためのEepromライブラリ
LiquidCrystal_i2c.h-液晶ディスプレイI 2 Cライブラリ
i2cencoderminilib.h-ローテリーエンコーダーI 2 Cライブラリ
Timelib.H-タイムライブラリ
DS1307RTC.H -DS1307 RTCライブラリ
RTCで現在の時間をセットアップする方法に関する図書館の指示に従ってください。
各ロータリーエンコーダーボードのアドレスを変更する方法に関するライブラリの指示に従ってください。次のように設定します。
BB(ブレーキバランス):0x20
ABS(アンチロックブレーキシステム):0x21
TC(トラクションコントロール):0x22
返される値が供給される電圧に依存していることを考えると、調整が必要なことの1つは回転スイッチ値です。 DEBUG_ROTARY_SWITCHES
true
に設定すると、LCDは両方のスイッチの現在の値を表示します。これらの数字をメモし、 getCABMode()
& getCABSteps()
関数の下のt300_functions
Sketchファイルで更新します。
ビルトインパフォーマンスモニターを追加しました。 DEBUG_LATENCY
true
に設定し、シリアルモニター(115200ボー)を開く必要があります。アップロードすると、現在のループレイテンシに関するリアルタイムレポートが表示されます。
最初のソフトウェアバージョンにはかなりの数の問題があり、遅延が最大です。時々、ボタンのクリックが見逃されます。これは、レース中に、アップシフトまたはダウンシフトでのミスファイアを意味していました。これはいくつかの悪いパフォーマンスを補いました。
テストを実行した後、私は1つのループが約106000msで毎秒最終的なしゃっくりで約2800msで実行されることを発見しました。何かがある種の遅延を生み出しているのは困難でした。最終的に、ロータリーエンコーダーとクロック(RTC)のコードを最適化しました。
ディスプレイは運転体験にあまり追加されないため、ABSロータリースイッチを長時間押して運転中にオフにすることを選択できます。
現在のバージョンはシームレスに動作し、レース中に不燃性に気付いていません。
他の人が以前に行った作業を認めるための小さなスペース。
Taras Ivaniukovich https://rr-m.org/blog/-彼が彼のブログで共有している仕事と彼が途中で提供した助けについて
Bram Harmsen https://www.thingiverse.com/thing:2813599-リバースエンジンの場合、F1ステアリングホイール
MRFID72-アナログロータリースイッチを説明する素晴らしいYouTubeビデオ用
Danny Van den Brande-ボタンマトリックスのセットアップに役立つオンラインで見つけたコードのために
アントニオ・デ・ステファノhttps://3drap.it-素晴らしいステアリングホイールエンクロージャーのために
GNU一般公開ライセンスv3.0以降