フライトシム向けではないのですが、
Arduinoという汎用電子インターフェースを使ってみます
SISMOの
SimCard や、OpenCockpitの
MasterCard 等いくつか所有していますが
これらはLEDやサーボ、ディスプレイ等目的に合った拡張ボードを接続してコントロールする仕組みなのに対し
Arduino は、様々な電子部品を単体でコントロールできるよう設計されたデバイスで
LEDやスイッチ、アナログ、モーター、LCD、ディスプレイ等プログラム次第で大抵のものは動かせます
公式製品以外に多数のメーカーから互換製品が販売されていて、大きさも小型の物から入出力の多いものまで多数種類があり
近年、Raspberry Pi等のワンボードマイコンブームなこともあってか、今はどこでも普通に買えるようになりました
価格も 1,000円~6,000円程度で結構お手軽で、2年ほど前に Arduino UNO R3 を購入したのですが
これだけで何でも出来てしまうので、結構面白くてIoTっぽくセンサーや制御デバイス等活用していました
そこで、Arduinoをコックピット作りに使えないかと思って調べてみると、いくつかのプロジェクトが見つかりました
さすがに Arduino単体では入出力端子の数が少ないので、これだけで全てのスイッチ類をコントロールすることは出来ませんが
汎用のIC等を使ってポートを増やせば、自由度は広がりそうです
(実は、今回製作している ElectricPanelもArduinoで動かすのを前提で作っていました)
そして、今回はX-Plane11と Arduinoを繋ぐために
ArdSimX というプラグインを使用します
ArdSimXは、P3D(FSX)で言うところの FSUIPC+SIOC のようなイメージですね
SIOCは、OpenCockpitのメインボードや専用のインターフェースをコントロールできますが
ArdSimXは、Arduino という汎用ワンボードマイコンを利用して、各種デバイスをコントロールすることができます

画像:ArdSimX
ArdSimXは、X-Plane11上で動かすプラグインと、Arduinoに書き込むプログラムの2つを組み合わせて
任意に連動させたいデータを指定して動かします
X-Plane11(ArdSimX Plugin) <==> Arduino
他のプログラム等は一切起動する必要はないので、シンプルな構成になりますね
ちなみに ArdSimXは、現在
SimVimCockpitという新しいプロジェクトへ移行中です

画像:SimVimCockpit
ArdSimXが、基本的に複数の Arduinoを使って機器をコントロールする考え方なのに対して
SimVimCockpitは、できるだけ少ないArduinoで、大量の機器をコントロールしていこうという方向性で
作られているようなので、こちらがリリースされればかなり面白い使い方ができるんじゃないかと思います
また、こちらは有料ですが
AirManagerというツールもあるようです
あまり詳しく調べていませんが、Arduinoを動かすだけでなく Rasberry-Piや、独自の計器パネルのUIを表示できるなど
どちらかというと Prosim737に近いパッケージじゃないかと思います
ちなみに、P3D(FSX)でも数年前から
MobiFlight というプロジェクトが立ち上がっていて
このツールを利用すれば、同じようなことができます
こちらは FSUIPCが間に入るので、SIOCと同じような構成になります
P3D(FSUIPC) <==> MFConnecter <==> Arduino
(X-Planeでも MobiFlightを使えるらしいのですが、今のところ未調査です)
また、今は開発されていないようですが
Link2FS や、直接PMDG737NGXと連動するように作られた
CockpitX というツールも FSUIPCを経由して Arduinoをコントロールすることができます
さて、ということで今回は ArdSimXを使って X-Plane11の アナウンシェーターと
LEDをリンクするところまでやってみようと思います
ArdSimX ダウンロード
公式サイト のサイトの右側のダウンロードリンクから「ArdSimX X-Plane Plugin」と
「ArdSimX Library」(Arduino用のライブラリ)をダウンロードします
Arduinのセットアップ
Arduino IDEを起動して、メニューの「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で
ダウンロードした "ArdSimX_Library.zip" ファイルを読み込みます
Arduinのスケッチ
Arduino IDEで、以下のプログラムを書きます
#include <ArdSimX.h>
void setup() {
BoardNumber 1;
}
void loop() {
ArdSimScan;
}
void ProgOut(byte id, float val) {
}
|
基本的なI/O制御はライブラリで処理されるので、非常にシンプルです

をクリックしてコンパイルして、問題なければ

をクリックして Ardinoに書き込みます
これで、Arduino の準備は完了です
ArdSimXプラグインの準備
ダウンロードした ArdSimXのプラグインファイル "ArdSimX_Plugin.zip" を展開して、できた "ArdSimX" フォルダを
X-Plane11のインストールフォルダ
\X-Plane 11\Resources\plugins にコピーします
ArdSimX のコンフィグレーション
ArdSimXのコンフィグは、基本的には 公式WEBサイトの
コンフィグレーションで作成するようになっています
(公式サイトに
設定ガイド があります)
最初に Arduinoのタイプ、USB接続かLAN接続かを選択し
次に、使用する Arduinoの基板のI/Oピンをクリックして目的のデバイスを選択します(ここでは 13番ピンを選択)
次に、使用したいモジュールの種類を選択(ここでは DIGITAL OUTPUTを選択)すると、出力データの選択欄が出てくるので
その中から、シュミレーターから出力したいデータデータを選択します
左のリストから「Seatbelt Sign On」を選択して「Write」ボタンを押すと、Arduinoのピンに出力が割り当てられます
割り当てが完了したら、「SAVE」ボタンを押してコンフィグファイルを保存します
PCに「data.cfg」というファイルが保存されるので、このファイルを先ほどの ArdSimXのプラグインフォルダの下に移動します
\X-Plane 11\Resources\plugins\ArdSimX
ここまでできたらほぼ準備完了です
LEDの接続
上で設定した Arduinoの13番ピンに、LEDのアノード(足の長いほう)を接続して
その隣の GNDにLEDのカソード(足の短いほう)を接続します
(LED保護のために、ブレッドボード等で保護抵抗を間に入れてください)
X-PlaneとArduinoの接続
ArduinoとPCを接続して X-Plane11を起動し、B737を呼び出します
メニューの「Plugins」→「ArdSimX」→「Status」をクリックして ArdSimXのステータス画面を開きます
Connection status のリストに「1 USB Arduino #1, 1 outputs」と表示されていれば
ArdSimXプラグインが Arduinoと接続されていることを表しています
おそらくX-Plane11を起動したての状態では、Arduinoと正しく接続できていないと思うので
「Enable USB」のチェックボックスをクリックしてチェックを外し、接続を解除してから
もう一度チェックボックスをクリックして接続してみてください
改めて、Connection status のリストに「1 USB Arduino #1, 1 outputs」が出てくれば接続成功です
この表示が出てこない場合、以下の項目をチェックしてみてください
・ArduinoがPCに接続できていない
・Arduinoにプログラムが正しく書き込まれていない
・Arduinoの状態がおかしい
Arduino本体のリセットボタンで、正常に戻る場合があるので、「Enable USB」のチェックを外し
リセットボタンを押してから、再び「Enable USB」にチェックしてみてください
動作確認
737のオーバヘッドの「FASTEN BELTS」スイッチを ONにして
Arduinoに接続した LEDが点灯すれば成功です!
スイッチ等の入力デバイスも、これと同じように割り当てるだけなので
そのままでも ArduinoのI/Oポートの数分は入出力をコントロールできると思います
また、公式サイトのコンフィグでは設定できない項目もあるので
慣れてくれば直接「data.cfg」ファイルを編集して書き換えたほうが早いかもしれません
そのあたりも今度やってみようと思います