XBeeServer: XBeeを無線センサとして使おう

作成日: 2010/07/18  最終更新日: 2010/07/18



◆はじめに

ここでは,Digi International製の無線通信モジュールXBeeを,無線センサとして手軽に扱うためのミドルウェア「XBeeServer」を紹介します.

XBeeは,IEEE 802.15.4に準拠した小型の無線通信モジュールです(図1).パソコンとUSBなどで接続して,ファームウェアを書き換えることで,「ピアツーピアの無線シリアル通信モジュール」や「メッシュ/スターネットワークを形成するZigbee 互換の無線センサモジュール」として利用することが可能です.図2に,無線センサシステムとしてXBeeを利用する様子を示します.

XBeeServerは,XBeeを無線センサモジュールとして使う場合に焦点を絞り,XBeeデバイスの動作状態を確認できるGUIと,TCPサーバーを一体化したソフトウェアです(図3).Xbeeデバイス(に接続されたセンサ)の状態は,TCPソケット経由でシンプルなテキストメッセージとして手軽に取得できます.

ちなみに,筆者らは実験住宅「OchaHouse」に多数のXBeeモジュールを設置し,XBeeServerを用いてこれらを制御することで,ユーザの大まかな行動範囲の検出/記録などを試みています(図4).

MobiServerで紹介するさまざまなミドルウェア群と組み合わせることで,実世界のさまざまなデバイスをシンプルな方法で手軽に扱うことが可能です.

図1 XBee モジュールの外観
(Digi International製 XBee Znet2.5)

図2 無線センサシステムとしてのXBee デバイスの利用例.左: パソコンにUSB 接続するホストデバイス,右:無線センサとして利用するXBee デバイス.

図3 XBee Serverの外観.(左: 無接続状態,右: XBeeデバイス* 1を自動認識した状態)
図4 実験住宅OchaHouseへのXBeeセンサモジュールの設置例.(左: 設置の様子,右: 検出範囲)



◆ダウンロード

  • XBeeServer.zip
    Windows用の実行ファイルです.事前に.Net Framework2.0以上をインストールしておく必要があります.詳しくは下記のインストールを参照してください.
  • XBeeServerSource.zip
    ソースコードです.Visual Studio .NET 2008 を用いて,C#で書かれています.
  • 感想・要望などは下記メールアドレスまでご連絡ください.

X-CTU
Xbeeモジュールのファームウェアを書き換えるために必要なソフトウェアです. 上記サイトに接続できない場合は,こちらからもダウンロード可能です.

◆ライセンス

プログラムのソースコードは修正済みBSDライセンスに従って配布します.完全に無保証です.

◆インストール

XBeeServerを実行する前に,Microsoft .NET Framework再頒布パッケージ (23.7 MB) をインストールしておく必要があります. また,下記,XBeeデバイスの初期設定に従って,XBeeデバイスの設定してください.

これらのインストールが完了後,XBeeServer.zipを解凍し,XBeeServer.exeをダブルクリックすればプログラムが起動します.




XBeeデバイスの初期設定
XBeeServerを利用する前に,上述のX-CTUを用いて特定のファームウェアをXBeeデバイスに書き込んでおく必要があります.ここでは,基本的なX-CTUの使い方と,XBeeデバイスの初期設定について詳しく説明します.
0. XBeeデバイスの入手

まず,XBeeデバイスの入手について説明します.XBeeデバイスには,大きく分けて「802.15.4モジュール(Series 1)」と「ZNet2.5モジュール(Series 2)」 の2種類が存在します(※).後者は,ZigBeeと同様のメッシュ型ネットワークに対応しており,各モジュールがルーター(中継器)としての役割も果たすことで,広範囲の通信を行えることが特徴です.現時点では,XBeeServerは 「ZNet2.5モジュール(Series 2)」 のみに対応しています.

「XBee ZNet2.5モジュール(Series 2)」は,SparkFun(Chip Antenna/Wire Antenna)や,国内代理店であるスイッチサイエンス(Chip Antenna)から3000円弱で購入できます(2010年6月現在).XBeeServerを利用するためには,ホスト側/センサ側に最低1台ずつ,2台以上のXBeeデバイスが必要になります.

