Skip to main content

XBee

XBee概要

XBee ドローン/UAVを日本国内で飛ばす際に厄介な問題となるのが電波関連です。

ラジコン送信機は国産のFutabaやJR等を使っておけば技適が問題になることはないのですが、海外で使われているテレメトリーやFPV機器の電波は日本国内で使えないものがほとんどで、国内で合法的に利用可能な代替品を用意する必要があります。

この中でも、テレメトリーリンクに使われる双方向シリアル送受信機(北米では915MHz、ヨーロッパでは433MHzが主流)を置き換えるには、2.4GHzで技適が取れているXBeeモジュールを使うのが最も安価で楽な方法です。 なお、同じXBeeでもアメリカ版は高出力で技適が取れていませんので、購入は国内の代理店から正規の国内向け製品を購入したほうが安全です。

Pixhawk系のファームウェアでは、現時点でPX4、APMどちらもXBeeに対応しています。

XBeeモジュール選択

XBeeには数種類ありますが、ドローンやロボット用途には、XBee PRO ZB (S2B)か、新しいXBee ZB (S2C)が適しています。 XBee PRO ZB (S2B)は生産終了が決まり在庫限りになったので、今から導入するのであれば次のモデルのXBee ZB (S2C)がよいかと思います。 S2Cは、S2Bに比べ転送速度が速くなった代わりに、 飛距離がすこし短くなっています。

XBee PRO ZB (S2B)

XBee ZB (S2C)

XBeeはZigBee規格の通信モジュールなので別クラスの製品同士でも最低限の通信はできますが、機体側と地上側、可能であれば手持ち全部を統一しておいたほうが何かと楽で、転送スピードも最大になります。

アンテナ形式

XBeeのモジュールはアンテナ形式が選択できます。 機体側アンテナは、ワイヤーアンテナも外部アンテナもスペック上の到達距離は変わりません(飛距離は地上側のアンテナを地面からなるべく高い位置に設置することが最も重要です)ので、搭載位置やアンテナのマウント方式で使いやすいものを選ぶとよいかと思います。

地上側のアンテナさえハイゲインのものにしておけば、見通しの飛距離はかなり出るようです。地上側はRPSMAかU.FLにしておくと大きなアンテナを取り付けやすいのでオススメです。 ただし、XBee専用のアンテナ以外は厳密には技適違反になるそうなので、そもそもXBeeを導入する理由を考えるとあまり意味はないかもしれません。 受信のみであれば巨大なハイゲインアンテナを使って通信距離を稼ぐこともできますが、テレメトリーは基本的に双方向通信が必要です。

NOTE: どのアンテナ形式でも、機体側の搭載位置は、2.4GHzのRC受信機アンテナから離さないと、通信速度が全く出なくなるので注意!

ワイヤーアンテナ

基盤から突き出しているワイヤーアンテナ、通称ホイップアンテナです。基盤と一体なのでとにかく楽で、見通しがよければ外部アンテナと比べても到達距離もあまり変わりません。

RPSMA

Reverse Polarity SMAコネクター型です。ねじ込む同軸ケーブルタイプです。外部のホイップアンテナを直接ねじ込むことができますが、延長ケーブルも使えます。 RPSMAコネクタ一体式はマウントが本体についているので外部アンテナの取り付けは楽ですが、衝突や墜落時等、アンテナに力がかかるとXBeeの基盤が割れる可能性が高くなります。 現時点ではXBee PRO (S2B)のみで、S2CにRPSMAの設定はないようです。

U.FL

U.FLコネクターのついたアンテナケーブルをつなぐタイプです。 アンテナを分離してマウントできますのでカウリングの外に取り付けるには便利です。

外部アンテナ

国内で購入する場合はこちらがおすすめです。

https://www.switch-science.com/catalog/list/481/

アダプター

5Vアダプター

XBeeは3.3V回路で、Pixhawkのシリアルポートの電源は5V出力なので、下駄を履かせる必要があります。 PixhawkではセーフティスイッチのVCCが唯一3.3Vなので、ケーブルを分岐してこちらから3.3V VCCをとることで下駄が不要になりますが、XBeeを機体へマウントする際の台座にもなるため、5Vのアダプターを使ったほうが楽だと思います。設定変更する際もソケットから抜くだけで済みます。

https://www.switch-science.com/catalog/1216/

USBアダプター

パソコン側にはUSBの下駄が必要です。 2つあるとトラブルシューティング時に便利です。

https://www.switch-science.com/catalog/1031/

設定

XCTUインストール

XBee専用の設定アプリ、XCTUをダウンロードしてインストールします。

http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu

接続、基本設定

地上側

地上側で使用するXBeeをUSBアダプターに乗せてPCに接続し、XCTUを起動します。 XCTU Initial Screen

Add deviceDiscover devicesアイコンをクリックして、接続ダイアログを開き、XBeeが接続されているポートを選択します。 XCTU Discover 1

新品のモジュールは9600 baudに設定されていますので、9600 baudを選択します。 設定済みのモジュールの場合、57600 baudに設定している場合が多いので、57600を選択します。 わからない場合は両方選択します(XBeeから反応があるまで各設定を試すので、検出に時間がかかるようになるだけです)。

XCTU Discover 2
XCTU Discover 3

地上側のモジュールには、Coordinator ATファームウェアをインストールします。 XCTU Discover 3

最新版のファームウェアをインストールしたら、パラメーターの設定を行います。 XCTU Discover 3

地上側(USB)パラメーター設定

