XBeeモジュールの使い方(802.15.4ファームウェアでのAPIフレームの受信)


 前回の解説では802.15.4ファームウェアを使用して、ローカルデバイス1台と複数のリモートデバイス2台をペアリングする方法を解説しました。今回はリモートデバイス(子機)からAPIフレームを周期的にローカルデバイス(親機)に送信する方法を解説します。

前回の設定に加えてリモートデバイスのみを以下の設定を追加します。

【リモートデバイス(XBEE_BとXBEE_C)の設定】

・I/O SettingのD0 をADC(2)に設定します。

・I/O Samplingの電卓のアイコンをクリックしms単位の時間に5000を設定します。これにより5秒感覚でAPIフレームをローカルデバイスに送信します。

さらにXBEE_BとXBEE_CのAPIフレームを識別するため以下の設定をします。

・XBEE_BのAddressingのMY 16-bit Source Addressを1に設定します。同様にXBEE_CのMYを2に設定します。

 MY(16-bit Source Address) は、XBeeがローカルネットワーク内で自分自身を識別するために使用する 16ビットのアドレス です。MYは「自分自身(Myself)」の略です。

 MYに設定した値はAPIフレーム送信時に、MYアドレスが「送信元アドレス」としてAPIフレームに含まれます。受信側では、その値をもとに、どのノードから来たかを判断することができます。

 この状態でローカルデバイスにXBeeのConsole画面のタブをクリックします。 この画面の左上のコネクタ外れているアイコンをクリックするとアイコンの色が緑色になり、Frames logの画面にフレームが送信さされていることを確認することができます。

Frameを選択するとFrame detailsのカラムにフレームの詳細が表示されます。

Frame detailsのカラムの一番下にあるCopy packet informationボタンをクリックすると フレームの内容をコピーできます。以下がフレームの内容です。

APIフレームの構造

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

7E 00 0A 83 00 01 2A 00 01 02 00 03 FF 4C

Start delimiter: 7E

Length: 00 0A (10)

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

16-bit source address: 00 01

RSSI: 2A

Options: 00

Number of samples: 01

Digital channel mask: 00 00

Analog channel mask: 02 00

Sample 1: – DIO0/AD0 analog value: 03 FF (1023)

Checksum: 4C

・Start delimiter: 7Eはフレームの開始コードです。

・Length: 00 0A (10)はLengthとChecksumを除いたフレームのバイト数です。カッコ内は10進数で表示されており、バイト数が10であることを示しています。

・Frame type: 83 (RX (Receive) Packet 16-bit Address IO)はフレームタイプを表しており、このフレームが16-bit Addressで送信されたことを意味しています。

・16-bit source address: 00 01はリモートXBeeのMYで設定したアドレスです。複数のリモートXBeeが存在する場合はこのアドレスで識別することができます。

・RSSI: 2Aは電波の相対信号強度値を表しています。RSSIは Received Signal Strength Indicator の頭文字です。送信ノードが受信したノード発見要求パケットの相対信号強度値を16進数で表示しています。単位は[dBm]です。この場合は0x2Aは10進数で42であるのでRSSIは-42[dBm]となります。

・Number of samples: 01はサンプル数を意味しており、この場合は1が表示されています。

・Digital channel mask: 00 00はデジタル信号のIOがアクティブになっているチェンネルを表示するものであり、今回は0が表示されていますフレームには含まれていません。

・Analog channel mask: 02 00はアナログ信号のIOがアクティブになっているチェンネルを表示しています。0x02は2進数で0000010であり最下位のビットがAD0に対応しており最下位から2番目がAD1、下位から3番目がAD2、下位から4番目がAD3に対応しています。AD0とAD1は負論理となっており、アクティブに設定されると0になります。

今回はAD0のみアクティブに設定しているため下位の2ビットが10となっています。

・Sample 1: – DIO0/AD0 analog value: 03 FF (1023)

今回の設定ではAV Analog Voltage Refafenceがデフォルトの1.25Vであり、開放状態だったため10ビットの最大値である1023が表示されています。

・Checksum: 4CはFrame typeからChecksum直前のバイトを足し合わせ、以下の式で算出します。

0xFFFF – (0x83 + 0x00 + 0x01 + 0x2A + 0x00+0x01 + 0x02 + 0x00 + 0x03 + 0xFF) ]  = 0xFFFF-0x1B3=0xFE4C

この答えの下位の1バイトである0x4Cがチェックサムになります。