※現在は,ZigBee規格に完全対応した「ZBモジュール」が販売されています.これは,ハードウェア的には「ZNet2.5モジュール」と同一であり,ファームウェアの書き換えにより互換性があるようです.

1. XBeeの接続とX-CTUの起動

まず,ファームウェアを書き換えたいXBeeデバイスをパソコンに接続します.XBeeを評価キットとして購入した場合は,図5に示すような付属ボードを用いてパソコンに接続します.XBee単体で購入した場合は,図2 左に示すようなXBee Explorer USB (Sparkfun/スイッチサイエンス)を利用すると簡単です.

XBeeデバイスの接続が完了したら,X-CTUを起動します.図6にX-CTU起動直後のスクリーンショットを示します.

図5 XBee評価キットの付属基板

図6 X-CTUのスクリーンショット

2. ポートの設定

まず,提示されているリストから「USB Serial Port (COM[xx])」を選択します(図7).※[xx]には環境によって異なる数字が含まれます.

次に,画面中央部のチェックボックス「Enable API」の状態を確認します(図8).このチェックボックスは,XBeeに書き込まれたファームウェアに応じて選択/非選択を変更する必要があります.一般に,初期状態ではチェックを外し,下記で説明するファームウェアを一度でも書き込んだ後はチェックをつける必要があります.

最後に,XBeeデバイスとの接続状況を確認するために,「Test/Query」ボタンを押します(図9).接続に成功した場合は,「Modem type」「Modem firmware version」がそれぞれ返されます(図10).これらの値が正常に取得できない場合,XBeeデバイスを再起動(UBケーブルを抜き差し)したり,上記設定項目を確認してやり直してください.

図7 ポートの選択 図8 APIモードの選択
図9 デバイスとの接続テスト 図10 接続テストの成功例

3. ホスト側デバイスの設定

ここでは,パソコンにUSB経由で接続するホスト側(Coordinator)のファームウェアの書込方法について説明します.まず,画面最上部のタブ「Modem Configuration」をクリックします(図11).

次に,Loadボタンをクリックし,ホスト側設定ファイル「coordinator.pro」を読み込みます(図12).ファイルは左記リンクからダウンロードするか,XBeeServerの実行ファイルの「firmware」フォルダを参照してください.読込が成功すると,「Modem: XB24-B」「Fuction Set: Znet2.5 Coordinator API」と表示されます(図13).

次に,Networking→PAN IDを任意の数字(1〜255)に変更します(図14).基本的には,ホスト側/センサ側のPAN IDを同一にすればよいのですが,複数のXBeeネットワークが存在する場合,重複しない値を選択する必要があります.

最後に,画面左上の「Write」ボタンを押すことで,ファームウェアの書込を実行します.


図11 Modem Configurationタブ 図12 設定ファイルのロード

図13 ホスト側デバイス用設定の読込完了 図14 PAN IDの設定
4. センサ側デバイスの設定

ここでは,センサ側に接続するXBeeデバイス(End Device)のファームウェアの書込方法について説明します.まず,XBeeデバイスを差し替えて上記1〜2の初期設定を行った後,画面最上部のタブ「Mdem Configuration」をクリックします.

次に,Loadボタンをクリックし,センサ側設定ファイル「enddevice.pro」を読み込みます(図15).ファイルは左記リンクからダウンロードするか,XBeeServerの実行ファイルの「firmware」フォルダを参照してください.読込が成功すると,「Modem: XB24-B」「Fuction Set: :Znet2.5 Router/End Device API」と表示されます(図16).

次に,数カ所の設定を変更します.最低限変更する必要がある箇所は,「PAN ID」「I/O Sampling rate」「I/O Port Settings」の3点です.
「Networking→PAN ID」は,ホスト側と同一の任意の数字(1〜255)に変更します(図17).
「I/O Sampling→I/O Sampling rate」は,センサ側デバイスからのデータの送信間隔を示し,1msec〜65535msec (約66秒)の範囲で指定出来ます.今回の設定ファイルでは,500msecとしてあります(図18).
「I/O Port Settings」は,センサ側デバイスのI/Oポートの設定を示し,主に「Disabled(無効)」「ADC(アナログ入力)」 「DI(デジタル入力)」のいずれかを選択します(図19). 今回の設定ファイルのデフォルト値では,D0〜3をADCに, D4〜7と12をDIとしてあります.