ID (PAN ID)             # 複数のZigBeeネットワークを作成する場合、ネットワーク毎にユニークなPAN IDを設定します。
NI (Node Identifier)    # ネットワーク内で各モジュールを識別するためにわかりやすい名前をつけておきます。
NH (Maximum Hops)       # メッシュネットワークの最大ホップ数を設定します。
                        # 1対1のテレメトリー等、台数が少ない場合は、経路が見つからない際のタイムアウト時間を短縮するために短めに設定しておきます。
                        # 参考値) 30でタイムアウト1.6秒、8ホップ程度
BD (Baud Rate)          # テレメトリー用に双方向通信を行う場合、57600[6]に設定します。
D7 (DIO7 Configuration) # Disable[0] に設定し、CTSフローコントロールを無効にします。

上記以外はデフォルトのままでOKです。

機体側

機体側で使用するXBeeモジュールをUSBアダプターを使ってPCに接続し、地上側と同様に設定しますが、Coordinator ATではなく、Router ATファームウェアをインストールします。

機体側パラメーター設定

ID (PAN ID)                   # 地上側Coordinatorと同じIDを入れます。
NW (Network Watchdog Timeout) # [1] に設定しておくと、Coordinatorが見つからない場合、1分後に自動でネットワークを再検索してくれます。
JV (Channel Verification)     # Enabled[1] に設定しておくと、ネットワークに参加する際に、Coordinatorが同一チャンネルに存在することを確認してくれます。
JN (Join Notification)        # Enabled[1] に設定しておくと、ネットワーク参加時にAssoc LEDが点滅します。
NI (Node Identifier)          # ネットワーク内で各モジュールを識別するためにわかりやすい名前をつけておきます。
NH (Maximum Hops)             # メッシュネットワークの最大ホップ数を設定します。
                              # 1対1のテレメトリー等、台数が少ない場合は、経路が見つからない際のタイムアウト時間を短縮するために短めに設定しておきます。
                              # 参考値) 30でタイムアウト1.6秒、8ホップ程度
BD (Baud Rate)                # テレメトリー用に双方向通信を行う場合、57600[6] に設定します。

# APMの場合XBeeのフローコントロールに対応していないのでCTS/RTSを両方無効にします。
D7 (DIO7 Configuration)       # Disable[0] に設定し、CTSフローコントロールを無効にします。
D6 (DIO6 Configuration)       # Disable[0] に設定し、RTSフローコントロールを無効にします。(デフォルト)

# PX4の場合、デフォルトのままでOKです。
D7 (DIO7 Configuration)       # CTS flow control[1]
D6 (DIO6 Configuration)       # Disable[0] (デフォルト)

上記以外はデフォルトのままでOKです。

地上テスト

USBアダプターが2つある場合は、地上側、機体側両方のXBeeモジュールをPCに繋いで、XCTUのシリアルコンソール経由で相互通信ができているかテストすることができますので、トラブルシューティング時に覚えておくと便利です。

Pixhawkとの接続

5Vアダプター

スイッチサイエンスの5Vアダプターと、6ポジションDF13コネクターと6芯ケーブルを使った配線は以下のようになります。

Pixhawk側のTXをXBeeのRXに、PixhawkのRXをXBeeのTXに接続します。Pixhawkのテレメトリーポートは、VCCは5Vですが、信号は3.3Vなので、信号線はレベルシフターを介さず直接つなぎます。

APMは現時点ではフローコントロールに対応していないので、CTSとRTSは使いません。後ほどソフトウェア側で無効にします。

XBee 5V Adopter Wiring

海外製だとSparkfunのアダプターも使いやすそうです。

https://www.sparkfun.com/products/11373

Pixhawk TELEM1, TELEM2 シリアルポート ピンアウト

1 2 3 4 5 6
VCC TX RX CTS RTS GND
5V 3.3V 3.3V 3.3V 3.3V 3.3V

シリアルポート配線の詳細についてはこちらを参照してください。

なお、PX4、APMどちらもデフォルトでMAVLinkはTELEM1ポートです。 TELEM1ポートは1Aまで使えますので、消費電力が多い機器をTELEM1につなぐ必要がある場合は、TELEM2ポートにXBeeを繋いでメインのMAVLinkとして使えるようにするために別途設定が必要です。

NOTE:※一応、以下のようにPixhawkの3.3V TX/RXをスイッチサイエンス製5Vアダプターの3.3Vレベルシフターに繋ぐ方法でも動きますが、シグナル電圧が降下しすぎてしまっているはずで、信頼性は不明ですので良い子は真似しないようにしましょう。また、スイッチサイエンス製のアダプターはCTS/RTSはレベル変換してくれないので、紛らわしく注意が必要です。

XBee USB Adopter XBee USB Adopter Wiring

ファームウェアパラメーター設定

APMを使う場合

APM PlannerやMission Planner経由で以下のパラメーターを設定します。

# Telem1ポートにXBeeを接続した場合
BRD_SER1_RTSCTS = 0
# Telem2ポートにXBeeを接続した場合
BRD_SER2_RTSCTS = 0

GCSのコネクションダイアログからUSBシリアルポートを選択して、Baud Rateを57600に設定して接続します。

PX4を使う場合

ファームウェア側は特に設定は不要です。QGroundControlのComm Links->Addで、XBeeが接続されているUSBシリアルポートを指定し、Baud Rateを57600に設定します。

接続テスト

以上の設定を行った後、GCSから接続するとパラメーターのダウンロードや変更を加えたり、キャリブレーションを行ったり、フライトモードやステータス、姿勢情報等がストリームされてきて随時表示がアップデートされるはずです。

参考資料