久しぶりの更新になります。昨年後半、仕事に忙殺され、ブログもarduinoもmsfs2020もご無沙汰になっておりました。半年の間にmsfs2020は度々アップデートが行われ、益々進化している模様。沢山の人が動画をアップしているし、シーナリー・機体の数も増えている。そして、シミュレータを使い易くするツールも多々公開されているようです。
昨年、simconnect+python+arduinoでフライトパネルを作る記事を掲載しましたが、そのような環境も良くなってきたようです。今回から暫くの間、フライトパネル作成ツール「mobiflight」を取り上げてみたいと思います。
mobiflight
mobiflightはsimconnect+arduino+デバイスで、フライトパネル作成の支援をするツールです。しかも、arduinoのスケッチや、pc側のプログラムを書かずとも実現できる優れもの。さらに無償利用可能であるところも大きなメリットです(開発サポートの為、寄付は募っていらっしゃいます)。
ただ、ツール利用にあたり難儀なのは日本語での解説が少ない事。頼りになるのは、mobiflightサイトのチュートリアルと、日本人有志の方々のブログくらい。やりたいことを実現しようとすると、最初はハードルが高い。そこで、現時点で実現できたことを纏めてみようと思います。
動作環境(ソフトウエア)
mobiflightを動作させるには、mobiflight本体以外に、msfs2020のSDK及びarduino環境が必要になります。それぞれ、下記URLより環境構築が可能です。
動作環境(arduino Module)
ハードウエアとしては、arduino + デバイス。サポートしているarduino Moduleは下記の通り。
- arduino Mega
- arduino Mega Pro Mini
- arduino Pro Micro
残念ながら、エントリー機であるUNOは「not stable at the moment, if you experience problems」とのことで、安定していないようです。試してみましたが、私の環境では動作しませんでした。
mobiflightサイトのチュートリアルをms2020で試す
mobiflightのサイトにはtutorialsとして、「LED-Parking Brake」「Switch – Parking brake」「7 Segment Display – Com1 frequency」「Servo motor – Build a flaps gauge」が紹介されていますが、古いバージョンのmobiflightでのtutorialになってるようで、画面構成・設定内容が最新のものと異なります。また、現行バージョンのmobiflightではmsfs2020に特化した設定項目もあるので、そちらで試した内容を纏めてみたいと思います(「7 Segment Display – Com1 frequency」「Servo motor – Build a flaps gauge」は次回)。
LED – Parking Brake と Switch – Parking brake
Parking brakeのon/offをプッシュボタンに設定し、その状態をLEDで表示させるtutorialです。シンプルですが、プッシュボタンやLEDによる状態表示はフライトシミュレータでは多用するテクニックなので、非常に有益だと思います。
プッシュボタンは6番ピンに接続、LEDは抵抗(330Ω程)を介して21番ピンに接続しました。
arduino ModuleとPCを接続した後にmobiflight (MoviFlight Connector) を起動します。mobiflightが正常に起動され、arduinoとも連携されるとメインウィンド左下の「Modules:」の横にチェックマークが入ります(その隣の「Sim Status:」はmsfs2020未起動の場合は!マーク、msfs2020起動済みでsimconnectと連携できていればチェックマークに変化します)。
mobifilghtでの作業は、下記の通り。
- デバイス(プッシュボタンやLED等)の設定
- プッシュボタンに機能をMapping(Inputs)
- LEDに機能をMapping(Outputs)
1.デバイスの設定
先ずはプッシュボタン。
- メイン画面のメニューバー→Extras→Settings
- MobiFlight Modulesタブを選び接続しているarduinoModuleを選択
- Add device→Button
- Pin settingsに6、Nameに名称(今回はButton1)を設定
LEDに関しても設定の流れは同じ。
- Add device→LED/Output
- Pinsettingsに21、Nameに名称(今回はled_mode)を設定
デバイスの設定が終わったらarduino Moduleにアップロード。
- ダイアログの左下にあるアップロードボタンをクリック
- 「OK」をクリックしてメイン画面に戻る
2.プッシュボタンに機能をMapping(Switch – Parking brake)
- メイン画面のInputsタブを選択
- 「Double-click row to add new config…」をクリックして適当な名前を設定(今回はPark Break Toggle)。
- 右端のEditの「…」をクリックしてInputCofigWizardダイアログを表示
- Inputタブを選択
- Choose inputのModule名を設定
- Device名の設定(今回はButton1)
- Input settingsのOn Pressタブを選択
- Action TypeにMSFS2020 – Eventsを設定
- GroupにMicrosoft/Generic/Controlsを設定
- EventにPARKING_BRAKES_TOGGLEを設定
- 最後にOKを選んでダイアログを終了
- メイン画面でParkBreak ToggleのActiveにチェックマークを入れる
3.LEDに機能をMapping(LED – Parking Brake)
- メイン画面のOutputsタブを選択
- 「Double-click row to add new config…」をクリックして適当な名前を設定(今回はParkbremse)
- 右端のEditの「…」をクリックして→CofigWizardダイアログを表示
- Sim Variableタブを選択
- Select Variable TypeにSimConnect(MSFS2020)を設定
- MSFS2020(WASM)のGroupにMicrosoft/Generic/Controlsを設定
- PresetにBREAK PARKING INDICATORを設定
- Variableに(A:BREAK PARKING INDICATOR,Bool)を設定
- Displayタブを選択
- Display typeのModule名を設定
- Use type of にPinを設定
- Display settingsのSelect Pinsにled_modeを設定
- 最後にOKを選んでダイアログを終了
- メイン画面でParkbremseのActiveにチェックマークを入れる
4.msfs2020との連携
- msfs2020を起動
- メイン画面の左上「run」をクリック
mobiflightとmsfs2020の連携が正常に行われれば、プッシュボタンを押す度にパーキングブレーキの設定/解除が行われ、合わせてLEDがON/OFFするはずです(私の環境では、cessna172で動作を確認しました)。
今回のようにarduinoのon/off情報をmsfs2020の「MSFS2020 – Events」に反映したり、逆にmsfs2020のプリセット情報をarduinoに反映するレベルであれば、容易に実現することができるはずです。悩むところがあるとすると、msfs2020が持つ膨大な情報のどれを使えば良いのか、を調べるところにあるのかもしれません(今回の例であれば、PARKING_BRAKES_TOGGLEだとか、BREAK PARKING INDICATOR等)。とは言え、arduinoのスケッチやpc側のプログラムを開発する事に比べれば、開発効率は雲泥の差です。フライトパネル開発の効率が格段に向上することは間違いないと思います。
個人的には「arduinoシールド基板を使ってコンパクトなスロットルユニットを作ってみた」で作成したフライトパネル相当のものは実現できました。ただ、今回ご紹介した設定だけでは実現出来なかった部分もありましたので、次回以降で解説したいと思います。