図15 設定ファイルのロード 図16 センサ側デバイス用設定の読込完了

図17 PAN IDの設定 図18 I/O Sample Rateの設定
図19 I/Oポートの設定.

 


◆使い方

1. 初期設定

まず,画面右下の「アドレス指定」コンボボックスから,XBeeデバイスの指定に用いるアドレスを「シリアル番号」「ネットワークアドレス」のいずれかから選択します.ネットワークアドレスの方が短く扱いやすいのですが,センサ側デバイスのファームウェアを更新する際に書き換わってしまう可能性があるため,「シリアル番号」を用いることも可能です.

ポート設定の変更も監視するをチェックしておくと,XBeeServerが起動中にセンサ側のファームウェアが書き換えられ,I/Oポートの設定に変更があった場合に,デバイスのGUIの状態を動的に変化させることができます.特に不具合がなければ,チェックを入れたままで構いません.

-
2. 接続

ホスト側のXBeeデバイスの接続されたシリアルポートを選択した上で,フォーム下部の「接続」ボタンを押すと接続を開始します.終了時には「停止」をクリックします.シリアルポートの確認は,WindowsXPの場合,コントロールパネル→システム→ハードウェア→デバイスマネージャ→ポートから行えます.あるいは,前述したX-CTUで確認することも可能です.

「自動的に接続する」チェックボックスをチェックしておくと,次回以降XBeeServerを起動した際に,同一のシリアルポートに自動的に接続を試みます.

-

3. デバイスの追加/更新

新規にセンサ側のXBeeデバイスからデータを受信すると,XBeeServerは自動的に以下のようなGUIを追加し,各デバイスのアドレス/デジタル入力/アナログ入力の状態を手軽に確認することが出来ます.既に追加済みのXBeeデバイスからデータを受信した場合は,デジタル入力/アナログ入力の状態を更新します.

-

◇その他の使い方
ネットワーク経由の使い方はMobiServerのページや以下の通信仕様を参考にしてください.

◆通信仕様

ここでは,基本的な通信仕様について説明します.

基本的なコマンド構成

XBeeServerの各コマンドの,基本的な構成は,以下のようになります.

Xbee,<CommandType>,<Address>,[,...]

  • <CommandType>は以下の2種類
    • Attach
    • In
  • <Address>はXBeeServerの設定に応じて,「シリアル番号」「ネットワークアドレス」のいずれか.

XBeeServer→クライアント
  • Xbee,Attach,<Address>
    • Xbeeデバイス<Address>が新規に接続された.
    • e.g.) Xbee,Attach,13A20040522A1D
         Xbee,Attach,45FF
  • Xbee,In,<Address>,Digital,<Port>,<Data>
    • Xbeeデバイス<Address>のデジタル入力<Port>が<Data>に更新された.
      ※<Port>は1〜12の整数.<Data>は0 or 1の整数.
    • e.g.) Xbee,In,45FF,Digital,12,1
         Xbee,In,45FF,Digital,12,0
  • Xbee,In,<Address>,Analog,<Port>,<Data>
    • Xbeeデバイス<Address>のアナログ入力<Port>が<Data>に更新された.
      ※<Port>は0〜3の整数.<Data>は0〜1023の整数.
    • e.g.) Xbee,In,45FF,Analog,3,547
         Xbee,In,45FF,Analog,0,129
※その他の仕様(参考)

その他の基本仕様は以下のようになります.(全てのMobiServerに共通です.)

  • 送受信文字列は全てASCIIテキスト形式.
  • コマンドは「デリミタ」で指定した行区切り子("\r\n","\r","\n","\0")のいずれかで区切られる.
  • コマンド内の各要素は指定した項目区切り子(",", "\t")のいずれか で区切られる.



◆参考URL


[MobiServer]