BLE通信でドローンをリアルタイム制御するAndroidアプリです。
MIT App Inventor(略MAI : Webベースのビジュアルプログラミング環境)で製作いたしました。
BLE通信で必要なUUIDなどは私のドローンの設定値に固定されているため、このアプリをそのまま使用することはできません。
あくまでMIT App Inventorで作成できる外観やUIの参考になればと思い挙げています。
BLE通信でドローンを制御するAndroidアプリ
動画はアプリバージョン1-00で撮影したものになります。
- 1.BLEでドローンを通信し、制御手法やゲイン定数の切り替え対応を実践する動画
動画リンク1はこちら - 2.簡易製作したジンバル上でオンオフコマンドや操縦コマンドを送る動画
動画リンク2はこちら
- リアルタイム操縦(ロール・ピッチ・ヨー・スロットル)
- BLEバイナリ通信による低遅延制御
- ドローンの2つの制御手法の切り替え対応
- ゲイン定数のデフォルト値とチューニング値の切り替え対応
実際のAPKはこちら
MAI専用のプロジェクト・ソースファイル .aiaファイルはこちら
(ダウンロード後、MIT App InventorのURLを開き、「Create Apps!」をクリックし、そこでインポートすることで開けます。)
MIT App InventorのURL
- MIT App Inventor(MAI)
- Bluetooth Low Energy
- PID制御
私が趣味で自作したドローンのコントローラが欲しかったため、アプリを製作しました。
ドローンは「ESP32-MINI-1」というBLE,Bluetooth Classic,Wifi通信に対応しているマイコンを搭載しています。
ブラウザ上で使えるアプリケーション開発ツールです。GUIでのUIデザインとブロックプログラミングによるロジック実装ができます。
グーグルアカウントさえあれば使えます。
以下に他のBLE通信を制御する有名なアプリ開発ツールとの比較を示します。
- RemoteXY(良い点):UIのデザイン能力で優っていると思います。特にジョイスティック風のUIなどCANVAS機能を使ってカスタムインターフェースを実装できる点が強みです。
- Blynk(良い点):あちらは有料ですが、MAIは無料です。また、BlynkでのBLE通信には外部のクラウドサーバを一旦経由する必要があるため、インターネット環境が必須で遅延があります。MAIはローカル直通信が可能で低レイヤ制御ができます。遅延が少なく、バイト列やCSVなど通信プロトコル設計の自由度も高いです。
- Flutter(悪い点):ブロックプログラミングのみのため、用意されたブロック内でできることしか実装できません。floatをBytesに変換するなどができませんでした。UIも設計できる機能自体は豊富だと思いますが、配置の自由度が低めです。初心者でも使いやすい分、本格的なUIフレームワークには劣ります。
- 単ループ角度制御⇔カスケード制御 や デフォルト⇔チューニング値 をワンクリックで切り替えられるようにしました。
- Screenの切り替えでは変数や通信状態がリセットされる可能性があるため,各UIの入物の可視、不可視を設定することでモードの切り替えを実装しました。
- CSV通信ではなく、バイト列通信を用いることで低遅延でシンプルな通信プロトコルにしました。
- 具体的にはバイト列の1番目の要素をこれから送る指令コマンドの中身を知らせるアルファベットとし(オンオフコマンドなら'S'、デフォルトチューンの切り替えコマンドなら'D'、操縦コマンドなら'C'など)、2要素目以降に指令の中身を数値として送信させています。
- PowerPointで製作した円形の図形をCANVAS機能で取り込み、ジョイスティック風のUIに見立ててデザインしました。