XBeeモジュールの使い方(802.15.4での温度センサネットワーク)


 今回はファームウェアを802.15.4に設定しアナログ温度センサMCP9701(Microchip社製)を3個のエンドデバイスXBeeに接続し、IRパラメータを用いて60秒間隔でコーディネータXBeeに温度結果を送信するネットワークの構築方法を解説します。

 XBee3を使用して1個のコーディネータXBeeと3個のエンドデバイスXBeeのConfigurationを以下のように設定します。

 コーディネータエンドデバイス1エンドデバイス2エンドデバイス3
ID2025202520252025
DL0000
MY0123
CECoordinator [1]End Device [0]End Device [0]End Device [0]
APAPI Mode [1]API Mode [1]API Mode [1]API Mode [1]
IR060000ms(EA60)60000ms(EA60)60000ms(EA60)

 ここで、エンドデバイスの数が増加することによりフレームの送信不具合が発生した場合にRR (XBee retries)パラメータを設定することも可能です。結論から言うと、デフォルト状態ではRRは0のままで問題ありません。

 XBee 802.15.4 モジュールの RR (XBee Retries) パラメータは、デバイスが実行するアプリケーション層の再試行回数を設定または取得するために使用されます。特に、MM コマンドによって MAC ACK が有効になっている場合、ユニキャスト送信ごとにデフォルトで最大 5 回の MAC 層の再試行が自動的に行われます。つまり、RR が 0 に設定されている場合でも、MAC 層はユニキャスト送信に対して最大 5 回の再試行を実行します。

 従って、RR を 0 に設定しても MAC 層の再試行には影響せず、アプリケーション層の再試行にのみ影響します。MAC 層は引き続きデフォルトの再試行メカニズムを実行します。

 MMはMACモード値の設定/読み取りを設定します。パラメータは以下のとおりです。

MMのパラメータ意味
802.15.4+ Digi header w/ACKS [0]802.15.4 RFパケットにおけるDigiヘッダーの使用を有効と共にACK(確認応答)を有効
Strict 802.15.4 no ACKS [1]厳密な802.15.4 RFパケットでありACK無効
Strict 802.15.4 with ACKS [2]厳密な802.15.4 RFパケットでありACK有効
802.15.4+ Digi header no ACKS [3]802.15.4 RFパケットにおけるDigiヘッダーの使用を有効と共にACKを無効

 ここでMMについても説明します。MMはMACモード値の設定/読み取り。MACモードは、802.15.4 RFパケットにおけるDigiヘッダー(XBee3より前はMaxStreamヘッダー)の使用を有効/無効にします。 

 MaxStreamヘッダーとは、2006年にDigi Internationalに買収される前にMaxStream社が開発したモジュールで使用される特定のプロトコルヘッダーを指します。このヘッダーは、XBeeモジュールで使用されるデータパケット構造の一部であり、通信を管理し、デバイス間の適切なデータ伝送を確保します。通常、アドレス指定、パケットタイプ、XBeeネットワークの動作に必要なその他の制御情報などが含まれます。

 コーディネータXBeeのコンソール画面を以下に示します。3個のエンドデバイスから60秒毎にフレームが送信されていることを確認することができます。

以下に、各エンドデバイスから送信されたフレームを示します。

エンドデバイス1

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

7E 00 0A 83 00 01 31 00 01 04 00 02 F3 50

Start delimiter: 7E

Length: 00 0A (10)

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

16-bit source address: 00 01

RSSI: 31

Options: 00

Number of samples: 01

Digital channel mask: 00 00

Analog channel mask: 04 00

Sample 1: – DIO1/AD1 analog value: 02 F3 (755)

Checksum: 50

エンドデバイス2

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

7E 00 0A 83 00 02 35 00 01 04 00 02 F6 48

Start delimiter: 7E

Length: 00 0A (10)

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

16-bit source address: 00 02

RSSI: 35

Options: 00

Number of samples: 01

Digital channel mask: 00 00

Analog channel mask: 04 00

Sample 1: – DIO1/AD1 analog value: 02 F6 (758)

Checksum: 48

エンドデバイス3

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

7E 00 0A 83 00 03 27 00 01 04 00 03 06 44

Start delimiter: 7E

Length: 00 0A (10)

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

16-bit source address: 00 03

RSSI: 27

Options: 00

Number of samples: 01

Digital channel mask: 00 00

Analog channel mask: 04 00

Sample 1: – DIO1/AD1 analog value: 03 06 (774)

Checksum: 44

16-bit source addressにぞれぞれのMYが反映されています。温度データはエンドデバイス1から3まで順番に、10進数で755,758,774となっています。

XBee内蔵のA/D変換器の分解能10ビットなので最大値は1023となり、参照電圧Vrefがデフォルトの1.25Vなので、電圧に変換した後に温度換算すると以下の結果を得ることができます。

と(724×1.25)/1023=0.8846[V]であることが分かります。

・エンドデバイス1:(755×1.25)/1023=0.9225[V]よりT=(Vout-V0C)/Tc1=(922.5-400)/19.5=26.79[℃]

・エンドデバイス2:(758×1.25)/1023=0.9261[V]よりT=(Vout-V0C)/Tc1=(926.1-400)/19.5=26.98[℃]

・エンドデバイス3:(774×1.25)/1023=0.9457[V]よりT=(Vout-V0C)/Tc1=(945.7-400)/19.5=27.98[℃]