電動クローラの組み立て(その3)
はじめに
GPS電動クローラ(運搬車)を製作するために、自動制御コンピュータHolybro PixHawk 6XとWindows PCとの間をZigBee(ジグビー)にて無線化します。無線化により、Windows PCをクローラに搭載せずにすみます。
ZigBee XBee3の設定
この構成では、PixHawkとWindows PC上で動作するのMission Plannerが連携して、クローラ自動制御を行います。ここでは、この両者を接続するUSB-Cケーブルを無線化します。PixHawkのテレメータ(TELEM1)ポートに無線機を接続すると、この両者を無線化できます。
ここで導入したZigBeeは、Digi XBeeのXBee3です。この無線接続の用途では、前世代のXBee2(S2C)でも充分です。私が購入した時点では、XBeeS2CよりもXBee3の方が安価でしたので、XBee3を選択しました。XBee3は、XBeeS2Cの上位互換で、さらにMicroPythonが付加されているそうです。
この無線接続のために購入したものは次のとおりです。
- XBee3無線モジュール 3セット
- XBee USBインターフェイスボードキット 2セット
- XBee用2.54mmピッチ変換基板 1セット
無線モジュールは2セットあればよいのですが、設定練習のために予備の1セットを追加しました。USBインターフェイスボードを組み立てる一方、PixHawk 6X購入時に付属していた6ピンコネクタケーブルの一方を分解して、XBeeピッチ変換基板に接続します。

接続は次の通りです。
| PixHawk 6X | XBee3 | note |
|---|---|---|
| 1 (+5Vcc) | 1 (Vcc) | |
| 2 (TX) | 3 (Din) | |
| 3 (RX) | 2 (Dout) | |
| 4 (CTS) | NC (no connection) | フローコントロール不可のため |
| 5 (RTS) | NC (no connection) | フローコントロール不可のため |
| 6 (GND) | 10 (GND) |
一方、USBインターフェイスボードのピンヘッダには、USBバスパワとなるように、ジャンパピンを取り付けます。
USBインターフェイスボード2枚に、XBeeをそれぞれ取り付けます。そして、XBeeを1枚づつ、Windows PCにインストールしたソフトウェアDigi XCTUにて設定します。デバイススキャン時、ボーレートが問われますが、デフォルトの9600 bpsと、今後利用する57600 bpsとの2つを選択しました。接続したデバイスを発見できたら、addボタンを押して、そのデバイスを追加します。

ZigBeeでは、Device RoleCEとして、一方をJoin Network、他方をForm Netorkに設定します。このZigBeeデバイスの組み合わせの場合、ArduPilot公式サイトのZigBee設定例の通りでは動作しないこともあるようですので、ここではPC側をJoin Networkに、PixHawk側をForm Networkに設定しました。
それぞれのXBee3において、デフォルト値から変更した項目は次のとおりです。なお、ここで示したこの相手のMACアドレスは、私のもので、XCTUに接続して確認しました。
| 設定 | PC側 | PixHawk側 | note |
|---|---|---|---|
| ID | 1234 | 1234 | 任意数値 |
| NI | xb1 | xb2 | 任意文字列 |
| CE | Join Network | Form Network | |
| BD | 57600 | 57600 | ボーレートを9600 bpsから57600 bpsに変更 |
| D7 | 0 | 0 | フローコントロールをオフにする |
| DH | 13A200 | 13A200 | 相手XBeeの上位MACアドレス(固定のようです) |
| DL | 421D74B2 | 421C0D69 | 相手XBeeの下位MACアドレス(13A200に続く文字列) |
設定値を入力するたびに、鉛筆ボタンを押して、設定値をデバイスに書き込みます。

設定が完了したら、2枚のZigBeeモジュール間で通信できることを確認します。私は、この2枚のZigBeeモジュールをそれぞれ2台のMacに接続して、screen /dev/tty.usbserial-... 57600にて双方向通信のできることを確認しました。...の部分はシリアルポート固有の名称が入りますが、zshシェルにてタブキーを押せば補完されます。screenコマンドの終了はCtrl-a kです。
Mission Controlの設定
PC側の設定を行ったZigBeeモジュールをWindows PCに接続して、Mission Controlを起動します。Mission ControlのZigBee設定方法は、ArduPilotの公式ホームページに書かれているとおりです。フローコントロールをオフにするため、設定/調整→フルパラメータリストにて、BRD_SER1_RTSCTSを2から0に変更します。

SERIAL1_PROTOCOLはデフォルトの2(MAVLink 2)のままでも動作しました。

PixHawkとZigBeeの接続
そして、PixHawk側の設定を行ったZigBeeモジュールをピッチ変換基板に接続し、この基板をPixHawkのTELEM1ポートに、PM02DをPixHawkのPOWER1ポートに、GPSユニットをGPS1ポートに、それぞれ接続します。機材が増えたため、CuGo V3コンプリートキットの防水ボックスに収まらなくなりました。防水ボックスのサイズアップが必要になりました。

この機材を屋外に持ち出して、プロポにて走行試験をしました。まだ、PixHawkとESCとを接続していませんので、ArduPilotによる自動制御はできませんが、雰囲気をつかむことができました。

Windows PC上のMission PlannerのシリアルポートとしてZigBeeのものを指定し、接続ボタンを押したら、ZigBee経由にてPixHawkの情報が表示されました。バッテリ情報、GPS情報などがMission Planner上に表示され、嬉しいです。

おわりに
PixHawk 6XとWindows PCをZigBeeにて無線化しました。今後、ESCとPixHawkを接続して、ArduPilotによる自動制御を試してみたいと思います。
関連記事
- 電動クローラの組み立て(その4) 23rd April 2025
- 電動クローラの組み立て(その2) 15th October 2024
- 電動クローラの組み立て(その1) 11st October 2024