↑FlightGearの航空機の速度、高度、方位の変化がOLED上に刻々と示されていきます
OLED画面に速度・高度・方位
前回の当ブログでは、フライトシミュレーターであるFlightGearのデータを引き出して、Ambientへの送信にとりくみました。
FlightGearの飛行中の各計器の示す値をよく見えるようにしたいというのに、Ambientにグラフ表示させていてもしかたがありません。
今回は、とりあえずOLEDに数値表示ができないかを試すことにしました。
■構成
構成は次のようなものです。
FlightGear
↓ UDP
Wi-Fi
↓
Rasopberry Pi Pico W
↓ I2C
OLED
■必要なものと手順
注意事項やPythonの利用が前提という点は、前回同様です。
【ハード】
今回は、小型ののOLEDディスプレイに表示ということなので、機器の用意が必要になります。
・Raspberry Pi Pico W…Wi-Fi機能付きマイクロコントローラー
・OLEDディスプレイ…手持ちの0.96インチ4ピンI2C対応
・他…工作用にブレッドボード、ジャンパー線など
OLEDとPico Wとの配線は次の通り
|
↑一部隠れていますが、ブレッドボードに組まれた回路
【ソフト】
・fgdata.xml
プロトコルを記述したこのxmlファイルについても、前回とまったく同じものを使います。省略しますので、前回を参照こと。このファイルを、FlightGearのデータファルダ内のProtocolサブフォルダに置くのも前回同様です。
・main.py
Pico Wに書き込むMicroPythonプログラム(main.py)は、Wi-Fi接続とUDP受信の設定を記述しています。Pico Wへの書き込みはThonnyが便利です。
|
・起動オプション
FlightGearの起動オプションには、送信先であるPico WのIPを記述します。
実行は、CMD(コマンドプロンプト)にて次の通り入力して行います。なお、path
や飛行機名、空港名、Pico WのIPは例です。
|
ちなみに、Pico WのIPの確認は、Thonnyのシェルにて以下の通り入力し実行すれば、シェルに表示されます。
|
■リアルに変化するOLED画面
結果、OLED画面では流れるように数字が変化していきます。その数字はFlightGear画面のHUDの目盛りから読み取れるものとまさに一致しており正確です。
これはいいですね。もっと見やすく大きくて計器風のディスプレイをならべたら、フライトシミュレーターの実体化ができそうじゃありませんか。
《追記》
FlightGearの/protocolに置いたfgdata.xmlは、FlightGearのpropertyから目的の状態変数を取り出してUDPで送信するために書いたものです。速度と高度、方位を取り上げましたが、実際には速度には対気速度と対地速度、方位には磁方位と真方位の違いがあり、これはFlightGearでも同じ。今回fgdata.xmlには、試行錯誤の都合でgroundspeed-kt(対地速度)とtrue-heading-deg(真方位)を記述しました。気になる方は、当該箇所のそれぞれ2か所をairspeed-ktやheading-degに書き改めてください。

