G29のペダルに振動モータを追加

published_with_changes 更新日: event_note 公開日:

labelGaming Gear

G29のペダルに振動モータをつけると、ゲームの場面に合わせてペダルが振動します。エンジン振動とか、ブレーキ振動とか、路面の凹凸とかにあわせて、足裏からブルブル感が伝わってきます。疑似リアル感に、また一層ゲームに没頭してしまいます。


オリジナル情報源と改造に必要なもの

この動画を見たのがきっかけです。DIYのやりかたは動画で完璧に説明してくれています。

ペダルにAmazonなど買った振動モータを取り付けて、SimHubっていうアプリでモータをタイミング良く動かします。

必要なもの

  • モータ:スペックや、つける場所と個数はお好みで
  • モータシールド:モータを駆動するドライバ
  • Arduino:ドライバを制御するマイコン
  • SimHub:汎用のゲームアドオンアプリ
  • 何種類かの配線

ペダルへのモータ取付

フィーリングのよかったモータ

5200rpmという高回転にひかれて、始めは右手写真のこのモータを使ってみたのですが、足裏がムズムズするだけでした。単に、こそばかゆい感覚です。

ゲームコントローラの中に入っているような比較的大きなアンバランスマスが、低回転でブルンブルンと回るタイプのモータの方が「ペダル振動」のイメージに合います。ランブルモータというようです。



取付は、写真のパイプのクランプに使うものがホームセンターに置いてありましたので、これを使います。「サドル」という名称です。

ペダルの裏にボルトを出して、モーターを抱え込んだサドルをナットで止めます。モータのハーネスは誤って切れたりしないようにブラケットに沿わせて中に取り込みました。

内部にもモータを取り付け

エンジン回転の模擬用にと考え、内部の足裏があたるくらいの位置に余っていた5200rpmのモータを取り付けました。これは最悪でした。

ホットボンドでしっかりと固定したのですが、ペダルの筐体を震わせて騒音レベルの音や振動がでる上に、ETS2ではエンジン回転が高まると、うなり音まで出てきます。我慢できなくて、数日後に右下写真のランブルモータへ変更しました。

モータ変更や取り付け方の変更の効果で、うなり音のレベルはぐっと下がりました。が、一度聞いてしまった音は耳が覚えてしまったようです。気にはなります。



モータードライバー

Arduinoの場合はモータシールドといます。Arduinoに重ねて(親ガメ子ガメ)使う機能拡張用のアドオン回路をシールドと呼んでいるみたいです。


右は引用元動画で紹介のあったL293D モーター ドライブ シールドです。Amazon購入です。

DCモーターを4個駆動できます。PWM搬送周波数は490Hzで固定です。

始めはこれを使っていたのですが、搬送周波数が固定なので、うなり音対策にこれを変更することができません。ネットで情報を探すとArduino Motor ShieldとUnoならば搬送周波数の変更ができるようです。買ったものはArduino Motor Shieldではないようです。


Adafruit Motor Shield V2というのがあって、これは搬送周波数を変更できるようなので、互換品らしきものだったのですが購入してみました。価格は5~6倍くらいします。

搬送周波数は~1.9kHzまで設定できます。何段階か搬送周波数を変えて試してみると、その周波数にピークを持つ音が聞こえます。

搬送周波数の設定範囲が~1.9kHzまでの可聴域で、その1次周波数の音が聞こえるので、基本的に消すことはできないことがわかりました。

しかたなく、搬送周波数をできるだけ聞きずらくない100Hzに設定しました。


Arduino Leonardo

手本にしている動画での説明では、Arduino Unoを使っています。私はDIYの各種スイッチをUSB HID化したときに余ったLeonardoを使いたかったので、情報を探したところ、ここに対応策が載っていました。

LeonardoはATmega32U4マイクロコントローラーを使用しています。これは、ATmega328Pを使用するUnoやATmega2560を使用するMegaとは異なります。ATmega32U4のサポートがAdafruitライブラリに追加されたことはないようです。Adafruitはそのライブラリを廃止したため、ATmega32U4のサポートを追加することはありません。ただし、サードパーティがATmega32U4のサポートを追加したライブラリがあります。引用元:Makershed Motorshield_v1 w / Arduino Leonardo


GitHubにあるライブラリの場所やインストール方法の書き込みもあったので、それに従って導入することができました。


SimHubの設定

SimHubはDash Studio (メーターパネルのデータ表示)で以前から使っていました。Simhub ShakeIt Motorsの導入/設定は引用動画が的確です。

Arduino LeonardoとAdafruit Motor Shield V2を使うようにSimHubのライブラリを追加したので、”open Arduino setup tool”にはそれらが表示されています。手順どおりにLeonardoにスケッチの書き込みを行います。


ShakeIt Motors

ShakeIt Motorsを開いて、設置したモータに合わせて好みで各種振動を設定します。


RPMSという項目がありました。エンジン回転の振動だと思います。これで振動の強さを細かく設定することが可能です。通常の使用域はゲインゼロにしておいて、エンジン回転2000rpmに相当する80%からオーバーレブをうなり音と振動で知らせる設定にしました。



モーターシールド実装

Arduino Leonardoの上にAdafruit Motor Shield V2を重ねて、4個のモータをドライブするようにしています。LeonardoはUSBケーブルでPCにつなぎ、Motor Shieldへは5VのDCアダプタから電源供給しています。配線の外れなどが気になるので100均で買ったプラスチックケースに入れて、モニタ机の下に置いています。

シートに振動モータをつけて腰で感じるようにすることもできますが、そこへ手を出すのは押さえておきます。



Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down