ArduinoによるFSX/Prepar3D連携

arduino01

Arduinoとは

読み方はアルドゥイーノだ。C言語に似たArduino言語とIDE似たものを用いて、コントロール、ファームウェアの書き込みが行えるハードウェアだ。
大凡2000~3000円購入でき、USBケーブルとボードさえあればLEDの点灯レベルまでは行うことができる。
マイコンの教育用にも適しており、勉強会等でも使われている。

 

こんな人に便利

専門のハードウェア設計者ではなく手段として利用する場合には、我々シミュレータ利用者には使いやすく有益なハードウェアだ。
特に自前でコックピットを作成する場合等は、そうだろう。
例えば「B737NGやエアバスのオーバーヘッドパネルをパチパチ、ポチポチしたい」とする。

そして調べると・・・・「ケース無しで約70万円もするの!?」となる。

「エアバスのコールド&ダークのIRS3つ、APU2つ、エンジンスイッチ2つ、ブリードの回転スイッチ、バッテリ、外部電源のボタンを押したいだけなのに。」
「2万円以下で、デザインはどうでも良いから何とかならない?」という時に最適なのがArduinoとなる。

 

便利なソフトウェア

LINK2FS_Multi_FSXというソフトウェアが有志によって配布されている。
これがあればWindows及びFSX/Prepar3Dは、GUIのみで設定が可能だ。arduino02

まずは動作させたところから

基本的な設定を行い、サンプルプログラムを動かしたのがこちらだ。
FSX標準のノーズギアのステータスに連動して、13番の信号がオンオフする。
緑色のLEDが手元になかったため、少し違和感があるかもしれないが正しく動いている。

 

“BARE-BONES” STARTER PACK

先ほどのサンプルプログラムだ。細かく書かれているように見えるが、ほとんどが説明のコメントだ。
実際のプログラムはほとんどない。

arduino08

中身は基本的なプログラムそのもので、シリアル端子から送られてきた文字列が”100″であればArduinoの13番ピンをオン(電圧5V/3.3V)、そうでなければオフ(0V)にするようになっている。ただのそれだけのプログラムだ。

arduino11

Arduinoの初期化フェーズを含めて、実質10行程度でこのような連携ができる。
似たようなノーズ以外のランディングギアを連動させる場合は手間をかけずに追加で僅かなコードを書いてArduinoに書き込めば連携が可能だ。

 

動くもの・動かないもの

本ソフトソフトウェアではFSX標準に対応している機体の基本機能場合は、GUIのみで設定ができてしまう。
サイテックのPro Flight Radio Panelに似たようなものも実装が可能だ。

FSX/Prepar3Dからの出力以外にハードウェアからの入力にも対応しているため、「Master Warn」のボタンやエアバスのオーバーヘッドパネルで使われるような“Dual Chamber Push Button”にロータリースイッチにも対応ができる。

ただし同じ「ギア」や「エンジン」のステータスであっても、機体アドオンメーカーによっては独自の値が管理している場合がある。
その場合は、この基本版のソフトではリンクさせることができない。

 

LINK2FS_Multi_FSX  (Expert Version)

Expert Versionは各社のSDKの変数表を参照し、Arduinoに送り込む文字列を決めることができるソフトウェアだ。
基本版と変わらないが、Expertsタブを見るとこの設定ができるのが分かる。
SimConnectでの値の確認方法は、FSUIPCの記事を参照いただきたい。

arduino10

勉強方法等

Arduinoと開発環境のセットアップについては、別のサイトや本を参照いただきたい。
ちなみに筆者は以前「Arduinoをはじめよう (Make:PROJECTS)」で勉強した。
現在は、多くの本やWebサイトで紹介されているのでそれを利用するのもありかもしれない。

ハードウェアは、Arduino Uno R3を利用した。電子工作等を普段やっていない人はブレッドボード等がセットになったもので勉強してみるのも良いだろう。

 

Arduino環境セ設定後のFSX側の準備

Arduinoのセット時に確認をしていると思うが、COM番号が重要だ。

arduino03

これを調べたうえで、1枚目のArduinoカードの接続ポート番号を設定する。
また、本ソフトウェア起動時に自動的につながるように左側のチェックボックスに入れる。
そしてConnectボタンを押す。

arduino04

 

接続されると緑色の表記となる。後は起動時の設定ファイルとして保存するため右側のぼっくちにチェックを入れて、Saveボタンを押すだけだ。

arduino05

次に入出力するデータの割り当てだ。
インディケータとしてGear noseを選択しした状態だ。

arduino21

モニタータブを見るとデバッグが可能だ、FSX/Prepar3Dを起動している状態であれば、機体のギアの状態を見て先ほど設定したA 100という値がArduinoに送られ続けるのが確認できる。

arduino09

ちょっとしたコツ

FSXやPrepar3Dのexe.xmlにこのソフトを手動で登録しておくと、自動起動が可能だ。
また設定直後にうまく動作しない場合は本ソフトウェアを一旦再起動してみよう。

 

おまけ

圧電ブザーHDB06LFPNという圧電ブザーのテストです。
PWMで音量を変更しています。動作確認用にLEDと並列接続です。

 

本記事を書くにあたって

本記事を書くにあたっては、影響を与えた方が2名います。
1人目は、こたろうさん! コックピットビルダーな方です。ハードウェア制作までいろいろとされています。2013年にお会いした際に影響を受けました。
2人目は、クレウスさん! 2014年年末にフライトシミュレータのオフ会でお会いしたのがきっかけです。Arduinoに限らず電子系全般に強いです。

ハードウェア
2 comments to “ArduinoによるFSX/Prepar3D連携”
  1. うーん、すごいです!
    ここまで、詳しく書いていただけるとは。
    本当にありがとうございます。
    私には難しくて、一度では理解出来ませんが、読み込んでみます。

  2. こたろうさんどうもです!

    昨日、桜木町のJFlightでFDSのA320オーバーヘッドパネルの裏側を
    見せていただく機会があり、今回はそれも刺激の一つでした。
    基本プッシュ式スイッチとトグルなので、かなり綺麗でした。
    さて、これから先実際にハード作るかは微妙ですw

コメントは停止中です。