環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
CPU | Core i5-8250U |
OS | Windows10 |
MissionPlanner | v1.3.80 |
項目 | 値 |
---|---|
Board | Pixhawk(v2.4.8) |
Ardupilot | Rover V4.2.3 |
概要
ここまでUSBケーブルでPC-Pixhawkを接続してきました。今後機体を動かしながら調整するにあたり、無線でMissionPlannerで接続した方が便利です。無線の形式は色々ありますが、ここではXBeeを使います。
予備知識
XBee
海外サイトでPixhawkとセットでテレメトリー無線が多々販売されていますが、技適対応品かが怪しいです。XBeeなら秋月電子などで技適対応品が販売されています。
XBeeはメジャーな無線通信モジュールです。ZigBeeという通信規格を使っています。ZigBee自体はメッシュネットワーク等高度な機能がおおいのですが、ここではただUART通信を無線化する用途で使います。XBeeそれぞれにはユニークなIDが振られていて、2つのXBeeにそれぞれ相手のIDを書き込むことで相互通信ができます。
XBeeの設定をするWindowsソフトが「XCTU」です。これを使って2つのXBee同士のペアリングなどを行います。
またXBeeは2mmピッチのDIPコネクタという独特なコネクタをしています。USB&2.56mmピッチ変換基板を用意する必要があります。以下の物が良く売っていて安いので使います。(USB-mminiBコネクタなのが玉に瑕ですが...)
Xbeeの無線HWでのbaudrateはドキュメントの記載では「250kbps」と記載されています。安定してUART通信するためには、XbeeのUARTのbaudrateをその1/5程度に設定するのが良いかと思います。
事前条件
以下の機材が必要です。
- WindowsPC
- pixhawk
- USBA-microBケーブル
- USBモバイルバッテリー
- XBeeS2C x2
- それぞれに「cordinator」、「rooter1」というラベル貼って、容易に区別できるようにすることを推奨
- XBeeシリアルアダプター x2
- USB-miniBケーブル x2
- pixhawk-Xbeeアダプターケーブル用の部材
- ケーブル(AWG26推奨)
- PHコネクタ(5Pハウジングx1、ピンx5)
- 2550コネクタ(5Pハウジングx1、ピンx5)
手順
XBeeIDの確認
- 「cordinator」、「rooter1」のそれぞれのXBeeについて、裏のラベルの「MAC」の項の値をにメモする(後々の設定に使う)。
XCTUのインストール
- windowsPCにて、XCTUダウンロードページの下方の「XCTU v.X.X.X Windows x86:x64」をダウンロードする。
- ファイルを開き画面の指示に従ってインストールをする。
「cordinator」のXBeeの接続・設定
- 「cordinator」のXBeeを変換基板に乗せて、WindowsPCとUSB接続する。
- XCTUを起動する。
- 左上の「Add device」を押す。
- 出現した「Add radio device」デバイス選択ウィンドウで以下の操作をする。
- 「Resfresh ports」を押す。
- 「Select the Serial/USB port」の下に接続したデバイスが表示される。
- 「Baud Rate」で「9600」を選択する。
- 「Finish」を押す。
- 「Resfresh ports」を押す。
- 以下のようにデバイスが追加されたことを確認する。
- 画面右の「Radio Configuration」でパラメーターを選択する。以下の表の「#1」の値を選択する。
- パラメーターの選択後「Write」ボタンを押す。
項目 | #1 | #2 | 説明 |
---|---|---|---|
ID(Pan ID) | 1234 | ←同じ | ネットワークのIDで2つで同じ値にする必要がある |
JV (Channel Verification) | Enabled[1] | ←同じ | 接続channelにかかわる設定 |
CE Coordinator Enable | Enabled[1] | Disabled[0] | 片方だけをEnableにします。 |
DH (Destination Address High) | #2のSH | #1のSH | 相手のアドレスの上位8桁 |
DL (Destination Address Low) | #2のSL | #1のSL | 相手のアドレスの下位8桁 |
NI (Node Identifier) | cordinator | rooter1 | 任意の両者を区別するための値(Option) |
BD (Baud Rate) | 57600[6] | ←同じ | シリアル接続IFのbaudrate |
D7 (Pon 12 - DIO7/nCTS Configuration) | Disabled[0] | ←同じ | CTS信号を無効にします |
「router1」のXBeeの接続・設定
- 「cordinator」の時と同じように「router1」のXBeeをXCTUと接続します。
- 同様にパラメーターを書き込みます。この時に上表の#2の値を設定します。
XBee同士の導通確認
- 「cordinator」のXBeeをXCTUと接続して、シリアルターミナルの設定をする。
- 「cordinator」のXBeeをWindowsPCに接続する
- XCTUを起動する
- 「Add device」の操作をする。
- 右上のボタンで「(1)ターミナルモード」を選択する。
- ウィンドウ中の「(2)Open」ボタンを押す。
- 「Send packets」内の「(3)+」ボタンを押す。
- 出てくるウィンドウに適当な文字列を入れる。
- 「(4)Send selected packet」を押すことで実際にUARTにデータが送信される。
- まだこの段階では受信側がいないので、効果は起こらない
- 「router1」のXBeeをXCTUと接続して、シリアルターミナルの設定をする。
- 「router1」のXBeeをWindowsPCに接続する
- 「cordinator」と同様にXCTUを設定をする。
- 通信確認を行う
- 片方のXCTUのウィンドウで文字の送信をすると、もう1つのXCTUのウィンドウで受信をすることを確認する。
XBee-Pixhawkの接続ケーブル作成
- 以下の接続でXBeeアダプターとpichawkの接続をするケーブルを作成する。長さは15cmあれば十分。
- XBeeアダプター側のピンは、アダプター上の表示を確認して合わせる。
- pixhawkのコネクタは種類があるが、一番メジャーなものがmolexのPicoblade仕様のもの。
- このPicobladeコネクターはハウジングのピンをひっかける穴がある方を見て右から1ピンとなる(ヒロセコネクタとは逆なので注意)。
# | pixhawk側 | # | XBeeアダプター側 | |
---|---|---|---|---|
1 | VCC | 1 | VCC | |
2 | TX(OUT) | 3 | TX(IN) | |
3 | RX(IN) | 4 | RX(OUT) | |
4 | CTS | 5 | RST | |
5 | RTS | - | --- | |
6 | GND | 2 | GND |
Ardupilotの通信設定
- XBee関連の接続はすべて解除する
- WindowsPCとPixhawkをUSBケーブルで接続する。
- MissionPlannerを起動して、Pixhawkと「接続」する。
- MissionPlannerで「設定/調整」->「パラメーターツリー」から以下のパラメーターを設定します。
- 注:これらのパラメーターを反映するにはpixhawkの再起動が必要
パラメーター名 | 値 | 説明 |
---|---|---|
BRD_SER1_RTSCTS | 0 | rtsピンを用いたフロー制御を無効にします |
SERIAL1_BAUD | 57(デフォルト) | 57600bps |
XBee経由でのMissionPlannerの接続の確認
- WindowsPC側の操作
- WindowsPCとPixhawkを接続しているUSBケーブルを抜く。
- WindowsPCとXbeeの片方をUSBケーブルで接続する。
- MissionPlannerを立ち上げる。
- MissionPlannerの右上のポート指定でXbeeとつながっているポートを選択する。
- baudrateで「57600」を指定する。
- 「接続」を押す。
- Pixhawk側にの操作
- PixhawkにXbeeを接続する。
- PixhawkのUSBにモバイルバッテリーをつなげて電源供給をする。
- MissionPlannerでArdupilotとの接続がされていることを確認する。
※ 筆者の環境ではPixhawkの電源ON -> MissionPlannerで「接続」の順番では接続が確立しないことが多いです。