当サイトではDigi社のXBeeを使ったZigBeeネットワークを自力で構築するための情報を公開しています。当ページはその概要となる情報を紹介しています。XBeeに関して個別の情報をご覧になりたい方は下記のXBee Main MENU ページに移動してください。 |
|
ZigBeeとはZigBeeアライアンスが定めた無線通信方式の規格です。主に以下のような特徴があります。
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」の機能も備えています。
|
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にはプロファイルという概念があります。前述のZCLは基本アプリケーションを実現するための標準ライブラリでした。こういったZCLを集めて、より大きなアプリケーションを実現するための仕様がプロファイルです。したがって、プロファイルには、使用するZCLやZCLの使い方が規定されています。 ZigBeeアライアンスは、以下の一例をはじめ、様々なZigBeeプロファイル仕様を策定中です。
|
ZigBee仕様書はZigBee Allianceのサイトからダウンロードできますが、ページ数が多くて難解です。ZigBee仕様の要点については、Digi社のZigBeeモジュールの仕様書に分かりやすく簡潔にまとめられています。20ページくらいしかないので、まずは、そちらを読むのが良いと思います。(製品を購入しなくてもダウンロードできます)
|
ここでは、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認証が無い製品だと国内での実験が行えません) 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などから購入できます。 Digi社 ZigBee モジュール XBee ZB(ZigBee)とコネクタ変換基板 もしくは、2mmピッチのユニバーサル基板、2mmピッチのピンソケット、L型ピンヘッダを使用することで、1組み107円〜190円までの部品代で製作することが出来ます。 下図は完成したピッチ変換基板にXBeeモジュールを搭載した例です。詳しい製作方法は下図の下方にあるリンクを参照ください。 自作のピッチ変換基板とXBeeモジュール ZigBee XBeeモジュール 2.0mm 2.54mm ピッチ変換基板 https://bokunimo.net/xbee/xbee-pcb.html XBeeの設定などのためにパソコンに接続 XBeeモジュールの設定などを行うためにはパソコンに接続する必要があります。その場合、秋月のAE-UM232Rなどを使用してXBeeのシリアルをUSBに変換する必要があります。AE-UM232Rは後述のXBee-Fly USB の製作でもAVRライタとして使えます。 AE-UM232RでXBeeをパソコンに接続する https://bokunimo.net/xbee/xbee-tutorial_0.html XBeeをパソコンに接続する方法 もっと安価にパソコンと接続する より安価にXBeeをパソコンのUSBに接続したい場合はXBee USB変換基板が便利です。下図は完成したUSB変換基板にXBeeモジュールを搭載した例です。ただし、XBeeのファームウェアの書き込みができないのと、製作に使用するAVRマイコンへのソフト書き込みにAE-UM232Rが必要なので、少なくとも、1台はAE-UM232Rを購入しておく必要があります。詳しい製作方法は下図の下方にあるリンクを参照ください。 自作のUSB変換基板とXBeeモジュール https://bokunimo.net/xbee/xbee-usb.html XBee USB変換基板の製作方法 |
XBee(ZB=ZigBee)製品を扱うためには、Digi社から提供されているX-CTUを使用します。X-CTUはXBeeモジュール(ZB)とシリアル通信を行い、飛距離のテストやファームウェアやパラメータの変更や更新を行うためのWindows用のソフトウェアで、同社のサイトからダウンロードして使用します。前述のデバイスタイプの変更もX-CTUのファームウェア更新機能を使用します。詳しい設定方法は下記のリンクを参照ください。 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モジュール(ZB)の5番ピンのRESET入力と20番ピンのAD0入力をGNDに接続するためのプッシュスイッチや、13番ピンのON端子と15番ピンのASCにLED(1kΩ抵抗を経由してGNDへ)があると便利です。これらは、X-CTUのファームウェア更新などでリセットをかける場合があるのと、ネットワークへの参加や解除を行ったり、参加状況や動作状況やなどを確認するためです。
下図は、シリアル端子(RS-232C端子)をクロスケーブルで接続するタイプのXBeeテストボードの製作例です。シリアル端子にはDサブ9ピンのオスを用いています。秋月電子製のH8 Tiny I/O BOAD TERA2やAKI-H8/3664BPとの接続の際にケーブルを使用せずに直接接続できるようにしています。したがって、パソコンとの接続にはクロスケーブルが必要になります。より詳しくは下図の下方にあるリンクを参照ください。 XBeeテストボードとH8 Tiny I/O BOAD TERA2(組立例) https://bokunimo.net/xbee/xbee-rs232c.html XBee ZigBee RS-232CやUSB によるPCとの接続 既にRS-232Cを持つPCは減ってきておりUSBがその役割に変わりつつあります。秋月のAE-UM232Rに使用されているFTDI Chip社のUSB-Serial変換チップFT232RLを使うと下図のようなボードを製作することもできます。 XBee End Deviceボードの製作例 https://bokunimo.net/xbee/xbee-rs232c.html XBee ZigBee RS-232CやUSB によるPCとの接続 https://bokunimo.net/xbee/xbee-usb.html XBee USB変換基板の製作方法 製作例ではラトルズ出版の「プリント基板で作るPIC応用装置(¥)」に付属しているFT232RL基板を使用しました。プリント基板のみ(右側の「No image」)も割安で市販されています。
上記の書籍や基板にFT232RL用のプリント基板が含まれています。
しかし、FT232RLやXBeeといった部品は、一切、含まれてません。 |
ワイヤレス通信を行うには、少なくとも、デバイスタイプが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モジュール(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はループバックテストを行うためのクラスタです。この状態で前項の「あて先送信」を開始すると、簡単にループバックテストを行うことが出来ます。 クラスタID=12を使ったループバックテスト 上図はループバックテストの一例です。初期設定では32バイトの文字が送出されます。濃い青のバーは送信回数に対する誤った回数との比率を示し、赤からオレンジ色のRSSIのバーは受信強度を示しています。受信強度が高いと黄緑色になります。なお、RSSIはATコマンドの「ATDB」で得ています。ATコマンドモードに入るのに1秒を要するので、RSSI表示を行うと約1秒おきにしか実行できません。 |
XBeeのATコマンドでよく使うものをまとめました。+++以外はコマンドのあとにリターン<CR>を入れます。また、引数を与えるときはコマンドに続けて数字(16進数)を入れてからリターン<CR>を入れます。
「ATNJ」はCoordinatorまたはRouterに対する設定で、新しい機器の参加を受け入れる時間を設定します。設定した秒数を超えると新しい機器の参加が受け入れられなくなります。 「ATOP」はPAN ID(ネットワークID)を表示します。同じネットワークに参加している機器は同じPAN IDになっています。CoordinatorのPAN IDと他の機器のPAN IDを確認して、一致していなければ、接続されていないか他のネットワークに接続されています。 「ATNR」はネットワーク設定をリセットします。各機器がCoordinatorと同じPAN IDでは無かった場合に、実行することで同じPAN IDに設定されるまで繰り返します。 Coordinatorで実施する場合はCoordinator以外の機器もリセットする必要があります。引数に1を加えた「ATNR1」を実行すると傘下の全ての機器のネットワーク設定をリセットすることが出来ます。 |
パソコン(PC)用とRENESAS H8 Tiny シリーズのH8/3694F用、そしてArduino用の3種類プラットファームに向けて親機となるXBee管理ライブラリを作成しましたので、ソースコードを含めて提供しています。 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 API for PC」の構成図 ※XBee Coordicator はPC用/H8用/Arduino用のいずれか1つを準備します。
「ZB Coordinator API for H8 3694」の構成図 ※XBee Coordicator はPC用/H8用/Arduino用のいずれか1つを準備します。
XBee管理用ライブラリ「ZB Coordinator API」にはGPIOを簡単に制御するためのAPIと、多数のサンプルアプリケーションが含まれています。一例として、sample1_led.cやsample2_sw.c...などを参考にプログラムを書き換えて使っていただけます。 下図は「ZB Coordinator API」をPC上で動作させてセンサー値をスマートフォンから閲覧した時の表示例(sample8_html.c)です。 スマートフォンでの表示例(サンプル8) https://bokunimo.net/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 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)も必要(別売り)です。
キャラクタ液晶はH8/3694のCN1の14〜19ピンの各出力と電源、GNDを液晶モジュールのDB4〜7およびE、RSの各入力、および電源に接続して製作します(下図参照)。 H8 Tiny I/O BOARD上のAE-3664用の端子部などを使用して引き出すと他の用途と共用することができます(必須ではありません)。
H8タイニーI/OボードをXBeeに接続するには「XBeeテストボードの製作例」や「XBeeテストボードの基板パターン図」を参照してください。XBeeとの接続回路図は以下のRS-232Cとの接続部分を参照してください。親機であるCoordinator側にはスイッチやLEDは無くてもかまいませんが、リセットスイッチと参加設定スイッチはあった方が便利です。その他のスイッチやLEDは対向機となるEnd device側に必要です。 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」対応 Smart Plug の回路図(クリックで拡大) Digi純正 XBee Sensor /L/T Digi純正 Wall Router ZB Digi純正 XBee Smart Plug スマートプラグ※
※注意:Smart Plugは国内の電気安全の法規制である
電気用品安全法(PSE)に適合していないので 同法第27条により販売が禁止されています。 また、事故や火災の発生の恐れがあります。 なお、Digi純正のセンサー機器の測定精度については注意が必要です。これらの機器は正確な測定を目的としたものではないので、例えば、温度については内部温度上昇分が考慮されていなかったり、照度については1Lux時に1mV出力となっていなかったり、スマートプラグについては誘導電流が考慮されておらず力率の悪い機器では誤差が大きくなるといった課題があります。照度は増加量は比例傾向がありますが絶対値が異なります。温度はACコンセントを使用するタイプが+5°ほど高めとなる傾向があります。 一方で、初めからケースに入った製品として売られており、試験的な導入がしやすいという長所もあります。自作・製品を問わず、測定精度が必要な場面では正規の計測機器を使用して十分な検証や校正を行う必要があります。
※参考情報です。当方所有の各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」を使用してください。
パソコン用とH8の共通ソフトウェアおよびArduino用のソフトウェアは下記からダウンロードして使用してください。
「End Device」側は3つのスイッチと2つのLEDに対応しています。以下のポートにスイッチとLEDを接続してください。
但し、ソースリスト内では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」で詳しく説明しています。 なお、本ソフトウェアはサンプルプログラムです。不具合などがあると思いますので、ご承知いただいた上で、御利用ください。また、不具合の対策方法や、新たな不具合を見つけられた方は、お手数でも連絡をいただけるよう御願いいたします。 |
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による気圧&温度センサー https://bokunimo.net/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 AT Coordinator親機(テスト版) XBee AT Coordinator親機(スイッチ対応版) https://bokunimo.net/xbee/xbee-at_coord.html 簡単にデータ転送する AT Coordinator の製作方法 製作方法は上記のリンクを参照してください。なお、右側の「情報収集装置」はラトルズ出版の「プリント基板で作るPIC応用装置(¥)」に付属する基板を使用しました。 スイッチ対応版の操作は緑ボタンが測定開始で赤ボタンが測定停止です。測定停止中にSDカードを抜いてPCにデータを吸い上げることが可能になります。測定の再開も緑ボタンです。起動時には日時を変更することが出来ます。緑ボタンで点滅中の数字が一つ上がります。長押しで0に戻ります。赤ボタンで次の桁に移ります。赤ボタンの長押しで最初の桁に戻ります。また、各種エラー時に緑ボタンでエラーを解除します。エラー解除が出来ない場合もあります。 下図は1か月分の測定結果です。横軸を1日の時間、縦軸が気圧です。16時あたりの変化点は直射日光があたって測定結果が乱れてしまったものと思います。また、気圧の低いとき(悪天候のとき)に波形が乱れているのは風のためと思います。 1日の気圧変化の測定結果 以上のように、「PIC 12F683用 気圧センサ End Device」と「AT Coordinator親機」を使うことで、屋外の測定した気圧データを無線通信で室内の親機に伝えることが可能になります。 |
Arduinoを使用すればXBee以外のデバイスを含めたソフト開発が簡単にできるようになります。前述のH8(H8 Tiny 3694)だと液晶以外のデバイスを接続するのに手間がかかりますが、ArduinoであればLANやSDカード、各種センサデバイスのハードウェアと動作させるためのライブラリやサンプルソフトが豊富にそろっているからです。親機側に用いれば、よりインテリジェントな動作がPCレスで行えるでしょうし、子機側に用いれば複雑なセンサーを接続することが容易になります。 Arduino 本体は秋月電子のAE-ATmegaを用いてArduino Duemilanove互換ボードが容易に製作できます。あるいは、純正のArduino本体を購入しても良いでしょう。ただし、大人の科学の付録のJapaninoではXBeeが動作しませんのでご注意ください。 秋月電子 Arduino Duemilanove互換ボード XBeeを接続するためのハードウェアは、Arduinoサイト(XBee Shiled)に回路図が公開されています。半田付けが苦手な人はWireless SD(XBee Shiled)を購入しても良いでしょう。 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を使ってXBeeネットワークを構築する方法については、下記に手順を追いながら掲載してゆきます。 ArduinoではじめるXBee M2Mネットワーキング(構築中) https://bokunimo.net/xbee/xbee-arduino_1.html 以上のように、ZigBeeデバイスは従来のような電子機器だけでなく、様々な製品に搭載される可能性があり、これまでの無線LANやBluetoothとは全く違う普及を遂げる可能性もあります。その場合の対象となる機器の数は膨大(但し、XBeeのCoordinatorは10台までのEnd Deviceしかペアリングできない。10台以上は他のRouterとペアリングして通信を行う。)で、今後の展開に期待できる技術だと思います。 |
方式編 - 赤外線リモコン 赤外線方式リモコン 家製協 NEC SIRC 方式編 - ZigBee無線リモコンZigBee RF4CE 無線リモコン 方式編 - リモコン 赤外線リモコン 家製協 方式編 - 変調方式 ASK,BPSK,QPSK,QAM,IQ平面,直交変調 |