ZigBeeは、2.4GHz帯で通信するための通信規格の1つです。IEEE802.15.4で規定されていて待機時の消費電力が極めて引くのが特徴です。
例えば今回使用するものだと送信で45mA、受信で50mAくらいですが、パワーダウン電流は10μA以下と極めて消費電力が低いスペックとなっています。また待機時からの復帰時間も短時間で復帰します。
送受信時の消費電力からいえばBluetooth Low Energyの方が省電力なのですが、このパワーダウン時の消費電力と復帰時間の短さにより、普段はパワーダウンさせておき送受信時の短時間だけ立ち上げることでトータル消費電力を抑えることができます。
ZigBeeはBluetoothよりも使用帯域が狭く同時に65535個まで接続できるように仕様策定されています。これは電波の届く範囲に65535個のZigBeeが同時に存在しても混信などの問題が行い事が保証されているという風に差し支えありません。これはWiFiの最大32個、Bluetoothの最大7個という同時接続数に比べると文字通り桁違いに大きな数値です。
このようにZigBeeは多数のセンサーからのデータを定期的に送るようなシステムで省電力で同時接続な接続方法として有益なものになります。
ZigBeeネットワークの構築
ZigBeeにはMACアドレスに相当する8バイトの個別IDが割り振られています。
そして同一のPAN IDが設定されたモジュール同士を同一グループとしてネットワークが構築されます。
ZigBeeネットワークには、1台のCoordinator APIと複数台のRouterで構成されます。通常、親機であるCoordinator APIをPCに接続し、センサー側にRouterを使用します。
XBee
ZigBee規格の通信モジュールとして有名なものにDigi社のXBeeです。
ZigBeeの実装モジュールですからXBeeにもCoordinator APIとRouterの設定ができます。デフォルトはRouter ATといって、ATコマンドを使ってまるでモデムを扱っているような感じでRouter機能を使えるモードになっています。
Zigbeeでは2台であればRourterモードでお互いのアドレスを指定することPoint to Pointで双方向通信できるのでこのデフォルト設定は非常に使いやすいといえるでしょう。
今回使用するXBeeでは、リソース的に複数のモードをボードに実装できないのでRouter ATモード以外にするときにはモードにあったファームウエアに置き換えます。組込みになれていないとなかなか大胆なモード切替ですごく新鮮です。
今回使用するXBeeはZBタイプのものであり、これはXBeeシリーズ2規格に基づいたボードになります。
XBeeのアンテナの種類
XBeeを買おうと思うととても悩むのがアンテナの種類が4種類もある点です。
特徴 | 備考 | |
ワイヤアンテナ | 一番一般的な無指向性アンテナのモデル | ワイヤ部分のスペースが必要 ワイヤ部分が物理的に壊れる |
チップアンテナ | チップ型のアンテナなので見た目アンテナがないようにみえる アンテナスペースがいらない |
ハート形の指向性を持っているので向きによって電波感度が弱くなってしまう。 |
PCBアンテナ | ボード上にプリントされたアンテナ。 チップアンテナと同様にスペースがいらない 製造コストがチップアンテナより安い |
アンテナに指向性があるので向きによって電波感度にばらつきが出る |
外部アンテナ U.FLコネクタ RPSMAコネクタ |
接続ケーブルにより別のアンテナをとりつけるときに使用。 アンテナにより指向性などの特徴も出せる |
アンテナ設置スペースや別途アンテナ購入コストが必要 |
それぞれのアンテナの特徴からわかるようにスペースが許すならばワイヤアンテナが一番いいでしょう。少しでも省スペースにしたいのであればPCBアンテナがよさそうです
XBeeの設定ソフトX-CTUをダウンロード
XBeeの1台をCoordinator APIにするためにはXBee設定ソフトX-CTUを使用します。
X-CTUは以下からダウンロード可能です。
http://www.digi.com/support/productdetail?pid=3352&type=utilities
ただし最新のX-CTU 6でファームウェアをデフォルトのRouter ATからCoordinator APIに差し替える方法が分かりませんでしたので、そこだけは旧版のX-CTU 5で実施しました。
X-CTUでXBeeを設定
XBeeをPCに接続するには、XBee USBアダプターを使用します。
XBeeを載せてからアダプタ⇒PCの順にUSBを接続します
X-CTUを起動したら「Discover device」アイコンをクリックしてみましょう。
するとシリアルポート3に接続されたXBeeが発見できます。
設定値は既定のままでよいでしょう。
Finishボタンをクリックすれば各種必要なものがローディングされます。
ローディング完了したら[Add selected device]ボタンをクリックしましょう。
無事1モジュール登録が終わりました。
デフォルトのPAN IDは一律0が設定されています。これでは他の利用者のZigBeeネットワークに入ってしまうので、他の値に変更しておきます。
変更が終わったら一番右の赤色のペンマークを押してモジュールに設定値を書き込みます。
USBアダプタが2つあると話が早く、片方をCoordinator AT、もう一方をデフォルトのRouter ATに設定しておきます。また、DHやDLにはお互いのアドレスを設定しておきます。
こうしておくと相互にデータ送信の確認がとれます。
両方ともにATだとこの辺の扱いがとても楽ですね。
APIモード
次にCoordinatorとRouteを両方ともにAPIにして、DHやDLに入っているお互いのアドレスを0にします。
特にRouterを複数台接続するような場合、Coordinatorは必ずAPIモード(APIモード2)でなければなりません。
当初、思い描いていたZigBeeネットワークに近いかたちになりました。
なお、この例ではRouter APIに設定しましたが、Router側はATでもCoordinator APIには接続可能です。
通常、Router側でAPIによる制御が必要になる場合はほぼないので、Router ATに設定してRouter側アプリのコードをシンプルにするのがいいでしょう。