前回に引き続きステアリング製作のお話です。
前回はステアリングスイッチの基板選びでした。
最初はボタンのみのステアリングにしようかと思っていたのですが、F1ステアリングの様にLEDインジケーターや液晶ディスプレイを組み込んだステアリングも出来ないかなと模索していました。
導入コストもそんなにかからなさそうだったらチャレンジしてみたいなーとも思っていたので少し調べてみました。
Simhub+ARDUINO
色々調べてたどりついた結果がこちら、Simhubというレースシム対応ソフトを使用すれば、LEDインジケーターを作製できるそうです。
Simhub自体は以前から画面内のオーバーレイダッシュボードを表示させたりするのに使用していましたが、コクピット周りの機器制御に使えるのを初めて知りました。
そして初めて名前を聞くARDUINO。どうも気軽に使いやすいマイコンのようです。
まずはsimhubをインストールします。ダウンロードページはこちら
注意点としてsimhubをフルスペックで動かすにはライセンスを購入する必要があります。(ライセンス導入しなくても動作しますが10FPSでの動作となります。)金額は6ユーロ(約1,000円)からでpaypalでの決済が必要です。
ライセンス購入すると登録したメールアドレスにライセンスコードが送られてくるので、setting画面にライセンスコードを入れれば完了です。
インストールが完了したらsimhubを起動します。対応タイトルは下記の通り、ほとんどのリアル系レースゲームが対応なんじゃないでしょうか。
部品購入
- ARDUINO NANO
ARDUINOは気軽に使えるマイコンですが、いくつか種類あります。今回はステアリングに内蔵したいこともあり、コンパクトなARDUINO NANOを選びました。(この選択が後々間違いに気づきます・・・。(後述))
- LEDモジュール WS2812B
LEDはWS2812BのLEDを使用します。フルカラーに色が変えられるLEDです。
8連タイプのものを2枚繋げて16連に並べて使用します。今回は秋月電子で購入しました。1枚500円×2枚=1,000円。
amazonでも同様のモノが売ってますね。こちらの方はネジ穴もついているので固定はしやすそうです。
waves 2個 WS2812B neopixel PCB 8連 白基盤 シリアルLED アドレッサブル アドレッサブルLED 新品価格 |
- USBケーブル
ARDUINOとPCを接続するUSBケーブルです。ARDUINOの種類によってMini-BやMicro-Bだったり端子が違うので注意が必要です。
BUFFALO USB2.0ケーブル (A to miniB) スリムタイプ ブラック 2m BSUAMNSM220BK 新品価格 |
- 配線材料
ARDUINOとLEDを接続するのに3本の配線とはんだ付け作業が必要です。メスのジャンパーワイヤーの片側を加工すると作業が楽かと思います。
ブレッドボード・ジャンパーワイヤー(メス-メス)(20cm)40本 新品価格 |
ソフト設定
ARDUINOが届いたらとりあえずドライバー関係をインストールします。下記のリンクでARDUINO関係のソフトをダウンロードします。(Simhubソフトで書き込みするのでこちらは必要ないかもしれません。)
ソフトのインストールが終わったら、PCとARDUINOを接続します。
本来であればARDUINOのスケッチソフトを使ってプログラムを書き込むのですが、Simhub側に書き込む機能があるのでそちらを使用します。
下記の画面からOpen arduino setup toolを押すと編集画面が開きます。
右側にarduinoの基板のイメージと左側に使用できるモジュールの画像が表示されていて、見た目で分かりやすいソフトになっています。
そして、右側のboardのタブから使用するArduino(チップセット)を選択します。タブを変更すると基板のイラストも自動的に変わります。
今回はWS2812B LEDを使用するのでWS2812B RGB leds countに使用するLEDの数を入力します。8個×2枚なので16を入力します。
数字を入力すると他の設定項目が出てきます。Data(DIN) digital pin numberはARDUINO基板の端子番号です。デフォルトで6番が入っているので6番にLED配線を接続します。(数字は任意に変更できます。)
必要な数値設定を入力したらチェックボックスにチェックを入れ、UPLOAD TO ARDUINOを押すと、ARDUINOにプログラムが書き込まれます。
プログラムを書き込んだら次は配線です。
下記の配線図のように配線します。配線自体は簡単な配線ですが、LED部品はんだ付けが必要なので気をつけて作業します。
配線ができたら動作設定をします。
RGB Ledsのタブを開くとLEDの動作設定画面が開きます。
デフォルトでイエローフラッグや回転数、スピードリミッターなどが入っているので何も触らなくても動作はします。標準で入っているのを参考にしながら設定を変更したり、項目を追加したりできるので自分独自の設定を作ることができます。
動作確認
設定が完了したら動作確認です。動作にはシムソフトとsimhubを同時に立ち上げておく必要があります。(simhubがシムソフトの数値を読みだして制御しています。)
という訳で、Simhub+ARDUINOで無事にLEDを動作させる事が出来ました。
LEDを入れるケースをどうするかという課題はありますが、数千円の費用で実車っぽいLEDインジケーターができあがりました。
基本的な形これで出来上がりです。
ステアリング作成にあたって
そんなLEDインジケーター作成ですが気づいた点がありまして、LEDを使用するだけだとARDUINOの端子を1つしか使わないんです。他の入力端子を余らしておくのももったいないなと思ったので何かできないかなと見ていたら、ボタン入力もできるみたいでした。
という訳で、前回紹介したBU0836Aに加え、ARDUINOでもボタン入力を追加しようと考えました。
GAMEPADをONにして、配線すれば入力できるようになるだろうと思っていたのですが、ここで落とし穴がありました。
ARDUINO NANOからPro Microへ変更
上記はヘルプの文章です。最初から読んでおけば良かったのですが、ゲームパッド機能(ボタン、エンコーダー、ボタンマトリックス)はpro microかleonardoでないと使えないそうです。
詳しいことはわからないですが、HID(Human Interface Device)機能のあるチップセットでないとゲームパッドとして認識されないそうなので、ARDUINO NANOでは入力インターフェイスとしては使えないようです。
という訳でNANOに変わってPro Microを購入しました。
KKHMF 2個 Leonardo Pro Micro ATmega32U4 5V/16MHz ブートローダ マイクロ USB Pro Mini 開発ボード Arduinoに対応 新品価格 |
再度プログラミングして配線。
ステアリングのLEDと真ん中の5個ロータリーエンコーダーはARDUINOを使用しています。
配線図はこんな感じです。
LEDは上記の16個に左右3個づつ追加して22個のLEDを使用しました。
表面実装用の基板なのではんだ付けするのが難しかったですが、なんとか配線できました。
真ん中の16個をレブインジケーターにして左右の3個を補助的に使用するようにしています。
動作状況はこんな感じです。なかなかいい感じに仕上がったと思います。
Simhubを使用する際の注意点は、結構CPUリソースを使うのでシムソフトと一緒に使用する際にCPUがネックになって動作がカクカクになる事があります。対処法としてはシム側のFPS MAXを制限をかけてCPUの処理能力に少しゆとりを持たせるとカクつきを減らすことができます。(上の動画でも後半は動作がカクついています。)
今回はステアリングに内蔵する使い方をしていますが、ステアリングとは別にダッシュボードとして作ってみるのも良いと思います。
また、Simhub+ArduinoはLEDの他にも、アナログのタコメーターやブーストメーター、ファンを制御して速度に合わせて送風したり、バイブレーターを接続して振動を再現したりと色々できるようなので興味があればいろいろ試してみると面白いと思います。