XBeeモジュールの使い方(デジタルラインパッシング:APIフレーム構造)


 前回はI/Oラインパッシングのひとつであるデジタルラインパッシングのカスケード接続について解説しました。今回はデジタルラインパッシングの変化検出モードにおけるAPIフレームの構造について解説します。

 デジタルラインパッシングの変化検出モードにおいて、送信側XBeeのDIO1のタクトスイッチを押した場合を想定します。I/OラインパッシングはAP(API Enable)の設定に依存せずに動作可能です。今回は受信側XBeeのAPIフレームの構造を調べるため、受信側XBeeのAPをAPI Modeに設定します。APIフレームの構造はファームウェアにより差異があるため、それぞれのファームウェアについて解説します。

1.802.15.4ファームウェアの場合

 変化検出モードは送信側XBeeでIRが0の場合かつICが設定されている場合のみ可能です。送信側のタクトスイッチの情報をデジタルラインパッシングで転送する場合の設定方法を以下に示します。CHやIDの基本的なパラメータは送信側XBeeと受信側XBeeで一致しているものとします。

【送信側XBee】

MY1
D1Digital Input [3]
IC0x2

【受信側XBee】

APAPI Mode [1] or [2]
D1Digital Out, Low [4]
IA1(送信側のMYの値)
T10x32 (5000ms)

 受信側XBeeのDIO1に対応するタクトスイッチを1回押すと受信側Console画面に2個のフレームが送信されていることを確認することができます。送信側D1がDigital Input [3]に設定されている場合、この端子には3.3V(High)の電位が立っています。この状態でタクトスイッチを押したとき、D1は0V(Low)となりHighからLowに遷移することになります。さらに、タクトスイッチを離したとき、D1は3.3V(High)となりLowからHighに遷移することになります。このために、受信側XBee Console画面に2個のフレームが送信されています。

以下にそれぞれのAPIフレーム構造を示します。

(1)タクトスイッチを押したとき(HighからLowに遷移)

RX (Receive) Packet 16-bit Address IO (API 1)

7E 00 0A 83 00 01 2E 00 01 00 02 00 00 4A

Start delimiter: 7E

Length: 00 0A (10)

Frame type: 83 (RX (Receive) Packet 16-bit Address IO)

16-bit source address: 00 01

RSSI: 2E

Options: 00

Number of samples: 01

Digital channel mask: 00 02

Analog channel mask: 00 00

Sample 1: – DIO1/AD1 digital value: Low

Checksum: 4A

 XBee APIフレームのDigital channel maskは、どのデジタルI/Oラインでサンプリングが有効になっているかを示すために使用されます。Digital channel maskの各ビットは、デバイス上の1つのデジタルI/Oラインに対応しています。例えば、ビットは次のように割り当てられています。

ビット0 = DIO0

ビット1 = DIO1

ビット2 = DIO2

  ・

  ・

  ・

ビット12 = DIO12

ビット13 = DIO13

ビット14 = DIO14

ビット15は適用されません。

 例えば、デジタルチャンネルマスクが0x002Fの場合、DIO0、DIO1、DIO2、DIO3、DIO5がデジタル入力または出力として設定されていることを意味します。APIフレームに設定されたデジタルデータは、これらのピンのデジタル状態(High(1)またはLow(0))を示します。上記のAPIフレームではDigital channel mask: 00 02であるので、ビット1がHighであることから、DIO1がアクティブであることが分かります。

 上記のAPIフレームではアナログ入力が無効なため、Analog channel maskが00 00となっており、この00 00はAPIフレームには反映されません。つまり、チェックサム直前の2バイト00 00が信号を示しています。このことからビット1がLow(0)であることが分かります。

(2)タクトスイッチを離したとき(LowからHighに遷移)

RX (Receive) Packet 16-bit Address IO (API 1)

7E 00 0A 83 00 01 2E 00 01 00 02 00 02 48

Start delimiter: 7E

Length: 00 0A (10)

Frame type: 83 (RX (Receive) Packet 16-bit Address IO)

16-bit source address: 00 01

RSSI: 2E

Options: 00

Number of samples: 01

Digital channel mask: 00 02

Analog channel mask: 00 00

Sample 1: – DIO1/AD1 digital value: High

Checksum: 48

 チェックサム直前の2バイト00 02が信号を示しています。このことからビット1がHigh(1)であることが分かります。

2.DigiMeshファームウェアの場合

 上記の802.15.4ファームウェアと同様に送信側XBeeでIRが0の場合かつICが設定されている場合のみ変化検出モードになります。送信側のタクトスイッチの情報をデジタルラインパッシングで転送する場合の設定方法を以下に示します。CHやIDの基本的なパラメータは送信側XBeeと受信側XBeeで一致しているものとします。

【送信側XBee】

D1Digital Input [3]
IC0x2

【受信側XBee】

APAPI Mode [1] or [2]
D1Digital Out, Low [4]
IA0013A20012345678 (送信側のシリアルナンバー)
T10x32 (5000ms)

受信側XBeeのDIO1に対応するタクトスイッチを1回押すと受信側Console画面に2個のフレームが送信されていることを確認することができます。以下にそれぞれのAPIフレーム構造を示します。

(1)タクトスイッチを押したとき(HighからLowに遷移)

IO Data Sample RX Indicator (API 1)

7E 00 12 92 00 13 A2 00 41 AE 36 24 FF FE C2 01 00 02 00 00 00 AD

Start delimiter: 7E

Length: 00 12 (18)

Frame type: 92 (IO Data Sample RX Indicator)

64-bit source address: 00 13 A2 00 41 AE 36 24

16-bit source address: FF FE

Receive options: C2

Number of samples: 01

Digital channel mask: 00 02

Analog channel mask: 00

DIO1/AD1 digital value: Low

Checksum: AD

(2)タクトスイッチを離したとき(LowからHighに遷移)

IO Data Sample RX Indicator (API 1)

7E 00 12 92 00 13 A2 00 41 AE 36 24 FF FE C2 01 00 02 00 00 02 AB

Start delimiter: 7E

Length: 00 12 (18)

Frame type: 92 (IO Data Sample RX Indicator)

64-bit source address: 00 13 A2 00 41 AE 36 24

16-bit source address: FF FE

Receive options: C2

Number of samples: 01

Digital channel mask: 00 02

Analog channel mask: 00

DIO1/AD1 digital value: High

Checksum: AB

 802.15.4ファームウェアは16-bit source addressを使用していましたが、DigiMeshファームウェアは64-bit source addressを使用している点が異なります。フレームの解釈は802.15.4ファームウェアと同じです。

 今回は変化検出モードのAPIフレームを示しましたが、IRを設定したサンプリングモードでも設定した場合は、受信側XBeeのConsole画面に周期的にフレームが送信されることを確認することができます。