APM2.6のTelemetry通信には現在BT(Bluetooth)を使ってます、なので通信距離は数十m位しかありません。
機体操作にはプロポ(FutabaT10J)を使ってるので、BT通信切れしても操縦不能になり墜落とか行方不明になるわけではなく、機体からのセンサー情報などが読み取れなくなるだけですが、とても気にはなります。
ということで、このBTをTWE-Lite(ZigBee派生)に置き換えてTelemetry通信距離を延ばそうと製作を始めました。
- 機体側:TWE-Lite DIPを使用(1500円@aitendo)
- 地上側:ToCoStickを使用(2760円@aitendo)
APMサイトではXBeeを推奨してますが、価格が安いのでこちらを使いました。シリアル通信に透過モードがあるのでAPM2.6、GCS共に修正不要でそのまま使えてます。
今回は、これを使った製作編の記事です。
ハードウェア編
機体側:
製作と言っても大したこと無くてTW-Lite DIPという便利な無線モジュールがあるのでこれを購入(1500円@aitendo)
但し、このモジュール電源が3.3V系(2.3~3.6V)なのでそのままAPM2.6とダイレクト接続はできないので三端子レギュレータS-812C33AY(100円@秋月)とMOSFET 2N7000(100円@秋月)を使ったレベルシフタを搭載したボードをユニバーサル基板で製作。
親機モードにしてあるのでM1,M2,M3ピンはオープンです。
それと、AI1~AI4(アナログ入力ピン)もAPP_Uartモードでは未使用のためオープンです。
左下の4ピンコネクタでAPM2.6のTelemetry端子と接続します、ここのIFはBTと同じになる様にしてあります。
回路図を一応載せておきます。
地上側:
地上側にはToCoStick(2760円@aitendo)を使います、IFがUSBなのでNexus7を使う時にはマイクロUSB接続用にUSB-to-MicroUSB変換ケーブル(但しOTG仕様のこと)で接続。PC(Windows)の場合はUSBのままで接続。
ファームウェア編
TWE-LiteとToCoStick双方とも同じ設定になります。但し、以下の2点は異なります。
注1)但しToCoStickのみ通信速度をBPSピン無視モードにします、理由は後述
注2)TWE-Lite DIPは親機モード、ToCoStickは子機モードに設定。
シリアル通信ファームに書き換え
基本は透過モードを使用することになりますがデフォルトでインストールされている標準ファームには透過モードが無いので、「APP_Uart(シリアル通信アプリ」に書き換えます。アプリ(ファーム)書き換え方法はTOCOSサイトに詳しくかいてあるのでそちらを参照)
サイトにはAPP_UartアプリにはV1.2と旧版がアップされてましたがV1.2.10(App_Uart_Master_JN5164_1_2_10.bin)を使いました。
インタラクティブモードでの設定変更
ファーム書き換え後、PCと接続し通信ソフト(TeraTerm)を使いインタラクティブ・モードに入って設定変更をします。
インタラクティブ・モードの入り方はTOCOSサイトのここに詳しく書いてあります。
透過モード設定
mコマンドで透過モード(T)を設定します。
通信速度設定
bコマンドでデフォルトが115200bpsになってるので、これを57600bpsに変えます。
オプションビット設定
通信速度設定を変えてもBPSピンをLoにしないと有効にならず115200bpsのままなので、BPSピンに関係なく設定された通信速度になるようにします、これはBPS信号ピンにアクセスできないToCoStickでは必須です。TWE-Lite DIPの方はBPSピンにアクセスできるので無理にしなくても良いです。
oコマンドでオプションビット”0001000″に設定します。
DeviceID設定
iコマンドでID設定を以下の様にします、デフォルトが親機用ID(121)なのでTWE-Lite DIPはそのままで設定変更はしません。
TWE-Lite DIP:DeviceID=121(親機)デフォルトのまま
ToCoStick:DeviceID=120(子機)に設定
アプリケーションIDの変更
購入時にはすべてのTWEが”0x67720103″になっているのでこの値を変えなくても親子間での通信はできてしまうのですが、他のTWEとの混信を避けるためには変更しておいた方が良いでしょう。
GCSとの接続
Mission Planner
PCのUSBポートにToCoStickを差し込み、デバイスマネージャーでポート番号を確認し、そのCOM番号と通信速度57600bpsを選択すれば特に問題なく接続できます。
実際に接続してみたところ、起動時にAPM2.6からParameter読み込みますが、これがUSBと比較すると体感できるほど遅さを感じますね。
Tower(DroidPlanner3)
Nexus7をOTG仕様のUSB変換ケーブルを使いToCoStickを接続します、Towerアプリの設定メニューからBTの代わりにUSBを選択するだけで問題なく接続できます。
実は、最初は接続がなかなかうまくいかず試行錯誤の結果ToCoStickの通信速度57600bpsでうまく接続できるようになりました。Towerでは設定メニューにUSBシリアルの通信速度設定メニューがなく、どうも57600bps固定になっている様です。
ここまででAPM2.6との接続がうまくいったので、まずは 製作編は終了です、次回報告はフィールドテストになります。
以上
私も製作してみたのですが、Mission PlannerにToCoStickを差し込んで、通信速度57600bpsでコネクトさせたのですが、
通信速度57600bpsでは、コネクト出来ず、115200bpsにしてコネクトする繋がりました。
何か、私の方で間違っている点があるのでしょうか?
アドバイス頂けると助かります。
okaさん、こんにちは一つ思い当たる点があります。TWE-Liteの仕様では通信速度設定変更しても、[BPS]ピンをGNDに落とさないと反映されず、115200bos固定になるようです、ところがToCoStickではこの[BPS]ピンはケース外部からアクセスできないので、いくら設定変更しても115200bpsから変わらないので[BPS」]信号に関係なく通信速度反映するモードにする必要ありです。具体的にはインタラクティブモードに入りオプションビットを[00010000]に設定しました。尚、設定時に通信速度を間違えて設定すると大変な目にあいますので要注意です。管理人は間違えて576000と一桁間違えてしまいにっちもさっちも行かなくなりました。ファームを出荷時の超簡単アプリに入れ替えてオールリセットして何とかリカバーできました。ちなみに、MissiionPlannerでは通信速度が選択できるので115200bpsのままでも良いのですがAndroidアプリのDroidPlannerでは通信速度が選択できないようで、57600bps固定の様です。ではまた何かあれば質問してください。
nyan#2さん
アドバイス頂きありがとうございます。
ToCoStickのオプションビットを[00010000]に設定したら
57600bpsで接続することが出来ました。
ただ、距離も離れていないのに通信がかなり遅く、不安定な感じですね。
これは改善する事ができないものなのでしょうか?
okaさん、うまく57600bpsで通信できたとのことで良かったです。確かにこちらでも距離が1mぐらいなのに接続不安定でした。MissionPlannerのConsoleウインドウで通信状況を見たところMavlinkBadPacket(CRC fail)という表示が沢山出てきます。これの意味は多分通信エラー(シリアル通信速度を9600bpsまで下げても状況変化ないので、多分無線通信の部分でのエラーと思います。)と思われます。詳細は近々にブログ記事で挙げるつもりにしてます。そして、この無線通信エラーの回避方法は無線出力を上げるのも一手かと思いToCoSのStrongシリーズを入手して試そうかと思ってます。仕様ではTWE-Liteの無線出力(≒1.8mw)、TWE-Strong(10mw)なので少しは距離アップが期待できるのではと思います。Mavlinkパケットのフレーム長は(8~263Byte)とそこそこ長いので、TWE-Liteでの通信方式(どちらかというと制御用の短いデータ通信用)にはもしかするとマッチしないのかもしれませんです。なかなか奥が深くて調査にも時間がかかっている状態ですが、自分が納得できるところぐらいまでは調整継続のつもりです。
ちなみに、DIY Drone サイトの日本プロジェクトページではこの辺のところ結構議論されている様です。