Arduino Leonardoと3Dプリンターで作るMS Flight Simulator用カスタムスロットルクアドラント&トリムホイール
はじめに
PCをアップグレードしてMicrosoft Flight Simulator 2020が動くようになったことをきっかけに、フライト操作の没入感を高めるため自作コントローラーの製作に取り組みました。キーボード操作では飛行の感覚が得られず、本格的なコックピットや市販のコントローラーを揃えるスペース・予算もないため、3DプリンターとArduinoを活用したコンパクトな自作デバイスを目指しました。
設計のポイント
単発小型機を主に飛ばす想定で、スロットル・フラップ・着陸装置用のレバーとエレベータートリムホイールをセットにしました。特にトリムホイールは実機の操作感をイメージしながら試行錯誤し、複数のスケッチを経て最終形にたどり着きました。各モジュールは分解・収納しやすい構造とし、Arduino Leonardo(またはMicro)1台で最大6軸まで対応可能です。
必要な部品と工具
電子部品
- Arduino Leonardo(またはMicro)×1
- ロータリーポテンショメーター 50kΩ ×1(モジュールごと)
- リード線 ×3(モジュールごと)
3Dプリントパーツ(レバーモジュール1セット)
- ボディ左・右 各1
- レバー(デテント数2〜6の5種類から選択) ×1
- レバー端部 ×1
- ノブ(6種類) ×1
- フリクションプレート(3種類) ×1
- ポテンショメーターホルダー ×1
3Dプリントパーツ(トリムホイールモジュール1セット)
- ボディ左・右 各1
- ギア、ハブ、ホイール(一体成型版・組立版の選択可) 各1
- ノジュール(組立版の場合8個)
- クアドラント、クアドラントドライブ 各1
- ポテンショメーターホルダー ×1
工具
- はんだごて
- 3Dプリンター(ABSフィラメント推奨)
製作の流れ
- 全パーツをABSで3Dプリントし、塗装・組み立て
- ポテンショメーターをホルダーに固定し、配線(5V、GND、アナログピン)
- Arduino Leonardoに接続し、ジョイスティックライブラリを用いたスケッチを書き込み
- シリアルモニターで各軸の最小・最大値を取得し、コード内の
axisLimits配列に反映 - PCに接続し、MSFSのコントロール設定で各軸を割り当て
ソースコードの概要
付属のQuadrant.inoはJoystick.hライブラリを使用し、アナログ入力(A0〜A5)を0〜1023の範囲に正規化してジョイスティック軸として出力します。setting変数を0〜5に設定するとシリアルモニターに生値と変換値が表示され、キャリブレーションが容易です。不要な軸はa0Used等のフラグで無効化可能です。
CADデータと回路図
STEPファイル(released_u3k8QjPXzJ.stp)ですべてのパーツ形状を確認できます。回路図(quadrant_ZkMygPyRiE.fzz)はFritzing形式で提供されており、追加モジュールはA1〜A5ピンに同様に接続可能です。
まとめ
コーディングはジョイスティックライブラリのおかげで非常にシンプルですが、機械的な「フィーリング」を追求する設計・調整が最大のチャレンジでした。自分の手で作ったコントローラーで飛行すると、シミュレーターの没入感が格段に向上します。
製造プロセス
- Arduino UNOで作るLCDアニメーション&ゲーム入門
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- FlightGear用アナログトリムタブホイールをArduino Nanoで自作 ─ Python経由でUDP連携
- Python 3からArduino UNOを制御 – シリアル通信でLED点滅デモ
- Arduino Nanoと128x64 OLEDで実行するセルラーオートマトン「ライフゲーム」
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
- ArduinoとGoogleスプレッドシート連携 リアルタイムRFID勤怠管理システム
- IoT連携:Windows 10 UWPアプリでArduinoをリモート制御
- MKR1000 + DHT22: 温湿度データをAzureへリアルタイム送信
- ホイールバランス調整とホイールアライメント調整の違い|費用・所要時間・効果を比較