人力飛行機(ダイダロス機)の試験飛行において、機体から送られたデータをPC/Macリアルタイムにグラフ表示する。
- MacやWindowsの標準のBluetooth(BLE)で無線で受信が可能
- PC/MacではBLEを使わず、XIAO ESP32C3(RELAY端末)をPC/MacにUSBポートに繋ぐことも可能
受信したBLEデータ又はUSB-COMで受信したデータはCSV保存され、matplotlib(plotter.py)を使って可視化される。
- pip install adafruit-circuitpython-ble
- pip install colorama
- pip install matplotlib
- pip install --upgrade bleak
-
ble.py
- BLE(Nordic UART)を受信する。BLE受信は、UART [NUS (Nordic UART Service) ] を通して行われる。
- BLEの受信能力は端末に依存する。Macbook airで検証したところ、RELAYからの電波の受信可能距離は10m程度までは実験済み。
- 2つ同時のBLE受信を試みる。片方のみでも動作する。これは機体からの直接信号およびリレーからの信号の2台同時受信を想定している。
- plotter.pyが自動実行される。
- 受信したデータは、ファイル記録を行う。現在のディレクトリにCSVフォルダを生成する。生データは下記ファイルに保存される。
RAWDATAPATH = "./csv/raw.csv" RAWDATAPATH_RELAY = "./csv/raw_relay.csv" - 受信したBLEデータのうちカンマ区切りで正しく認識できたデータのみ、機体・リレーそれぞれ分けて日時のファイル名をつけてCSV保存される。保存時には現在時刻(msまで)がデータ先頭に追加され保存される。
- 日付付きのCSVファイル名は、setting_plotter.txt に保存され、plotter.pyで利用される。
-
usbcom_logger.py
- BLEを介さず、USBから繋がっているCOMポートを開きCSVファイルに保存する。(RELAYのXIAOを直接USBポートを繋いだ想定だが、COMポートならなんでもOK)
- 受信したデータは、ファイル記録を行う。現在のディレクトリにCSVフォルダを生成する。生データは下記ファイルに保存される。
RAWDATAPATH = "./csv/raw.csv" - plotter.pyが自動実行されないので、可視化する時には手動で起動する。
- COM経由で受信したデータのうちカンマ区切りで正しく認識できたデータのみ、日時のファイル名をつけてCSV保存される。保存時には現在時刻(msまで)がデータ先頭に追加され保存される。
-
plotter.py
-
createmovie.py
- CSVから動画(mp4)を後から生成できる。スクリーンキャプチャーやOBSソフト等によってリアルタイムで録画できなかった場合でも、CSVからいつでも動画が作れる。
- 用途としては、機体搭載のSDカードに保存された各種データを可視化するためのもの。CSVから動画生成には現状対応していない。
- ffmpegのインストールが必要。
- フリーズしたりデータが途切れたりCSVファイルを新たにしたい場合は、python ble.pyをまた実行すればよい。
- ble.py の下記定数を変えることで、BLEの名前を任意に変更できる。
NAME_OLED = "ALBA TAIYO OLED v2" NAME_RELAY = "BLE RELAY" - BLE送信機には、ESP32C3 XIAOを2つ使用した。 送信機のArduinoプログラム
- serial_send_data.py や、sim_writecsv.py は開発用途なので普段は使用しない。
- 試験飛行における画面の録画は複数画面を録画できる OBS Studio を推奨。EOS Webcam Utilityと組み合わせることで、フライト映像と合成録画が可能。
- 要改善:毎ループ csv open して全データ読み込みしてしまっている。今の所、処理速度に影響ないので放置中。

