Skip to content

Haruki-Ayukawa/Example_MITAppInventor_for_DroneController

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Example_MITAppInventor_for_DroneController

BLE通信でドローンをリアルタイム制御するAndroidアプリです。
MIT App Inventor(略MAI : Webベースのビジュアルプログラミング環境)で製作いたしました。
BLE通信で必要なUUIDなどは私のドローンの設定値に固定されているため、このアプリをそのまま使用することはできません。
あくまでMIT App Inventorで作成できる外観やUIの参考になればと思い挙げています。

概要

BLE通信でドローンを制御するAndroidアプリ

デモ動画

動画はアプリバージョン1-00で撮影したものになります。

機能

  • リアルタイム操縦(ロール・ピッチ・ヨー・スロットル)
  • 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通信に対応しているマイコンを搭載しています。

What is MIT App Inventor ?

ブラウザ上で使えるアプリケーション開発ツールです。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に見立ててデザインしました。

About

BLE通信でドローンをリアルタイム制御するAndroidアプリです。MIT App Inventorで製作いたしました。BLE通信で必要なUUIDなどは私のドローンの設定値に固定されているため、このアプリをそのまま使用することはできません。MIT App Inventorでできる外観やUIの参考になればと思い、挙げています。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors