ZB Coord API for XBee の Raspberry Pi 用マニュアル

国野 亘
http://www.geocities.jp/bokunimowakaru/

Raspberry Pi を使って XBee ZB モジュールを動かす
Raspberry Pi を使って本 XBee ライブラリの動作確認を行う方法について説明します。
必要な機器構成を次ページの表 1 に示します。
XBee ZB モジュール 2 台のうち 1 台のファームウェアを「ZIGBEE COORDINATOR API」に書き換え、XBee USB エクスプローラに装着し、Raspberry Pi に USB で接続します。
もう 1 台のファームウェアは「ZIGBEE ROUTER AT」です。ブレッドボードに実装し、XBee ZB モジュールの 1 番ピンと 10 番ピンにアルカリ乾電池（単３電池・直列 2 本・1 番ピンがプラス）で電源を供給し、20 番ピンにタクト・スイッチ（反対側は GND）を接続します。製作例・配線の様子を下図に示します。

動作確認用の配線図
ハードウェアの準備を終えたら、Raspberry Pi の LXTerminal から下記のコマンドを入力し、XBee 管理ライブラリとサンプルプログラム一式をダウンロードします。
XBee 管理ライブラリ一式のダウンロード$ cd$ git␣clone␣-b␣raspi␣https://github.com/bokunimowakaru/xbeeCoord.git
ダウンロードが完了したら以下を実行し、tools フォルダ内の XBee 用テストツールをコンパイルします。
$ cd␣xbeeCoord/tools$ makeコンパイルが完了したら下記のコマンドを入力して XBee 用テストツール xbee_test を起動します。
$ ./xbee_test表 1. Raspberry Pi を使ったワイヤレス接続実験のための機器構成

xbee_test

Raspberry Pi を使ったワイヤレス接続実験
接続実験

通信方式：XBeeZB

開発環境：RaspberryPi

Raspberry Pi に接続した親機 XBee から子機 XBee モジュールへの接続を確認します。

親機USBRaspberry Pi

接続XBee USB エクスプローラ

XBee PRO ZB モジュール

ファームウェア：ZIGBEE COORDINATOR API

Coordinator

API モード

電源：USB 5V → 3.3V

シリアル：USB 接続

ｽﾘｰﾌﾟ(9)：接続なし

RSSI(6)：(LED)DIO1(19)：接続なし

DIO2(18)：接続なし

DIO3(17)：接続なし

Commissioning(20)：(SW)DIO4(11)：接続なし

DIO11(7)：接続なし

DIO12(4)：接続なし

Associate(15)：(LED)

その他：XBee PRO ZB モジュールは XBee ZB モジュールでも動作します（ただし、通信可能範囲が狭くなる）
。

子機

接続

接続
コミッショニング用
タクトスイッチ

XBee ZB モジュール

ピッチ変換

ブレッドボード（要：電池ボックスの接続）

ファームウェア：ZIGBEE ROUTER AT

RouterTransparent モード

電源：乾電池 2 本 3V

シリアル：接続なし

ｽﾘｰﾌﾟ(9)：接続なし

RSSI(6)：(LED)DIO1(19)：接続なし

DIO2(18)：接続なし

DIO3(17)：接続なし

Commissioning(20)：SW

DIO4(11)：接続なし

DIO11(7)：接続なし

DIO12(4)：接続なし

Associate(15)：LED

その他：

XBee ZB モジュールの 1 番ピンと 10 番ピンに電池ボックスを接続します（1 番ピンがプラス側）。

必要なハードウェア
・Raspberry Pi 2 Model B など
1台
・各社 XBee USB エクスプローラ
1個・Digi International 社 XBee PRO ZB モジュール
1個
・Digi International 社 XBee ZB モジュール
1個
・XBee ピッチ変換基板
1式
・ブレッドボード
1個・タクトスイッチ
1個
・セラミックコンデンサ 0.1uF 1 個、タクトスイッチ 1 個、単 3×2 直列電池ボックス 1 個、単 3 電池 2 個、ブレッドボードワイヤ適量、USB ケーブルなど

起動するとシリアル接続が可能なポートを自動的に検索し、XBee ZB モジュールとのシリアル接続を行います。XBee ZB 以外のシリアル機器が接続されていると失敗する場合があります。シリアルポートを指定することも可能です。USB0（ttyUSB0）に接続したい場

合は「B0」を、USB1 なら「B1」、拡張用 GPIO 端子（ttyAMA0）に接続した場合は「-1」を付与します。
接続に成功すると「AT>」が表示されます。この状態で、ブレッドボードで製作した子機のコミッショニング・ボタンを 1 回だけ押下すると、xbee_test に「received IDNT」のメッセージが表示され、ペアリングが完了します。
もし、うまく表示されない場合は、子機 XBee ZB モジュールのコミッショニング・ボタンを 4 回連続で押下し、ネットワーク設定を初期化します。それでもうまく接続できない
場合は、xbee_test で「ATCB04」を入力して「Enter」キーを押して親機のネットワーク設定を初期化してから、再度、子機のネットワーク設定を初期化します。
ペアリングが完了したら、XBee テストツール xbee_test へ「BAT」を入力してみてください。この命令は子機 XBee ZB モジュールの電源電圧を取得する命令です。入力の際の。
打ち間違いは「Delete」キーを押して訂正することができます。
pi@raspberrypi ~/xbeeCoord/tools $ ./xbee_test B0-------------------ツール起動
Initializing
Serial port = USB0 (/dev/ttyUSB0,0xB0)-------------------ZB Coord 1.94
by Wataru KUNINO
XBee ライブラリのバージョン-------------------4030XXXX COORD.
Press 'h'+Enter to help, 'q!'+Enter to quit.
AT>-------------------recieved IDNT-------------------from :0013A200 4030YYYY 88E2 88E2network:0013A200 2000FFFE
type:23 ZB_TYPE_ROUTER
Node ID:2000
Parent :FFFE
Event :01 Commissiong Pushbutton Eventstatus :02 Packet was a broadcast packet

子機の電池電圧情報を取得

AT>BAT-------------------recieved RAT_BATT-------------------from :0013A200 4030C16F
id:27
status :00 OK
BATT :11001100 00001010
battery:3000 mV
AT>

Xbee_test を実行した様子
上図のように電圧が表示されたら動作確認の完了です。
この xbee_test を終了するには「Q」「!」「Enter」の順にキーを入力します。

XBee ZB モジュールによる ZigBee ネットワークの構築方法
次に XBee ZB モジュールによる ZigBee ネットワークの基本的な管理方法について説明します。
コミッショニング・ボタンには表 2 のような役割があります。コミッショニング・ボタンを 1 度押してすぐに放すと、同じ ZigBee ネットワークで動作中の XBee ZB 機器のアソシエート LED が高速に点滅します。ただし、スリープ中の End Device は受信できないので点滅しません。
ZigBee デバイス・タイプが Coordinator もしくは Router の XBee ZB 機器のコミッショ
ニング・ボタンを 2 度、連続して押すと、１分間、他の新しい XBee ZB 子機がネットワークに参加することを許可する「ジョイン許可状態」に移行します。ZigBee ネットワークに機器を追加する時に便利な機能です。
コミッショニング・ボタンを 4 度、連続で押すと、ネットワーク情報の初期化を実行します。既に ZigBee ネットワークに接続している XBee ZB 機器を他の ZigBee ネットワークに接続させたい場合や、ネットワークを再構築させたい場合などに使用します。
Coordinator を初期化した場合は、新たな ZigBee ネットワークを開始するので、それまで参加していた全デバイスとの通信が出来なくなります。新しいネットワークに参加させたいデバイスについては、ネットワーク設定を初期化し、再登録します。
これらのコミッショニング・ボタンの機能を xbee_test から AT コマンドを入力して実行することも可能です。ボタンの押下数に応じて「ATCB01」「ATCB02」「ATCB04」のいずれかの引数を指定します。
表 2. コミッショニング・ボタンの役割と対応する AT コマンド
押下数

AT コマンド

1

ATCB01

同じネットワーク内の機器のアソシエート LED を高速点滅させる

処理内容

2

ATCB02

他の新しい XBee ZB 子機のジョイン（参加）を許可する（押下後 1 分間）

4

ATCB04

ネットワーク設定情報を初期化する

デバイス・タイプが Coordinator または Router の XBee ZB モジュールは、初期状態やネットワーク設定を初期化した後、「ジョイン許可」の状態となっています。この状態で使用していると、近隣の他の ZigBee 機器がネットワークに参加してしまう場合があります。
また、複数の ZigBee ネットワークを構築したいときに、子機を希望のネットワークに参加させることができなくなります。
このような侵入や不都合を防ぐには、必要な機器を参加させた後に全ての Coordinatorと Router のジョイン許可設定を「不許可」に変更します。

表 3. XBee 用テストツール xbee_test によるジョイン許可制御
コマンド

処理内容

ATNJ00

親機のジョイン設定を「不許可」に設定する

RATNJ00

ペアリングした子機のジョイン設定を「不許可」に設定する

ATNJ1E

親機のジョイン設定を 30 秒間だけ「許可」に設定する

RATNJ1E

ペアリングした子機のジョイン設定を 30 秒間だけ「許可」に設定する

ATNJFF

親機のジョイン設定を「常時許可」に設定する

RATNJFF

ペアリングした子機のジョイン設定を「常時許可」に設定する

XBee 用テストツール xbee_test を用いて、「ATNJ00」と入力すると、親機 XBee ZB モ
ジュールのジョイン許可設定を「不許可」にすることができます。しかし、子機 XBee ZBモジュールの設定は「許可」のままです。子機の設定を変更するには、子機のコミッショニング・ボタンを一度だけ押下し、親機から「RATNJ00」を実行します。先頭の「R」は本 xbee_test ならびに XBee 管理ライブラリにて「リモート AT コマンド」を意味し、ZigBee
ネットワークに接続されている XBee ZB モジュールへの遠隔操作を示します。

リモート AT

親機 XBee ZB

子機 XBee ZB

ZIGBEE COORDINATOR API

ZIGBEE ROUTER AT(Coordina(Coordina
AT コマンド実行

XBee USB エクスプローラ

ブレッドボード

リモート AT コマンドのイメージ図（親機 XBee から送信した AT コマンドを子機 XBee で実行する）

テストツール xbee_test のリファレンスマニュアル
この xbee_test には、XBee ZB モジュールを使った様々な通信テスト機能が含まれています。その一例を表 4 に示します。
表 4. XBee 用テストツール xbee_test コマンドリファレンス
コマンドID
PING
BAT
TX=aaaaaa
GPO=pd
GPIp
ADp
ISI
VR
AI
NC
EE=aaaaaa
EE=0
ATxx
ATxx=hh
RATxx
RATxx=hh

処理内容
最後に受信した子機とのペアリングを行う
ペアリング済の子機との通信が可能かどうかを確認する
ペアリング済の子機の電源電圧値を取得する
ペアリング済の子機へテキスト文字「aaaaaa」を送信する
ペアリング済の子機の GPIO ポート「p」に「d」を出力する
ペアリング済の子機の GPIO ポート「p」の値を取得する
ペアリング済の子機のアナログ・ポート「p」の値を取得する
ペアリング済の子機の DIO ボートと AD ポート 1～3 の値を取得する
親機（ローカル）の情報を表示する
親機（ローカル）の ZigBee デバイス・タイプを表示する親機（ローカル）のネットワーク状態を表示する
親機と子機のそれぞれに登録可能な End Device 数を表示する
親機（ローカル）の暗号キーをテキスト「aaaaaa」に設定する
親機（ローカル）の暗号機能を解除する
ローカル AT コマンド「xx」を実行する
ローカル AT コマンド「xx」に引数「hh」を付与して実行する
リモート AT コマンド「xx」を実行する
リモート AT コマンド「xx」に引数「hh」を付与して実行する

リモート機能を使用する前に子機のコミッショニング・ボタンを使ってペアリングを行う必要があります。このテストツール xbee_test にペアリングが可能な子機の台数は 1 台です。新たにペアリングが実行されると、その後は新しい子機に対してのみリモート機能を実行します。ただし、ZigBee ネットワークとのジョイン状態は継続するので、例えば古い子機が送信したパケットを受信すると、xbee_test の画面上にパケットの内容が表示されます。

本ドキュメントならびにソースコードは、ライセンスフリーです。
利用、編集、再配布等が自由に行えますが、著作権表示の改変は禁止します。
Copyright (c) 2010-2015 Wataru KUNINO
http://www.geocities.jp/bokunimowakaru/