研究ノート 長野 県工 技セ ンタ ー研 報 No.9, p.E13-E17 (2014)
XBee(シリーズ1)用1:n通信プロトコルの開発
*
浜 淳* 1
Development of Point-to-Multipoint Protocol for XBee (Series1)
Atsushi HAMA XBeeは 技 術 基 準 適 合 証明 を 受け た2.4GHz帯 無 線 デ ー タ 通 信用 モ ジ ュー ル で あり , 無線 免許 の 不 要 な , 手軽 に 使え る無 線 モジ ュー ル であ る 。XBeeは シ リ ー ズ1と シ リー ズ2が ある が, そ の内 の シリ ー ズ1を用い,OSIモデルのネットワーク層からアプリケーション層までをカバーする通信プロトコルを 開発し,独自の1:nネットワークを構築したので報告する。 キーワード:技術基準適合証明,無線免許,通信プロトコル,無線モジュール,ネットワーク 1 11 1 はじめにはじめにはじめにはじめに 通信秘匿性の重要度,設備コスト,通信速度などの条 件が折り合えば,無線通信はとても便利な手法である。 現在では無線局免許の必要が無い微弱無線や,技術基準 適合証明を取得しているモジュールが多数市場にあり, ニーズに合わせて選択可能である。XBeeも技術基準適合 証明を取得した製品のひとつで,アンテナ,高周波回路, 信号処理回路など,無線通信に必要なハードウェアが全 て実装された,2.4GHz帯無線データ通信用モジュールで ある。良く聞かれる名称にZigBeeがあるが,これはZigBee Allianceと い う 民 間 団 体 が 策 定 し て い る 規 格 の 名 称 で あ る。元々は,ホームオートメーションへの応用を念頭に 考案された。 表1にXBeeの仕様を示す。XBeeにはシリーズ1とシリ ーズ2がある 1)2) 。シリーズ1はIEEE802.15.4に準拠し,Point to Pointと呼ばれる1:1の通信,またはPoint to Multi Point
と呼ばれる1:nの通信が可能である。IEEE802.15.4は,図1 に 示す よう にZigBeeのOSIモ デ ルの 中の 物理 層とMAC層 に 相 当 し て い る 。1:n通 信 で は ひ と つ の コ ー デ ィ ネ ー タ (親機)と複数のエンドデバイス(子機)でネットワー クを構成する。コーディネータはネットワーク内に必ず ひとつ必要である。また,エンドデバイスは各種センサ 値を収集し送信するためのモジュールである。各モジュ ー ル 間 の 距 離 は 無 線 到 達 距 離 で あ る1ホ ッ プ 以 内 に 制 限 される。エンドデバイス間で通信する場合にはコーディ ネ ー タ を 介 し て 行 う 。 シ リ ー ズ2はIEEE802.15.4上 に ZigBeeプロトコルスタックを 搭載し,クラスタ・ツリー やメッシュと呼ばれるネットワーク通信形態にも対応し ている。コーディネータとエンドデバイスに加え,ルー タ(中継器)が通信に介在するためホップ数が増えても 通信可能である。特に,メッシュは自動的に通信ルート を再構成する機能があるため,堅牢な通信網が構築可能 である。シリーズ1とシリーズ2を比較すると,シリーズ2 の方がZigBeeプロトコルスタックを実装し,更に低消費 項目 シリーズ1 シリーズ2 通常版 PRO版 通常版 PRO版 供給電圧(V) 2.8~3.4 ← 2.1~3.6 3.0~3.4 送信電流(mA)(@3.3V) 45 150 40 170 受信電流(mA)(@3.3V) 50 55 40 45 IDLE電流(mA)(@3.3V) 50 55 15 15 送信出力(mW) 1 10 2 10 受信感度(dBm) -92 -100 -96 -102 通信距離(m)(屋内) (屋外) 30 90 60 750 40 120 60 750 RFデータ転送レート(kbps) 250 ← ← ← サポート・トポロジ 1:1, 1:n ← 1:1, 1:n メッシュ ← チャネル数 16 12 16 14 * 受託研究の一部 *1 情報システム部 図1 ZigBeeのOSIモデル 物理層 MAC層 ネットワーク層 アプリケーションサポートサブ層 アプリケーション層 IEEE802.15.4で規定 ZigBee Allianceで規定 ZigBee Allianceか ベンダーが規定 表1 XBeeの仕様
電力を実現しているため,使われる頻度が高いと思われ る。 今回,受託契約先企業が保有する在庫の有効利用を目 的 にXBeeシ リ ーズ1通 常 版(チ ッ プア ンテ ナ) を用 い , 1:nネットワークを構築する事になった。XBeeシリーズ1 では1:n通信は可能だと謳ってはいるが,実際の通信プロ ト コ ル が 提 供 さ れ て い る わ け で は な い 。 そ こ で ,OSIモ デルでネットワーク層からアプリケーション層までをカ バーする,1:n通信に対応したプロトコルを開発した。 2 22 2 開開開開 発発発発 2.1 2.1 2.1
2.1 APIAPIAPIAPI ををを 利用を利用利用利用 した通信方法した通信方法した通信方法 した通信方法
XBeeを用いて1:n通信を行うには,XBeeが提供する API(Application Programming Interface)モードを用いる必
要がある 3) 。XBeeシリーズ1では表2に示す13種類のAPI フレームをサポートしている。この内背景が白色の4つの APIを用い,通信プロトコルを開発する。各エンドデバ イスの指定やデータ通信に用いるのはTX Requestフレー ム(ID 0x01)である。Rx Packet(ID 0x81),TX Status(ID 0x89)とModem Status(ID 0x8A)の各フレームはXBeeが自
動的に発行するフレームである。 APIフォーマットと,使用する各APIコマンドのフレー ム 構 造 を 図 2 に 示 す 。APIフ ォ ー マ ッ ト は ス タ ー ト ・ デ リミタ(1バイト),フレームデータ長(2バイト),フレ ームデータ及びチェックサム(1バイト)で構成される。 スタート・デリミタの値は0x7E固定である。フレームデ ータはAPIフレーム毎に構造が定義されている。 TX Requestはデータ送信用フレームである。Frame ID に0以外の値を設定すると,送信が無事に行われたかどう かをTX Statusフレームで確認できる。Destination Address に は , 通 信 相 手 先 ア ド レ ス を指 定 す る 。Optionsに は0を 設定する。RF Dataは実際に送信するデータの領域で,最 大100バイトである。 API フレーム名称 コマンド ID 解説 TX(Transmit) Request: 64-bit address 0x00 相手先アドレスを64ビットで指定しデ ータ送信する。 TX(Transmit) Request: 16-bit address 0x01 相手先アドレスを16ビットで指定しデ ータ送信する。 AT Command 0x08 自ノードにATコマンドを発行する。AT コマンド・モードでの操作をAPIモード から実行する。 AT Command-Queue Parameter Value 0x09 ATコマンドの発行を一旦止める。実行 はコマンドID:0x08の発行か"AC"コマン ドの実行まで保留される。
Remote Command Request 0x17 相手先にATコマンドを発行する。 RX(Receive) Packet: 64-bit Address 0x80 相手先アドレス64ビットによるデータ の受信。 RX(Receive) Packet: 16-bit Address 0x81 相手先アドレス16ビットによるデータ の受信。 RX(Receive) Packet: 64-bit Address IO 0x82 相手先アドレス64ビットによる,Xbee 入出力の状態をデータとして受信。 RX(Receive) Packet: 16-bit Address IO 0x83 相手先アドレス16ビットによる,Xbee 入出力の状態をデータとして受信。
AT Command Response 0x88 ATコマンド応答。コマンドID:0x08から の応答になる。
TX(Transmit) Status 0x89 コマンドID:0x00あるいは0x01で行った 送信に対するステータスの返信。
Modem Status 0x8A
リセットからの復帰,ネットワークに参 加したなど,状態が変化した時にXbee から送られてくる。 Remote Command Response 0x97 相手からのリモートATコマンドに対す る応答。
0x7E MSB LSB API-specific Structure Check sum cmdID cmdData Start Delimiter Byte 1 Length Bytes 2-3 Frame Data Bytes 4-n Byte n+1 図2 APIフレーム構造 TX Request 16-bit address
0x01 cmdData
Frame ID Destination
Address Options RF Data APIフォーマット
Byte 5 Bytes 6-7 cmdID
Byte 8 Byte(s) 9-n
RX Packet 16-bit address
0x81 cmdData
Source
Address RSSI Options RF Data Bytes 5-6 Byte 7 cmdID Byte 8 Byte(s) 9-n TX Status 0x89 cmdData Frame ID Status Byte 5 Bytes 6 cmdID Modem Status 0x8A cmdData Byte 5 cmdID 表2 XBeeシリーズ1 APIの種類
RX Packetは デ ータ 受信 用フレ ーム であ る。XBeeが 生 成 す る 。Source Addressに は 送 信 元 の ア ド レ ス が 入 る 。 RSSIには受信感度を示す値が入る。RF Dataには最大100 バイトのデータが入る。 TX Statusは 送 信 結 果 の ス テ ー タ ス を 示 す フ レ ー ム で ある。XBeeが生成する。Statusが0ならば送信成功である。 Modem Statusはリセット情報,ネットワーク情報など を伝えるフレームである。XBeeが生成する。 XBeeモジュールの制御やデータの送受信は,全て UART(Universal Asynchronous Receiver Transmitter)経由
で行う。図3に示すように,使用する信号線はDOUT, DINの2本である。また,API通信を行う場合,ハードウ ェアフロー制御用信号のDTR,RTSはどちらもGNDにす る必要がある。UARTの通信 速度は250kbpsまで可能であ る。 2.2 2.2 2.2 2.2 設計設計設計設計 仕 様仕 様仕 様仕 様 設計仕様は以下のとおりである。 (1)1:nネットワーク対応の仕組み 図4のシステム構成とする。コーディネータとエンド デバイスはそれぞれマイコンで制御する。そのうちコー ディネータを制御するマイコンにはWebサーバ機能を持 たせる。LAN上のホストサーバ(Windows PC)からコー ディネータにデータ送信要求が発生すると,コーディネ ータは各エンドデバイスに通信許可を与える。指定され たエンドデバイスは,測定したデータをコーディネータ に送信する。収集したデータはホストサーバにあるデー タベース(XAMPP)に保存する。なお,各エンドデバイ スの通信許可は同時に1台しか与えない仕組みとする。 (2)データ再送要求の実装 通信エラーが発生した場合の再送処理に対応したプロ トコルを実装する。 図5はホストサーバ,コーディネータ,エンドデバイ ス3者間の状態遷移を示している。図中の点線で示してい るのが再送要求と再送である。実線で示しているのはエ ラーがない場合の処理である。ホストサーバはシステム 全体の時間を管理し,一定時間経過毎にコーディネータ にデータ送信を要求する。コーディネータは順番に各エ ンドデバイスを指定する。指定されたエンドデバイスは 送信に必要なデータを収集し,結果をコーディネータに 送信する。コーディネータは受信したデータをHTTPプロ トコルに変換しサーバへ送信する 4)5) 。 (3)タイムアウト機能の実装 コーディネータとエンドデバイス双方が同時に受信待 ち状態となった場合,その状態が続くと通信は途絶して しまう。その回避策としてタイムアウト機能を用意する。 2.3 2.3 2.3
2.3 XBeeXBee のXBeeXBeeののの コンフィグレーションコンフィグレーションコンフィグレーションコンフィグレーション
XBeeの コ ン フ ィ グ レ ー シ ョ ン を 行 う に は ,ZigBee Allianceメンバーであるディジ・インターナショナル社が 無 償 提 供 し て い るX-CTUと い う タ ー ミ ナ ル ソ フ ト ウ ェ アを用いる。主な設定箇所は以下の通りである。 (1)アドレス コーディネータは0番地,エンドデバイスは1~255番地 に割り当てることとした。 (2)コーディネータ/エンドデバイスの選択 (3)APIコマンド動作の許可 (4)ボーレート設定 9,600bpsとした。 3 3 3 3 結結 結結 果果 果果 通信環境の悪い屋内において,6m程度離したコーディ ネータ,エンドデバイス両者間に障害(高さ970mmのス チール製ロッカー)を挟んだ状態で,1:1通信,1:n通信 を行える事を確認した。再送要求やタイムアウト機能も ホスト サーバ C LAN E E E E E E E C : コーディネータ E : エンドデバイス 図4 システム構成 ホストサーバ コーディネータ エンドデバイス 時間 データ送信要求 データ送信要求 データ送信 データ送信 測定 図5 各端末間の状態遷移 エラー発生,再送信要求 データ再送信 図3 マイコンとXBeeの接続 マイコン XBee DIN DOUT RTS CTS
正常に動作した。実際の使用環境である屋外では全く問 題なく使用可能と推測できる。 エンドデバイス,コーディネータの各プロトコルは, それぞれ状態遷移に基づいた設計を行った。各状態遷移 図を図6,図7に示す。図中,エラーがない場合の状態 遷移を実線で,エラーが発生した場合の状態遷移を点線 で示している。また,図中の英数字は各状態を示してい る。また,エンドデバイス,コーディネータ各回路を図 8,図9に示す。 3 3 3 3 .... 111 1 エンド デバイスエンド デバイスエンド デバイスエンド デバイス の状態遷移図の状態遷移図の状態遷移図の状態遷移図 図6はエンドデバイスの状態遷移図である。各状態の 説明は以下のとおりである。 状態1:アイドル状態且つ命令待ち状態。
状態2:XBeeが生成したModem Statusコマンドを受信し, 状態1に戻る。 状態3:XBeeが生成したTX Statusコマンドを受信する。 エラーがある場合は状態6に,無ければ状態1に戻る。 状態4:コーディネータからのデータを受け取る。エラ ーが無ければ状態5に移行し,エラーが発生した場合は 状態1に戻る。 状態5:コーディネータに送信するデータを生成し状態 6に移行する。 状態6:コーディネータにデータを送信し状態1に戻る。 3.2 3.2 3.2 3.2 コーデ ィネータコーデ ィネータ の状態遷移図コーデ ィネータコーデ ィネータの状態遷移図の状態遷移図 の状態遷移図 図7はコーディネータの状態遷移図である。LAN上の ホストサーバから指示があるまで,コーディネータを制 御 する マイコ ンはWebサ ー バと して の処理 を行 ってい る 。 各状態の説明は以下のとおりである。 状態1:エンドデバイスを指定し状態2に移行する。TX Requestフ レ ー ム内 のRF Dataで エン ドデ バイス のア ドレ ス1~255(1バイト)を指定することで,アプリケーショ ン層からも通信エラーが発生しているかどうかの判断を 可能とした。現状では50台程度のエンドデバイスの接続 を想定している。 状態2:エンドデバイスからの反応待ち状態。一定時間 経 過 し て もAPIコ マ ン ド を 受 信 し な か っ た 場 合 に は 状 態 1に戻すタイムアウト機能が働く。 状態3:XBeeが生成したTX Statusコマンドを受信し,エ ラーがあれば状態1に,エラーが無ければ状態2に戻す。 状態4:.XBeeが生成したModem Statusコマンドを受信し, 状態2に戻す。 状態5:エンドポイントからのデータを受信する。エラ ーが無ければ無線通信に関する状態を抜けホストサーバ にデータを送信する。エラーが発生した場合には状態1 測定 1 APIコマンド待ち 6 3 送信ステータスチェック 2 モデムステータス データ送信 データ受信 4 5 図6 エンドデバイス側状態遷移図 1 3 一定時間 以上経過 APIコマンド待ち ホストサーバからの 指示待ち エンドポイント指定 送信ステータスチェック モデムステータス サーバへ転送 データ受信 5 4 図7 コーディネータ側状態遷移図 2 図8 エンドデバイス側回路 図9 コーディネータ側回路
に制御を戻す。 4 44 4 おわりにおわりにおわりにおわりに 通 信 プ ロ ト コ ル はC言 語 で開 発 し て い る の で ,移 植 性 には全く問題が無い。実際,今回の開発では,エンドデ バイス制御用マイコンにはPIC(図8),コーディネータ 制御用マイコンはAVR(図9)を採用しているが,共通 のドライバ・ソースである。 今後,このシステムで高速のデータ通信を行った場合 の,実用となる通信速度の上限を見極める予定である。 参考文献 参考文献 参考文献 参考文献 1) 渡辺明禎.定番無線モジュールXBeeの基礎知識.ト ランジスタ技術12月号 p.98-104 2012 2) 濱原和明.多点センサで計測・制御するならこれ! XBee.トランジスタ技術9月号 p.66-81 2011 3) XBee®/XBee-PRO® RF Modules Product Manual v1.
xEx – 802.15.4 Protocol.Digi International Inc. 2013 4) 浜淳,下平隆.太陽光発電の高度利用に関する研究.
長野県工技センター研報No.6 p.E14-E17 2011 5) 浜淳, 下平隆 .太陽光 発電 の高度利 用に関 する研 究
(第2報).長野県工技セ ンタ ー研報No.7 p.E24-E27 2012