2021年9月26日日曜日

ArduPilotのテレメトリにTWELITEを使ってみた。

 この前最近話題のドンキーカーをみて久しぶりにBeagleBoneを引っ張り出してきてArduPilotをインストールしてみたんだけど、WiFiのテレメトリでは距離が心もとないというか一旦切れると再接続がなかなかされなくてちょっと…カメラも付けたかったんだけどな…

テレメトリで悩むのは結局技適対応しているのがXbeeとTWELITEぐらいしかなさそうなところ。Ardupilot用に技適対応テレメトリモジュールも出ているようだけど中身Xbeeとかなんじゃないかなとか思ったり(スペック的に)。Xbeeだとプログラマブルモジュールは安く手に入りそうなんだけど、テレメトリ用途だとめっちゃ扱いにくそうだし、ノーマルタイプはちょっとお高い…

ということでTWELITE(トワイライト)を試してみることに。最近TWELITE UARTっていうUART接続に特化したボードが出たっぽい。2mWのBLUEだと地上だと飛びにくいということで10mWのTWELITE RED UARTにしてみた。

ArduPilot Pixhawk/PX4 Telemetry
アンテナ外付けタイプと内蔵タイプがあったんだけど、アンテナ外付けのほうが電波よく飛ぶかなとかいう安易な考えでアンテナ外付けタイプにしてみた。全部モノワイヤレスの純正品じゃないと技適がどうのこうのということで全部秋月で売っている純正品。
ArduPilot Telemetry
組み立てるとこんな感じ。かなりコンパクト。アンテナは防水タイプもあったんだけど高いので室内用。野外で使うときはビニール被せるか樹脂のケース内に突っ込めばいいかなとか思ったので。

TWELITE UARTは元々App_uartが入っていてそのままUART通信用に使えるので、インタラクティブモードで設定してみた。デフォルトではボーレートが115200になっていた。TWELITE UARTはBPSピンが出ていないのでボーレート変更時は注意が必要かも。せめてディップスイッチをつけてほしかったなぁ…

ArduPilotのMAVLink v2ではパケット長がTWELITEが一回に遅れる最大の80を大きく超えたりすることもある可変長なのでデフォルト設定のTWELITEでは少しきつそうだった。単純にボーレートをあわせただけだと通信が結構遅いのでいろいろ試してみた。

いろいろ試した結果
・ボーレート 115200bps → 57600bps
無入力タイムアウト 100ms → 10ms ・オプションビット 00000100 → 00014000
にすると結構いい感じ。
オプションビットはデフォルトでは区切り文字が設定されているんだけどそれを無効にして、ボーレートをBPSピンが関係ないようにしたのと(TWILITE UARTではこの方法以外でボーレート変更できない)、重複チェッカーの条件を緩くした(これは100ms以下で通信するときに設定してくださいって書いてあった)

無入力タイムアウトと重複チェッカーの条件緩和がかなり効いてそう。MissionPlannerから接続するときのパラメータ取得が純正状態より格段に早い。

設定方法はTWELITE STAGEをダウンロードしてきて実行して適当なUSB→TTL変換アダプタにTWELITEを繋いで実行する。
TWELITE Telemetry
インタラクティブモードに入ったら
"b"を押して"57600"と入力してエンター
"m"を押して"D"と入力してエンター
"k"を押して"0xfd,0,10"と入力してエンター
"o"を押して"00014000"と入力してエンター
あとは"S"を入力してセーブできたら完成。
Baudrateを57600に変更してしまったので次回インタラクティブモードに入るときは
TWELITE STAGEの設定→インタラクティブモードで
Bのボーレートを"57600"に変更しないと接続できなくなるので注意。なので2枚一気に書き換えてしまったほうが良い。

あとは片方をArduPilotに接続するだけ。今回はBeagleBoneを使用したのでUT1に接続して使用した。Serial1はデフォルトでMAVLink2の57600bpsだったのでそのまま繋がるはず。
この設定でパラメータ取得が格段に早くなった。これならWPもTWELITE経由で普通に送受信できる。あとはRCバギーに乗せてArduRoverを設定するだけかな。

0 件のコメント:

コメントを投稿