このページではXBee ZigBee を使ってセンサネットワークを構築する手順を説明します。さっそく、ネットワーク構築に着手してみましょう。
ここではZigBeeセンサーネットワークを構成するためのハードウェア製作について説明します。下図はPCと親機XBee、子機XBeeの接続をイメージした図です。PCに接続された親機が子機のLEDの点灯を制御したり、子機のスイッチやセンサの入力をPCへ入力したりすることが出来るようになります。
親機には前述の「基本編-ワイヤレス通信を始めよう」のようにUSBエクスプローラを使用してPCに接続します。
子機については実験の内容に合わせて必要な回路を製作します。とはいっても通常のブレッドボードやユニバーサル基板の穴ピッチは2.54mmなのに対してXBeeは2.0mmピッチなので、直接の実装が出来ません。そこで、下図のようなXBee用ピッチ変換基板が必要になります。
以下に代表的な子機XBeeセンサーの回路図の一例を示します。AD1〜AD3にセンサーもしくはスイッチを接続します。アナログ入力の場合は0〜1.2Vの電圧を入力します。デジタル入力の場合は0Vから電源電圧Vccまでの電圧が入力可能です。XBee内部でプルアップすることも可能なのでスイッチの場合はGNDに対して接続します。
もしくは純正の市販品を購入することで製作の手間を省くことも出来ます。
注意:XBeeモジュールを買った状態の場合や、すでに「Coordinator AT」に設定されている場合など、多くの場合に以下の手順で「Coordinator API」に設定変更する必要があります。
XBeeモジュールでネットワークを構築するには、少なくとも2台のXBeeモジュールが必要で、ネットワーク内には1台の「Coordinator API(親機)」が必要です。購入した時点では「Router」と呼ばれる「子機」に設定されているので、1台を「親機」に設定しなければなりません。
XBeeモジュールを設定するために、DigiのホームページからX-CTUというソフトウェアをダウンロードします。下記のリンクで「Diagnostice, Utilities and MIBs」の項目をクリックすると「XCTU xxxx installer」が現れますので、そちらからダウンロードしてインストールします。
Next Generation XCTUとLegacy XCTUがありますが、ここでは「Legacy XCTU(XCTU ver. 5.2.8.6)」を用いて説明します。
X-CTUを起動し、「PC-Settings」タブ内でXBeeモジュールを接続したCOMポートを選択します。なお、「XBee-Fly USB」はファームウェアのアップデートには使用できないので、その他の接続手段を使用します。
次に「Modem Configuration」のタブで「Read」をクリックしてXBeeモジュールの設定値を表示します。
上図のファームウェアの種類「Function Set」をプルダウンして「ZIGBEE COORDINATOR API」を選択します。ここでは語尾に「API」のついたCoordinatorを選択してください。
最後に「Write」で書き込みます。「子機」に戻したい場合は「ZIGBEE ROUTER AT」を選択して書き込みます。
ファームウェアの種類に「AT」のつくものと「API」のつくものがあります。「AT」のつくものを使用するとX-CTUの「Terminal」からATコマンドを入力することが出来ますが、親機としては機能が不十分です。したがって、親機には「API」を使用します。
「API」の欠点はATコマンドのように簡単には扱えない点ですが、当サイトで配布している「オリジナル XBee 管理用ライブラリ ZB Coordinator API」を使用することで親機から子機を簡単に制御するプログラムを作成できます。
当サイトで配布している「XBee 管理用ライブラリ ZB Coordinator APIソフトウェア」を使用することで、「API」モードのXBeeを簡単に取り扱うことが可能になります。本ライブラリは2009年11月から開発をはじめ、2010年8月にH8 Tinyマイコン用としてリリースしました。その後、より高機能なPCやライブラリの豊富なArduinoでも動作するように開発しており、現在はH8/PC/Arduinoの3つのプラットフォームで使っていただくことが可能です。ここでは動作確認を行うのに手ごろなPCで動作させる手順を説明します。
まずは開発環境であるCygwinをインストールします。下記から「setup.exe」をダウンロードしてとインストールします。「setup.exe」には開発環境本体ソフトウェアは含まれておりません。起動後にインストールする内容などの選択してダウンロードする必要があります。なお、詳細なインストール方法は「cygwin_install.pdf」に記載しています。
「setup.exe」を起動後、下表の手順に従ってインストールします。ダウンロード元として「.jp」で終わる国内サイトを選びます。インストール内容の選択では、必ず「Devel」内の「gcc」と「make」を選択してインストールしてください。これらが含まれていないと、コンパイルが出来ません。
手順
画面表示
| 内容
| 選択
| 1
| Choose Installation Type
| インストール方法
| from Internet
| 2
| Choose Installation Directory
| インストール先
| C:\cygwin
| 3
| Select Local Packege Directory
| ダウンロード時の保存先
| C:\Documents and Settings\xxxxx\デスクトップ
| 4
| Select Connection Type
| インターネット接続方法
| Direct Connection
| 5
| Choose Download Sites
| ダウンロード元
| ftp://xxxxx.ac.jp
| 6
| Select Packages
| インストールする内容
| Devel/gcc-core
| Devel/make
| |
インストール後にCygwinを起動するとMS-DOSコマンドプロンプトに似たようなコンソール画面が表示されます。ここで「pwd」と文字を入力し、その後に「Enter」を入力すると「/home/xxxx」といった具合に現在のディレクトリが表示されます。この場合、Windowsのディレクトリ(フォルダ)は「c:\cygwin\home\xxxx」になります。
ここに一例として「xbee」というフォルダを作成します。コンソールから「mkdir xbee」と入力すればディレクトリ(フォルダ)が作成でき、「cd xbee」入力でxbeeフォルダへ移動します。
$ boku@pc ~ $ pwd $ /home/boku $ boku@pc ~ $ mkdir xbee $ boku@pc ~ $ cd xbee $ boku@pc ~/xbee 〜ここで、xbeeフォルダへダウンロードしたファイルをコピーする〜 $ boku@pc ~/xbee $ ls -F cqpub/ examples_wifi/ README.txt examples/ libs/ tools/ examples_h8/ Makefile xbee_arduino/ $ boku@pc ~/xbee $ make gcc -Wall examples/sample01_led.c -o examples/sample01_led gcc -Wall examples/sample02_sw.c -o examples/sample02_sw gcc -Wall examples/sample03_add.c -o examples/sample03_add … $ boku@pc ~/xbee $ examples/sample01_led 3 |
次に、当サイトで配布している「XBee 管理用ライブラリ ZB Coordinator APIソフトウェア」をダウンロードして、先ほどのxbeeフォルダへZIPを展開したファイルをコピーます。コンソールでxbeeディレクトリ内で「make」と入力するとコンパイルが実行されます。例えばサンプルソフトは「examples」フォルダにツール類は「tools」フォルダに格納されます。
サンプルを実行するには、コンソールのxbeeディレクトリにて「examples/sample01_led 3」のように入力します。
$ examples/sample01_led 3 |
最後の数字の3はCOMポート番号をあらわしており、コマンドと数字の間にはスペースが必要です。COMポートは1〜64が設定可能です。親機のXBeeモジュールがCOMポート番号65以上になってしまっている場合やCOMポートの設定方法は、「Windows シリアルへの接続とCOMポート割り当ての変更方法」を参照してください。
項目
設定内容
| 通信ポート番号
| COM1〜COM64
| ビット/秒(ボーレート)
| 9600(bps)
| データビット
| 8(bits)
| パリティ
| なし
| ストップビット
| 1(bit)
| フロー制御
| なし
| |
サンプルプログラムによってはソースコード内のZigBee IEEEアドレスの書き換えなどが必要です。IEEEアドレスは一つ一つのZigBeeモジュールにつけられた16桁の16進数で、ZigBeeモジュールの背面に2行にわたって表示されています。
サンプルプログラムには子機のIEEEアドレスを設定するプログラムと、プログラムの中でペアリングを行うものがあります。sample1_led.cは前者なので以下の部分に子機のIEEEアドレスを記述してコンパイルしなおします。このサンプルの説明は次ページ「XBee ZigBeeを使ったプログラムを作ってみよう」を参照してください。
// ↓お手持ちのXBeeモジュールのIEEEアドレスに変更する byte dev_gpio[] = {0x00,0x13,0xA2,0x00,0x00,0x00,0x00,0x00}; // PIO デバイス |
また、プログラム内でペアリングを実施していないプログラムの場合は、実行前にペアリングを行っておく必要があります。ペアリングは親機と子機の電源を入れて、どちらか片方の参加設定(COMISSION)ボタンを押します。なかなかペアリングできない場合は、親機の電源を入れなおしてみたり、子機の参加設定ボタンを4回続けて押して子機のネットワーク設定を初期化してから再度ペアリングを試みます。
次はサンプルプログラムの説明です