ボクにもわかるZigBee方式 - XBee
(ボクにもわかる地上デジタル 地デジ方式編)


ZigBee XBeeモジュールの例
ZigBee XBeeモジュールの一例

当ページについて

 当サイトではDigi社のXBeeを使ったZigBeeネットワークを自力で構築するための情報を公開しています。当ページはその概要となる情報を紹介しています。XBeeに関して個別の情報をご覧になりたい方は下記のXBee Main MENU ページに移動してください。

XBeeに関する目次はこちら:XBee Main MENUページへ戻る

目次

  • XBee Main MENUページ(別のMENUページに移動します)
  • ZigBeeとは

     ZigBeeとはZigBeeアライアンスが定めた無線通信方式の規格です。主に以下のような特徴があります。

    ZigBee方式の概要
    仕様 ZigBee
    近距離通信 約40m(Digi社 XBee ZBの屋内通信距離)
    低消費電力 電池2本で最大2年(ZigBee SIG目標値)
    低コスト LSI単価で$2(ZigBee SIG目標値)

     ZigBeeには3種類の機器(Device Type)があります。中でも特徴的なのが「ZigBee Router」と呼ばれる「フル機能デバイス」による通信の中継と、低消費電力で動作可能な「ZigBee End Device」です。「ZigBee Router」は「ZigBee End Device」に情報を中継する際に、情報を一時的にバッファとして保存します。保存した情報は、「ZigBee End Device」が通信可能な状態になってから伝達します。このため、「ZigBee Router」の傘下の「ZigBee End Device」は、常時通信が不要となり、通信を行っていない間は動作を停止することが出来るようになります。したがって、「ZigBee End Device」は必要な時以外の通信を行わないため、長時間にわたって平均した消費電力を著しく削減できるので、バッテリーによる駆動が可能となっています(詳細=スリープ方法)。
     「ZigBee Coordinator」は、一つのネットワーク(PAN)に必ず1台が存在し、ネットワークを構築する機能を有する唯一の機器です。また、「ZigBee Router」の機能も備えています。

    3種類のZigBeeデバイス
    デバイスタイプ 役割
    正式名 和名
    Coordinator PANコーディネータ ネットワーク親機
    Router フル機能デバイス フル機能子機
    End Device サブデバイス 省電力子機

    ZigBee PROとは / ZigBee 2007とは

     ZigBeeは2004年12月にZigBee 2004(Ver 1.0)仕様として仕様策定され、2006年12月にZigBee 2006、そして2007年10月にZigBee 2007/PROが策定されました。
     ZigBee 2006ではZCL(ZigBee Cluster Library クラスタライブラリ)がサポートされました。ZCLは、例えば照明をOn/Offするといった基本アプリケーションを実現するための標準ライブラリです。ZCLを持たないZigBee 2004とは互換性がありません。
     ZigBee 2007ではZigBee PROがサポートされました。PROでは通信の信頼性や効率性、秘匿性などを2006よりも向上させています。
     現在のところ、単にZigBeeと呼ぶとZigBee 2007で定義されたZigBee PRO仕様であることが多いようですので、当サイトでも単にZigBeeと記載したものはZigBee PROを指すものとします。

    ZigBee PRO登場までの流れ
    策定 規格名 ZCL PRO
    2004年12月 ZigBee 1.0 - -
    2006年12月 ZigBee 2006 -
    2007年10月 ZigBee 2007

    ZigBee プロファイルとは / ZigBee profiles

     ZigBeeにはプロファイルという概念があります。前述のZCLは基本アプリケーションを実現するための標準ライブラリでした。こういったZCLを集めて、より大きなアプリケーションを実現するための仕様がプロファイルです。したがって、プロファイルには、使用するZCLやZCLの使い方が規定されています。
     ZigBeeアライアンスは、以下の一例をはじめ、様々なZigBeeプロファイル仕様を策定中です。

    ZigBee プロファイルの一例
    プロファイル ID 要件
    PRO/ZCL RF4CE
    ZigBee Home Automation 0x0104 -
    ZigBee Building Automation 0x0105 -
    ZigBee Smart Energy 0x0109 -
    ZigBee Remote Control / CERC 非PRO -

    ZigBee仕様書

     ZigBee仕様書はZigBee Allianceのサイトからダウンロードできますが、ページ数が多くて難解です。ZigBee仕様の要点については、Digi社のZigBeeモジュールの仕様書に分かりやすく簡潔にまとめられています。20ページくらいしかないので、まずは、そちらを読むのが良いと思います。(製品を購入しなくてもダウンロードできます)

    ZigBee製品の購入

     ここでは、Digi社のZigBeeモジュールであるXBee ZB (Series 2) 製品について説明します。XBee ZBはEmber社(現Silicon Labs)のZigBeeチップEM250とZigBeeプロトコルスタックZNetを搭載した通信モジュールです。XBeeシリーズの中には「Series 1」や「802.15.4/DigiMesh」と書かれているZigBeeに対応していない製品もあります。ZigBee対応のXBeeは、ZigBee(ZB)やSeries 2(S2)と併記されています。
     また、無線部の出力(と感度)の高いXBee PRO ZBというモジュールもあります。PROではないXBee ZBであっても、ZigBee規格のZigBee PROに対応していますので、XBee ZBのPROとPROで無いものの違いは無線性能のみです。但し、出力の違いから電源電圧や消費電流が異なりますので、必ずしもPROが良いというわけではありません。概ね、ACアダプタやUSB給電で動作する親機(Coordinator)や中継器(Router)にはXBee PROを、電池で動作する子機(End Device)にはPROではないXBeeを用います。
     XBee ZBは国内の電波法に従ったTELEC認証済みのアンテナ込みの通信モジュールになっています。なので日本国内で通信の実験を合法的に行うことが出来ます。(TELEC認証が無い製品だと国内での実験が行えません)

    ZigBeeゲートウェイの例
    Digi社 ZigBee ゲートウェイ XBee ZB CONNECT PORT X4

    意外と難しいスタータキット

     Digi社のZigBeeモジュールの開発用スタータキットは同社の日本語サイトで購入できます(2009年10月現在)。注意点は、ほとんどのドキュメントが英文であること、親機(ゲートウェイ)のプログラム言語にPythonを使用するのでLinuxやCygwinなどのUNIXの知識、ネットワークに関する知識などが必要なことなどです。
     高校生レベルの英語の理解力があり、基本的なUNIXコマンドを知っていて、ネットワークの設定を行ったことがあれば、なんとかなるレベルではありますが、習得にはそれなりの時間がかかります。

    電子工作の経験者ならXBeeモジュール単品の購入がお奨め

     一方、Starter Kit ZBの親機を使わなくても、2台以上のXBee ZBモジュール単品を入手すればZigBeeの実験が可能です。XBeeモジュール単品は同社のサイトからは購入できませんが、最近は電子パーツ店でも市販されるようになりました。したがって、UNIX等のソフトウェア関連の知識が少なくてPythonの敷居が高く感じられている方は、XBeeモジュール単品を購入する方が良いでしょう。もちろん、Arduino用XBeeモジュールについても、802.15.4のタイプとZigBee対応のタイプがあるので、ZigBeeを使いたい場合はZigBee(ZB)や、Series 2(S2)の表示のあるものを選択します。
     ただし、XBeeモジュールは電子パーツです。これだけでは動きません。ユニバーサル基板にも挿さらないし、電源回路やシリアル通信などの周辺回路も必要です。電子工作やハンダ付けの苦手な方は開発用スタータキットの方が良いでしょう。

    ピンピッチが特殊な2mm間隔

     Digi社のZigBeeモジュール接続用のピンヘッダはピッチが2mm間隔の特殊なコネクタになっています。通常の2.54mmピッチのユニバーサル基板やピンヘッダに取り付けるには「XBeeピッチ変換基板」などによる変換が必要です。こちらも、Arduino向けに販売されています。ピンソケット込みで315円〜500円程度です。秋月電子通商やArduinoを扱っているスイッチサイエンス社や若松通商、Strawberry Linuxなどから購入できます。

    ZigBeeモジュールの例
    Digi社 ZigBee モジュール XBee ZB(ZigBee)とコネクタ変換基板

     もしくは、2mmピッチのユニバーサル基板、2mmピッチのピンソケット、L型ピンヘッダを使用することで、1組み107円〜190円までの部品代で製作することが出来ます。
     下図は完成したピッチ変換基板にXBeeモジュールを搭載した例です。詳しい製作方法は下図の下方にあるリンクを参照ください。

    ZigBeeモジュールのピッチ変換基板ZigBeeモジュールの例
    自作のピッチ変換基板とXBeeモジュール

    ZigBee XBeeモジュール 2.0mm 2.54mm ピッチ変換基板 http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-pcb.html


    XBeeの設定などのためにパソコンに接続

     XBeeモジュールの設定などを行うためにはパソコンに接続する必要があります。その場合、秋月のAE-UM232Rなどを使用してXBeeのシリアルをUSBに変換する必要があります。AE-UM232Rは後述のXBee-Fly USB の製作でもAVRライタとして使えます。

    AE-UM232RでXBeeをパソコンに接続する
    AE-UM232RでXBeeをパソコンに接続する

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-tutorial_0.html
    XBeeをパソコンに接続する方法

    もっと安価にパソコンと接続する

     より安価にXBeeをパソコンのUSBに接続したい場合はXBee USB変換基板が便利です。下図は完成したUSB変換基板にXBeeモジュールを搭載した例です。ただし、XBeeのファームウェアの書き込みができないのと、製作に使用するAVRマイコンへのソフト書き込みにAE-UM232Rが必要なので、少なくとも、1台はAE-UM232Rを購入しておく必要があります。詳しい製作方法は下図の下方にあるリンクを参照ください。

    ZigBeeモジュールの例
    自作のUSB変換基板とXBeeモジュール

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-usb.html
    XBee USB変換基板の製作方法

    XBee(ZB=ZigBee)製品用ソフトウェアのインストール

     XBee(ZB=ZigBee)製品を扱うためには、Digi社から提供されているX-CTUを使用します。X-CTUはXBeeモジュール(ZB)とシリアル通信を行い、飛距離のテストやファームウェアやパラメータの変更や更新を行うためのWindows用のソフトウェアで、同社のサイトからダウンロードして使用します。前述のデバイスタイプの変更もX-CTUのファームウェア更新機能を使用します。詳しい設定方法は下記のリンクを参照ください。

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-tutorial_0.html
    X-CTUでのXBee設定方法

    XBeeスタータキットを使用する場合

     親機ConnectPort(ゲートウェイ)上でアプリケーションを作成する場合は、Pythonと呼ばれるプログラム言語の開発環境が必要です。Windows用ではCygwinが便利です。CygwinへのPythonのインストール方法については、Digi社の説明書に書かれていません(2009年10月現在)ので簡単に説明します。
     まず、Cygwinをインストールします。カスタムインストールを選択し、Devel内のgccとmakeを追加します。次に、Python 2.4と、Zipライブラリのzlibをダウンロードします。Pythonは2.4シリーズはPythonのホームページから2.4.6がダウンロードできます。これらをCygwinでコンパイルしてインストールするのですが、Pythonからzlibが共有できずに苦労するかもしれません。不安な方は、こちら(Pythonインストール手順)を参照してください。
     親機ConnectPortは、傘下のXBeeデバイス(ZB)の設定を行うことも可能です。パソコンのWebブラウザからLANとConnectPortを経由して、ConnectPort傘下の各XBeeデバイス(ZB)の設定を変更することが出来ます。他にもループバックなどのテストを行う場合のリファレンス機にするなどと、ゲートウェイ上でアプリケーション開発をしなくてもそれなりに重宝します。

    XBeeモジュールとマイコン等との接続回路

     XBeeモジュールとマイコン等との接続回路が必要です。また、XBeeモジュール(ZB)の5番ピンのRESET入力と20番ピンのAD0入力をGNDに接続するためのプッシュスイッチや、13番ピンのON端子と15番ピンのASCにLED(1kΩ抵抗を経由してGNDへ)があると便利です。これらは、X-CTUのファームウェア更新などでリセットをかける場合があるのと、ネットワークへの参加や解除を行ったり、参加状況や動作状況やなどを確認するためです。

    XBee(ZB)端子
    (20pin 2mm)
    接続方法 役割
    RESET (5) プッシュスイッチ(対GND) 更新時などのリセット
    ON (13) LEDと直列1kΩ抵抗(対GND) 動作状況
    ASC (15) LEDと直列1kΩ抵抗(対GND) ネットワーク参加状況
    AD0 (20) プッシュスイッチ(対GND) ネットワーク参加設定

     下図は、シリアル端子(RS-232C端子)をクロスケーブルで接続するタイプのXBeeテストボードの製作例です。シリアル端子にはDサブ9ピンのオスを用いています。秋月電子製のH8 Tiny I/O BOAD TERA2やAKI-H8/3664BPとの接続の際にケーブルを使用せずに直接接続できるようにしています。したがって、パソコンとの接続にはクロスケーブルが必要になります。より詳しくは下図の下方にあるリンクを参照ください。

    XBeeボードの製作例
    XBeeテストボードとH8 Tiny I/O BOAD TERA2(組立例)

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-rs232c.html
    XBee ZigBee RS-232CやUSB によるPCとの接続

     既にRS-232Cを持つPCは減ってきておりUSBがその役割に変わりつつあります。秋月のAE-UM232Rに使用されているFTDI Chip社のUSB-Serial変換チップFT232RLを使うと下図のようなボードを製作することもできます。

    XBee End Deviceボードの製作例
    XBee End Deviceボードの製作例 http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-rs232c.html
    XBee ZigBee RS-232CやUSB によるPCとの接続

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-usb.html
    XBee USB変換基板の製作方法

     製作例ではラトルズ出版の「プリント基板で作るPIC応用装置()」に付属しているFT232RL基板を使用しました。プリント基板のみ(右側の「No image」)も割安で市販されています。

    プリント基板で作るPIC応用装置
    書籍+基板 基板のみ
    上記の書籍や基板にFT232RL用のプリント基板が含まれています。
    しかし、FT232RLやXBeeといった部品は、一切、含まれてません。

    XBee(ZB=ZigBee)製品を使ったワイヤレスデータ転送

     ワイヤレス通信を行うには、少なくとも、デバイスタイプがCoordinatorのXBee(ZB=ZigBee)製品と、RouterもしくはEnd DeviceのXBee(ZB)製品が必要です。Starter Kit ZBには、ConnectPort(ゲートウェイ)が含まれており、ConnectPortがCoordinatorとなっています。
     XBeeモジュール(ZB)のデバイスタイプ(Coordinator/Router/End Device)を切り替えるには、Digi社のホームページで配布しているX-CTUソフトウェアを使用します。ファームウェアは、モジュールのシリーズ名「XB-24ZB」に続いて、「ZIGBEE COORDINATOR AT」、「ZIGBEE ROUTER AT」、「END DEVICE AT」のように最後に「AT」のついたものを選択します。
     まず、Coordinatorとなるモジュールの電源を入れて、次に、接続したいモジュールの電源を入れてCoordinatorへ参加させます。
     次に、通信したいモジュールをパソコンに接続し、ハイパーターミナルかX-CTUのTerminalモードなどの通信端末を起動します。複数のモジュールを接続している場合は、一つのPCに複数のXBeeモジュール(ZB)を異なるCOMポートに接続して、それぞれのCOMポートに対して複数の通信端末を起動します。希望のポート番号をつける場合は、「COMポートの変更方法」を参照してください。
     ハイパーターミナルを使用する場合は「ポートの設定」を上から順に「9600 8-なし-1-なし」に設定し、ASCII設定で「ASCIIの送信」の「行末に改行文字」と「ローカルエコー」にチェックし、「ASCIIの受信」の「着信データに改行文字」にもチェックをつけます。
     XBeeモジュール(ZB)へのコマンドは、通信端末から「+」キーを3回入力すると、1秒後に続いて「OK」の応答があり、ATコマンド入力モードに切り替わります。但し、初期設定だと10秒後にATコマンドモードが解除されますので、実際のコマンドは速やかに入力しなければなりません。また、「+++」を入力して1秒後の「OK」の応答前にコマンドを入力してしまっても、入力は受け付けずにATコマンドモードが解除されますので、「+++」のあとに、「改行」も入力してはいけません。
     1秒後に「+++」に続いて「OK」が表示されればATコマンドモードに入っていますので、「A」「T」「改行」を入力し「OK」の応答があることを確認します。「AT」は何もしないで「OK」のみを応答するコマンドです。
     「AT」を含むATコマンドは「AT」から始まる命令で、コマンドの語尾には「改行」が必要です。以下、改行については明記しませんが、ATコマンドである場合は語尾に改行を入力してください。

    ネットワーク参加
     各XBeeモジュールを同じネットワークに参加させるための操作が必要です。通常は、電源を入れてAD0(20)に接続したプッシュスイッチを押下するとネットワークが構築されます。
     うまくいかない場合は、まずX-CTUの「Modem Configuration」のリスト中にある「I/O Settings」の「D0」の設定が[1]の「COMMISSIONING BUTTON」になっていることを確認します。ついでに、「D5」も[1]の「ASSOCIATED INDICATOR」であることを確認します。もし、変更していた場合は訂正して「Write」します。
     誤って近所のZigBeeネットワークに参加してしまったり、他のネットワークに参加していたXBeeモジュールの場合は、一度、該当するXBeeモジュールのネットワーク設定をリセットする必要があります。XBeeモジュールの電源が入った状態でAD0(20)に接続したプッシュスイッチを連続で「4回」プッシュします。
     あるいは「ATNJ」でネットワーク参加に時間制限をかけている場合は、制限をかけているXBeeモジュールでプッシュスイッチを連続で「2回」プッシュすると、60秒間の間、ネットワーク参加が許可に設定されます。

    XBeeネットワーク参加プッシュスイッチの操作方法
    プッシュ
    回数
    内容
    1回 ネットワークに参加します。他のXBeeモジュールの
    参加状況LEDが、1秒間、高速に点滅します。
    2回 ネットワーク参加に制限をかけている場合に、60秒
    間、制限を解除します。(≒ATNJ3C+再起動)
    4回 他のネットワークに参加してしまった場合に、ネッ
    トワーク設定を消去します。(≒ATNR)


    ブロードキャスト送信
     ここでは、XBeeモジュール(ZB)からブロードキャストでメッセージを送信する方法について説明します。送信したいXBeeモジュール(ZB)をATコマンドモードに設定して、「ATDH00000000」「ATDL0000FFFF」「ATCN」と入力します。「ATDH」と「ATDL」はあて先を設定するコマンドで、コマンドに続いて8桁の16進数を入力します。上位アドレス「00000000」と下位アドレス「0000FFFF」でブロードキャストを意味しています。また、「ATCN」はATコマンドモードを解除するコマンドです。
     この状態で、テキストを入力すると同じネットワークに参加する全てのXBeeモジュール(ZB)に入力した文字が送信されます。また、受け取ったXBeeデバイスのシリアルポートから出力され、そのシリアルポートが接続されたパソコンの通信端末に表示されます。

    あて先送信
     送信したいXBeeモジュール(ZB)のATコマンドモードで「ATND」と入力します。すると、送信可能な相手のアドレス等の情報が表示されます。但し、全てのXBeeモジュールが同じネットワークに接続されている全てのアドレスが管理されているわけではありません。宛先が表示されない場合は、CoordinatorやRouterといった上位のデバイスタイプのXBeeモジュールで実施します。
     宛先のアドレスが分かれば、「ATDH」と「ATDL」で宛先を設定します。「ATDHxxxxxxxx」「ATDLxxxxxxxx」の「xxxxxxxx」に、それぞれ上位アドレスと下位アドレスを入力します。
     この状態で、テキストを入力すると宛先に指定したXBeeモジュール(ZB)に入力した文字が送信されます。また、受け取ったXBeeデバイスのシリアルポートから出力され、そのシリアルポートが接続されたパソコンの通信端末に表示されます。

    ループバック
     ループバックとは、ある応答用XBeeモジュールで受信したメッセージを、そのまま送信して応答するモードです。ループバックを行うには、XBeeモジュール(ZB)のDOUT(2)端子とDIN(3)端子を直結した応答用XBeeモジュールを準備します。
     パソコンにはメッセージの送信を行う送信用XBeeモジュールのみを接続し、ATコマンドモードで宛先を設定して、前項の「あて先送信」を開始します。その状態でX-CTUの「Range Test」を使用し、応答用XBeeモジュールを送信用XBeeモジュールから遠ざけて行けば、XBeeモジュールの通信可能な距離を評価することが可能です。
     さらに、親機ConnectPortを使えば、より簡単にループバックテストが行えます。送信したい送信用XBeeモジュールをパソコンに接続し、ATコマンドモードで「ATCI12」を入力します。「ATCI」はクラスタIDと呼ばれるZigBee通信の設定で、12はループバックテストを行うためのクラスタです。この状態で前項の「あて先送信」を開始すると、簡単にループバックテストを行うことが出来ます。

    X-CTUでのループバックテスト
    クラスタID=12を使ったループバックテスト

     上図はループバックテストの一例です。初期設定では32バイトの文字が送出されます。濃い青のバーは送信回数に対する誤った回数との比率を示し、赤からオレンジ色のRSSIのバーは受信強度を示しています。受信強度が高いと黄緑色になります。なお、RSSIはATコマンドの「ATDB」で得ています。ATコマンドモードに入るのに1秒を要するので、RSSI表示を行うと約1秒おきにしか実行できません。

    XBee(ZB=ZigBee)のATコマンド

     XBeeのATコマンドでよく使うものをまとめました。+++以外はコマンドのあとにリターン<CR>を入れます。また、引数を与えるときはコマンドに続けて数字(16進数)を入れてからリターン<CR>を入れます。

    XBee ATコマンドリスト(良く使うもの)
    AT 内容
    +++ 1秒後にATコマンドモードに入る。コマンドにCRは不要
    ATCN ATコマンドモードを抜ける。データ転送になる。
    AT 何もしない。正常ならOK応答
    ATNJ ネットワーク参加受付時間[秒]の設定。FFで無制限。
    ATOP PAN ID表示。Coordinatorと同一のPAN IDが表示される
    ATNR ネットワーク設定をリセットしてネットワークの再構築
    ATSH
    ATSL
    自分のアドレスの上位4バイト(8桁の16進数)
    自分のアドレスの下位4バイト(8桁の16進数)
    ATND ネットワーク内の機器検索。3〜4行目が発見したアドレス
    ATDH
    ATDL
    接続相手のアドレスの上位4バイト。
    接続相手のアドレスの下位4バイト。

     「ATNJ」はCoordinatorまたはRouterに対する設定で、新しい機器の参加を受け入れる時間を設定します。設定した秒数を超えると新しい機器の参加が受け入れられなくなります。
     「ATOP」はPAN ID(ネットワークID)を表示します。同じネットワークに参加している機器は同じPAN IDになっています。CoordinatorのPAN IDと他の機器のPAN IDを確認して、一致していなければ、接続されていないか他のネットワークに接続されています。
     「ATNR」はネットワーク設定をリセットします。各機器がCoordinatorと同じPAN IDでは無かった場合に、実行することで同じPAN IDに設定されるまで繰り返します。
     Coordinatorで実施する場合はCoordinator以外の機器もリセットする必要があります。引数に1を加えた「ATNR1」を実行すると傘下の全ての機器のネットワーク設定をリセットすることが出来ます。

    オリジナル XBee管理用ライブラリ「ZB Coordinator API」

     パソコン(PC)用とRENESAS H8 Tiny シリーズのH8/3694F用、そしてArduino用の3種類プラットファームに向けて親機となるXBee管理ライブラリを作成しましたので、ソースコードを含めて提供しています。

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-download.html
    XBee ZigBee 管理用ライブラリ ZB Coordinator API

     これらの親機のXBee管理用ライブラリ「ZB Coordinator API」は、USBやRS-232CでXBeeモジュールを接続したパソコンもしくは、UARTやRS-232CでXBeeモジュールを接続したH8マイコンやArduinoから、他の子機となるXBeeモジュールを制御するためのライブラリとサンプルアプリケーションプログラムです。PC/H8/Arduinoのいずれかに接続した親機XBeeから単体側の子機XBeeのGPIOを制御することが出来ます。(子機に使用することも出来ますが余分な機能が多すぎます。)
     下図の構成図では、右側に親機XBeeの管理用ライブラリ「ZB Coordinator API」が動作するH8マイコンが接続された例です。このH8マイコン親機XBeeから、左側の単体XBee子機モジュールのGPIOを制御することが出来ます。
    ZB Coordinator 構成図
    「ZB Coordinator API for PC」の構成図
    ※XBee Coordicator はPC用/H8用/Arduino用のいずれか1つを準備します。

    ZB Coordinator 構成図
    「ZB Coordinator API for H8 3694」の構成図
    ※XBee Coordicator はPC用/H8用/Arduino用のいずれか1つを準備します。

     XBee管理用ライブラリ「ZB Coordinator API」にはGPIOを簡単に制御するためのAPIと、多数のサンプルアプリケーションが含まれています。一例として、sample1_led.csample2_sw.c...などを参考にプログラムを書き換えて使っていただけます。
     下図は「ZB Coordinator API」をPC上で動作させてセンサー値をスマートフォンから閲覧した時の表示例(sample8_html.c)です。

    ZB Coordinator 構成図
    スマートフォンでの表示例(サンプル8)

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-download.html

    XBee ZigBee 管理用ライブラリ ZB Coordinator API


    「ZB Coordinator API」用XBeeファームウェアの書き込み

     まず、XBeeのファームウェアをX-CTUを用いて書き換えます。PCやH8、Arduinoに接続する親機となる方にCoordinator APIのファームウェアを書き込みます。単体で駆動する側はEnd DeviceでもRouterでもかまいません。

    ZB Coordinator APIで使用するXBeeファームウェア
    Device
    Type
    XBee Firmware Ver. ハードウェア
    Coordinator COORDINATOR API 2141 秋月H8Tiny IO BOARD
    End Device END DEVICE AT 2841 単体で駆動

    「ZB Coordinator API for PC」の製作

     XBeeをパソコンにUSBなどで接続します。XBeeをUSBに変換するには例えば前述の「ZigBee XBee USB変換基板」などを使用します。
     パソコンへはPC用 ZB Coordinator APIソフトウェアをコピーしてバッチファイル(〜.bat)もしくは実行形式ファイル(〜.exe)を実行します。MS-DOSプロントから実行するとシリアルポート番号(1〜4)を引数で渡すことができます。詳しい情報や制約事項についてはxbee.c内にコメント等で記載しています。

    「ZB Coordinator API for H8 3694」の製作

     H8のハードウェアは秋月電子通商の「AKI-H8/3694F」と「H8タイニーI/Oボード(TERA2)」を使用します。「AKI-H8/3694F」はRENESAS H8/3694Fモジュールです。H8 Tiny I/O BOARD TERA2はAKI-H8/3694Fの信号を取り出すためのIOボードです。トグルスイッチ(SW1)も必要(別売り)です。

    AKI-H8|信号名称 |IOボード機能
     CN2 |     |
    ------+---------+-----------------------
      9 |P80/FTCI |LED1(赤)
     10 |P81/FTIOA|LED2(緑)
     11 |P82/FTIOB|SW1トグルスイッチ(別売)

    H8タイニーI/Oボード(TERA2)

     キャラクタ液晶はH8/3694のCN1の14〜19ピンの各出力と電源、GNDを液晶モジュールのDB4〜7およびE、RSの各入力、および電源に接続して製作します(下図参照)。 H8 Tiny I/O BOARD上のAE-3664用の端子部などを使用して引き出すと他の用途と共用することができます(必須ではありません)。

    AKI-H8      液晶モジュール
    (CN1)       (HD44780搭載)
    ━━┓      ┏━━━━━┓    ┯ 5V
      ┃P50     ┃     ┃    |
     14┠──────┨DB4  Vdd┠───●┘
      ┃P51     ┃     ┃   |
     15┠──────┨DB5    ┃   <
      ┃P52     ┃     ┃ ┌→>
     16┠──────┨DB6  VLC┠─┘ < 10k
      ┃P53     ┃     ┃   |
     17┠──────┨DB7 DB0-3┠─┐ |
      ┃P54     ┃     ┃ | |
     18┠──────┨E   R/W┠─● |
      ┃P55     ┃     ┃ | |
     19┠──────┨RS   Vss┠─●─●┐
      ┃      ┗━━━━━┛   ┯┿┯
    キャラクタ液晶の接続図


     H8タイニーI/OボードをXBeeに接続するには「XBeeテストボードの製作例」や「XBeeテストボードの基板パターン図」を参照してください。XBeeとの接続回路図は以下のRS-232Cとの接続部分を参照してください。親機であるCoordinator側にはスイッチやLEDは無くてもかまいませんが、リセットスイッチと参加設定スイッチはあった方が便利です。その他のスイッチやLEDは対向機となるEnd device側に必要です。

    Coordinator/End Device共用XBee基板回路図
    Coordinator/End Device共用XBee基板回路図
    (クリックで拡大)


    「ZB End Device」センサーの製作

     ライブラリ「ZB Coordinator API」対応の ZB End Device 照度・温度センサーの回路図を以下に示します。回路図はLDOや各センサーの周辺回路を省略していますので使用するデバイスに合わせて追加ください。温度センサーは10mV/℃・500mV@0℃(一例としてMicrochip MCP9700)を照度センサーは1mV/Lux(1mV@1Lux)のものを使用します。より実用的なものとして「ZigBee Smart Plugの製作方法」に紹介しているスマートプラグを製作してもかまいません。
     もしくは、Digi純正の照度・温度センサー「XBee Sensor /L/T」や湿度センサー付きの「XBee Sensor /L/T/H」、ウォールルータ「XBee Wall Router ZB」、スマートプラグ「XBee Smart Plug」を購入しても構いません。

    「ZB Coordinator API」対応センサーの回路図
    「ZB Coordinator API」対応センサーの回路図(クリックで拡大)

    「ZB Coordinator API」対応センサーの回路図

    「ZB Coordinator API」対応 Smart Plug の回路図(クリックで拡大)
    ※注意:純正のXBee Smart Plugとの互換性はありません。
    読み取り用のサンプルコードはsample6を参照ください。

    Digi純正 XBee Sensor /L/TDigi純正 XBee Sensor /L/T
    Digi純正 XBee Sensor /L/T Digi純正 Wall Router ZB

    Digi純正 XBee Smart Plug
    Digi純正 XBee Smart Plug スマートプラグ
    ※注意:Smart Plugは国内の電気安全の法規制である
    電気用品安全法(PSE)に適合していないので
    同法第27条により販売が禁止されています。
    また、事故や火災の発生の恐れがあります。

     なお、Digi純正のセンサー機器の測定精度については注意が必要です。これらの機器は正確な測定を目的としたものではないので、例えば、温度については内部温度上昇分が考慮されていなかったり、照度については1Lux時に1mV出力となっていなかったり、スマートプラグについては誘導電流が考慮されておらず力率の悪い機器では誤差が大きくなるといった課題があります。照度は増加量は比例傾向がありますが絶対値が異なります。温度はACコンセントを使用するタイプが+5°ほど高めとなる傾向があります。
     一方で、初めからケースに入った製品として売られており、試験的な導入がしやすいという長所もあります。自作・製品を問わず、測定精度が必要な場面では正規の計測機器を使用して十分な検証や校正を行う必要があります。

    Digi純正のセンサー機器
    名称 センサー 制御 注意点
    照度 温度 湿度 電流 電源
    XBee Sensor /L/T 上述の通り
    XBee Sensor /L/T/H 上述の通り
    XBee Wall Router ZB 内部温度上昇
    XBee Smart Plug ZB 内部温度上昇

    Digi純正センサー機器の測定誤差の一例(※)
    名称 照度 温度
    35 lux 64 lux 127 lux 22.5 ℃
    XBee Sensor /L/T 25 lux
    (-29%)
    48 lux
    (-25%)
    102 lux
    (-20%)
    22.8 ℃
    (+0.3°)
    XBee Wall Router ZB 66 lux
    (+89%)
    123 lux
    (+92%)
    250 lux
    (+97%)
    27.4 ℃
    (+4.9°)
    XBee Smart Plug ZB 32 lux
    (-9%)
    60 lux
    (-6%)
    123 lux
    (-3%)
    27.3 ℃
    (+4.8°)
    ※参考情報です。当方所有の各1台に関する測定結果です。


    「ZB Coordinator API」のソフトウェア開発環境

     PC用の開発環境は「cygwin」+「gcc」を、H8用の開発環境は無料の「GCC Developer Lite」を使用します。PC用のcygwinのインストール方法は「Pythonインストール手順」の最初の方に記載しています。
     H8用の「GCC Developer Lite」も無料の開発環境です。株式会社ベストテクノロジーから提供されています。ダウンロードのページは見つけにくいのですが、該社ホームページの「ナレッジベース」より、技術情報/ソフトウェア/GCC Developer Liteからダウンロードできます。他の開発環境で使用する場合はソースコードの見直しが必要です。
     もしくは、ソフトウェアをAKI-H8に転送するだけであれば、「AKI-H8/3664BP」や「AKI-H8/3664 開発ソフトI/Oボード付」に付属の「書き込み制御プログラム(3664.MOT)」と、RENESASからダウンロード可能なHTERMを使用します。詳しくは、「htermでの書き込み方法」を参照してください。説明文中の「プログラムファイル」の部分が「ir-tester」用です。プログラムファイルは、本ページの「H8 3694F用 ZB Coordinator API」を使用してください。
    1. AKI-H8/3694F
    2. H8 Tiny I/O BOAD TERA2
    3. トグルスイッチ(SW1)、スライドSW(POWER SW)、電池(006P)
    4. キャラクタ液晶モジュール(HD44780搭載)
    5. C言語開発環境 GCC Developer Lite (フリーソフト)
     Arduino用はArduino IDEを使用します。サンプルのsample*.inoファイルはxbee.inoとともにIDEのタブに読み込んでコンパイルします。ファイルの修正はArduinoのワークフォルダ内のinoファイルを修正します。
     パソコン用とH8の共通ソフトウェアおよびArduino用のソフトウェアは下記からダウンロードして使用してください。

    PC用/H8用 ZB Coordinator APIソフトウェア
    ファイル 説明
    xbee-download.html H8 3694F用 ZB Coordinator API
    sample1_led.c サンプル1 リモートLED制御
    sample2_sw.c サンプル2 スイッチ状態取得
    sample3_add.c サンプル3 新規デバイス検出
    sample4_sens.c サンプル4 センサー読み取り
    sample5_plug.c サンプル5 SmartPlug読み取り
    sample6_myplug.c サンプル6 自作SmartPlug用
    sample7_uart.c サンプル7 XBeeロガー for PC
    上記ソフトウェアに関していかなる損害も補償しません。

     「End Device」側は3つのスイッチと2つのLEDに対応しています。以下のポートにスイッチとLEDを接続してください。

    End device側 ハードウェア
    XBee ピン ポート 接続 (XBIB-U)
    XBee_pin 19 DIO1 スイッチ(port1) (SW2)
    XBee_pin 18 DIO2 スイッチ(port2) (SW3)
    XBee_pin 17 DIO3 スイッチ(port3) (SW4)
    XBee_pin 7 DIO11 LED(port11) (LED2)
    XBee_pin 4 DIO12 LED(port12) (LED1)
    XBee_pin 11 DIO4 LED(port4) (LED3)
    XBee_pin 5 RESET リセットスイッチ (RESET)
    XBee_pin 20 DIO0 参加設定スイッチ (SW1)

     但し、ソースリスト内ではport11に接続されたLEDをLED2、port12に接続されたLEDをLED1、port4に接続されたLEDをLED3と表記している部分があります。また、port1に接続されたスイッチをSW2、port2に接続されたスイッチをSW3、port3に接続されたスイッチをSW4と表記している部分もあります。これらは、Digi社(設計時MaxStream社)のXBIB-U-Devの回路に従ったものです。分りにくいのでportのみで識別した方が良いでしょう。

    ZB Coordinator API中のサンプルプログラムの使い方

     H8 Tiny I/O BOAD TERA2の「トグルスイッチ(SW1)」を「L」側にして「リセット(SW2)」を押下すると30秒間の間、他のZigBee機器の接続を受け入れる「コミッションモード」に入ります。H8の液晶に「ケンサクチュウ」と表示されている間に、他のZigBee機器の電源を入れて「コミッションボタン」を押すとH8の液晶に「ハッケンシマシタ」と表示されZigBee機器が登録されます。
     サンプルプログラムでは、登録された単体のXBeeモジュールのGPIOに接続しされているLEDを点灯させ、その後にH8の液晶に「ジュシンチュウ」と表示されます。
     また、単体のXBeeモジュールのport1〜3のスイッチを押下し続けると、その状態がH8の液晶に表示されるとともに、単体側のXBeeモジュールのLEDを点灯します。さらに、単体のXBeeモジュールのUARTに(パソコンなどを接続して)文字を送信することで、その文字をH8の液晶に表示することも出来ます。
     サンプルプログラムのmain関数以降を変更すれば、XBeeを使った様々な制御が出来るようになると思います。例えば、H8側がリモコン受光側(制御を受ける側)とすれば、H8マイコンのGPIOを使って、様々な制御が可能です。もしくは、複数台のXBeeをサポートできるように改良すれば、スイッチと制御対象の両方を単体のXBeeモジュールで実現することも出来ると思います。(この場合、H8のZB Coordinatorは中継局となる。)
     End Deviceを低消費電力で動作するための設定は、X-CTUの「Modem Configuration」タブのウィンドウ中の「Sleep Modes」の各パラメータで行えます。「PIN HIBERNATE」はSleep RQ(9番ピン)をHレベルにするとスリープになるモードです。外部のマイコンからスリープさせるのに使用します。「CYCLIC SLEEP」はXBeeが定期間隔(設定範囲=320ms〜28秒)で動作するモードです。スリープ中はOn/Sleep(13番ピン)がLレベルになります。外部のセンサーなどの電源を制御するために使用します。スリープモードについては「スリープ方法 CYCLIC SLEEP」で詳しく説明しています。
     なお、本ソフトウェアはサンプルプログラムです。不具合などがあると思いますので、ご承知いただいた上で、御利用ください。また、不具合の対策方法や、新たな不具合を見つけられた方は、お手数でも連絡をいただけるよう御願いいたします。

    低消費電力エンドデバイス ZigBee End Device

     XBeeモジュール(ZB)を使えば、簡単にメッセージやOn/Off信号をワイヤレスで交換することが出来るようになります。ZigBeeの最大の特長は、End Deviceの電源ONの状態を短くすることで低消費電力となり、電池駆動での長期間動作が可能となることです。しかも、XBeeモジュール(ZB)にはGPIOやADコンバーターが内蔵されているので、簡単なON/OFFやアナログ値を送信することはマイコンの追加なしに可能ですし、また、複雑な処理であっても、低消費電力のPICマイコンなどとの組み合わせで電池駆動を実現することが可能です。

     下図は単3電池1本で駆動可能な気圧と温度を測定するセンサーの一例です。待機電力は1.5Vで0.15mA程度です。送受信の時に大電流が流れますが動作間隔を1分間隔などに設定することによって何カ月も動作させることが可能になります。スリープモードについては「スリープ方法 CYCLIC SLEEP」で詳しく説明しています。

    PICマイコンとXBeeによる気圧&温度センサー
    PICマイコンとXBeeによる気圧&温度センサー

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-at_press.html
    XBee ZigBee 気圧センサーの製作方法

    AT Coordinator親機の製作
     気圧センサ End Device用のCoordinator親機は、測定した気温と気圧のデータをXBeeで受信します。下図のCoordinator親機は、液晶に表示するとともにSDカードに記録することが可能な「情報収集装置」の一例です。写真(テスト版)は気温26.8(度)、気圧100647(Pa)を示しています。気圧は1/100するとhPa(ヘクトパスカル)になるので、この場合は1006.47(hPa)です。

    XBee Coordinator親機
    XBee AT Coordinator親機(テスト版)

    XBee Coordinator親機
    XBee AT Coordinator親機(スイッチ対応版)

    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-at_coord.html
    簡単にデータ転送する AT Coordinator の製作方法

     製作方法は上記のリンクを参照してください。なお、右側の「情報収集装置」はラトルズ出版の「プリント基板で作るPIC応用装置()」に付属する基板を使用しました。

     スイッチ対応版の操作は緑ボタンが測定開始で赤ボタンが測定停止です。測定停止中にSDカードを抜いてPCにデータを吸い上げることが可能になります。測定の再開も緑ボタンです。起動時には日時を変更することが出来ます。緑ボタンで点滅中の数字が一つ上がります。長押しで0に戻ります。赤ボタンで次の桁に移ります。赤ボタンの長押しで最初の桁に戻ります。また、各種エラー時に緑ボタンでエラーを解除します。エラー解除が出来ない場合もあります。

     下図は1か月分の測定結果です。横軸を1日の時間、縦軸が気圧です。16時あたりの変化点は直射日光があたって測定結果が乱れてしまったものと思います。また、気圧の低いとき(悪天候のとき)に波形が乱れているのは風のためと思います。

    1日の気圧変化
    1日の気圧変化の測定結果

     以上のように、「PIC 12F683用 気圧センサ End Device」と「AT Coordinator親機」を使うことで、屋外の測定した気圧データを無線通信で室内の親機に伝えることが可能になります。

    ArduinoとXBeeとの接続

     Arduinoを使用すればXBee以外のデバイスを含めたソフト開発が簡単にできるようになります。前述のH8(H8 Tiny 3694)だと液晶以外のデバイスを接続するのに手間がかかりますが、ArduinoであればLANやSDカード、各種センサデバイスのハードウェアと動作させるためのライブラリやサンプルソフトが豊富にそろっているからです。親機側に用いれば、よりインテリジェントな動作がPCレスで行えるでしょうし、子機側に用いれば複雑なセンサーを接続することが容易になります。
     Arduino 本体は秋月電子のAE-ATmegaを用いてArduino Duemilanove互換ボードが容易に製作できます。あるいは、純正のArduino本体を購入しても良いでしょう。ただし、大人の科学の付録のJapaninoではXBeeが動作しませんのでご注意ください。

    秋月電子 Arduino Duemilanove互換ボード
    秋月電子 Arduino Duemilanove互換ボード

     XBeeを接続するためのハードウェアは、Arduinoサイト(XBee Shiled)に回路図が公開されています。半田付けが苦手な人はWireless SD(XBee Shiled)を購入しても良いでしょう。

    Arduino + Wireless SD + XBee
    Arduino + Wireless SD + XBee

     接続したXBeeからのデータ受信用のソフトウェア(スケッチ)の簡単なサンプルは、Arduino開発環境のFileメニューからExamplesメニュー、Communicationメニューと進み、PhysicalPixelを選択すると表示されます。送信用のサンプルはArduinoサイト(Arduino XBee Shield)に示されています。ただし、本格的にXBeeネットワークを構築するとなるとXBee管理用ライブラリが別途必要です。

     もちろん、管理用ライブラリとして前述のオリジナル XBee管理用ライブラリ「ZB Coordinator API」をArduinoで動作させることが可能です。XBeeのコマンドを一から勉強することなく、公開しているサンプルアプリを使っててっとり早くシステム構築に着手できます。

    Arduino + Wireless SD + XBee + adafluit LCD
    Arduino + Wireless SD + XBee + adafluit LCD

     Arduinoを使ってXBeeネットワークを構築する方法については、下記に手順を追いながら掲載してゆきます。

    ArduinoではじめるXBee M2Mネットワーキング(構築中)
    http://www.geocities.jp/bokunimowakaru/diy/xbee/xbee-arduino_1.html




     以上のように、ZigBeeデバイスは従来のような電子機器だけでなく、様々な製品に搭載される可能性があり、これまでの無線LANやBluetoothとは全く違う普及を遂げる可能性もあります。その場合の対象となる機器の数は膨大(但し、XBeeのCoordinatorは10台までのEnd Deviceしかペアリングできない。10台以上は他のRouterとペアリングして通信を行う。)で、今後の展開に期待できる技術だと思います。

    XBee Main MENUページへ戻る

    関連ページ

    方式編 - 赤外線リモコン  赤外線方式リモコン 家製協 NEC SIRC
    方式編 - ZigBee無線リモコンZigBee RF4CE 無線リモコン
    方式編 - リモコン     赤外線リモコン 家製協
    方式編 - 変調方式     ASK,BPSK,QPSK,QAM,IQ平面,直交変調

    地デジTopへ戻る  XBee Main MENUページへ戻る