〔マイコンのトップに戻る〕
〔パート1〕
〔パート2〕
〔パート3〕
〔パート5〕
〔パート6〕
〔XBee3〕
APIモードイメージ図
次回以降にXBeeとマイコンやパソコンで接続する為にはこのAPIフレームデータがどんな構造に
なっているのか、また、どんな種類のタイプが有るのかを調べないとダメです。
なので今回のこのページではAPIフレームデータの中でも私が使用するであろう基本のフレームタイプ
のみ記述します。
その他のAPIフレームデータについては、こちらのユーザーガイド(S2/S2B)を参照下さい。 *2)
"S2C"モジュールのユーザーガイドはこちらです。 *3)
"XBee"モジュールのユーザーガイドはこちらです。 *4)
APIフレームデータ(APIパケット)の構造
下図がAPIフレームデータ(APIパケット)の構造で、先頭が0x7Eで始まりチェックサムで終了します。
チェックサムの計算
チェックサムは上図のフレームデータ赤枠内のみ計算対象とします。
例) 0x7E 0x00 0x05 0x08 0x01 0x4E 0x4A 0xFF 5F
[ 0xFF - ((0x08 + 0x01 + 0x4E + 0x4A + 0xFF) & 0xFF) ] は 5F とこの様に計算します。
”0x7E”
"0x7E"が先頭以外に現れる場合が有ります、そんな時はAPIパケットの先頭を誤認識してしまう可能性
が有ります。
XBeeの設定項目で"AP-API Enable"を"2(API enabled escaping)"とした場合、
先頭以外に現れた"0x7E"を"0x7D 0x5E"に置換えて送信を
行います、これをエスケープモードと言います。
(だからぁ、"0x7D"を挿入してぇ、"0x7E xor 0x20 ⇒ 0x5E"です)
他に "0x11"も"0x7D 0x31"に変換
"0x13"も"0x7D 0x33"に変換
"0x7D"も"0x7D 0x5D"に変換
但し、チェックサムは変換前のコードで計算します。 *2)
"XBee3は、[UART Interfacing]の項目です。
-------------------------------------(S2/S2B)---------------------------------------
まず、"Function Set"の項目で"ZIGBEE ROUTER API"を選択します。
次に、"Firmware version"の項目で書き込むバージョンを選択します、
一番上が新しいのでそれを選びましょう。
後は、[Update]ボタンをクリックしてのファームウェアを書き込みます。
(S2/S2BはここまでDへ進む)
-----------------------------------------------------------------------------------
-----------------------------(S2C/XBee3はここから)------------------------------- *3)
[Sleep Modes]の項目に有る、"SM"の設定が"No Sleep(Router)[0]"に
なっている事を確認します。
[Serial Interfacing]の項目に有る、"AP"の設定を"API enabled[1]"に設定を行い、
項目右横の[Write]丸ボタンをクリックして設定をXBeeに書き込んで下さい。
"XBee3は、[UART Interfacing]の項目で、"API Mode Without Escapes[1]"の設定名です。
(因みに、[1-2]以外の設定になっていれば"AT"モードとなります)
[Networking]の項目に有る、"CE"の設定が"Disabled[0]"に
なっている事を確認します。(”ルータ”モードです)
"XBee3は、"Join Network[0]"の設定名です。
-----------------------------------------------------------------------------------
今回はAP-API Enable"を"1"で実験します、エスケープモード
だとちょっとぉメンドクサイのでぇ。
"XBee3は、[UART Interfacing]の項目です。
図の@のタブをクリックして[Network Working Mode]にします。
下図が表示されるので図のAをクリックし通信網をスキャーンします。
(スキャーン開始したらアイコンはストップボタンになります)
この様に親機にぶら下がっている子機が表示されます。
Configurationを行いたい子機(B)をダブルクリックします。
図の@のタブをクリックして[Consoles Working Mode]にします。
下図が表示されるので図のAをクリックし回線をオープンします。
(オープンしたらアイコンはクローズボタンになります)
上図のBの[Add new frame to the list]ボタンをクリックします。
APIフレームデータの作成を行ったら、[OK]ボタンをクリックします。
フレームタイプは"08"のATコマンド("SL":自アドレスのLOWbyteを得る)発行での例です、
なので親へのパケット送信ですが、子機へのフレームデータなら親機から子機に送信されます。
[Add frame]ボタンをクリックします。
"frame_0"を選択し、[Send selected frame]ボタンをクリックします。
「Frames log」に送受信結果が表示されます。
赤文字データが子機から返された内容です。
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 000F | フレームデータの長さ (15byte) |
3 | 17 | フ レームタイプ |
4 | 01 | フ
レームID (返信用のデータみたいだが、とりあえず01) |
5 | 0013A200409821A5 | 送 信先の64ビットアドレスを設定 |
13 | FFFE | 送
信先の16ビットアドレスを設定 (アドレスが不明な場合はFFFEとしておく) (設定するとデータは早く届くらしい) |
15 | 00 | リ
モートコマンドの送信オプション (利用しない場合は00) |
16 | 4953 | AT コマンド ("I" "S") (ATの文字はいらない) |
18 | FB | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0017 | フレームデータの長さ (23byte) |
3 | 97 | フ レームタイプ |
4 | 01 | フ レームID |
5 | 0013A200409821A5 | 送 信元の64ビットアドレスを設定 |
13 | 980F | 送 信元の16ビットアドレスを設定 |
15 | 4953 | AT コマンド ("I" "S") |
17 | 00 | コ
マンドの実行結果 00=正常 01=エラー 02=無効なコマンドです 03=無効なパラメータです 04=リモートコマンド送信に失敗しました |
18 | 0100020400020207 | コマン
ドデータ 01 0002 デジタルI/Oのマスクパターン 04 ADCのマスクパターン 0002 デジタルI/Oの入力情報データ 0207 AD2から読み込まれた電圧値データ (詳しくは前頁のパート3・パート1を参照下さい) |
26 | BF | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0010 | フレームデータの長さ (16byte) |
3 | 17 | フ レームタイプ |
4 | 01 | フ
レームID (返信用のデータみたいだが、とりあえず01) |
5 | 0013A200409821A5 | 送 信先の64ビットアドレスを設定 |
13 | FFFE | 送
信先の16ビットアドレスを設定 (アドレスが不明な場合はFFFEとしておく) |
15 | 02 | リ
モートコマンドの送信オプション (02=コマンドの指示をすぐに有効にする) ここで有効にしない場合は、ATACコマンドで有効にします。 |
16 | 4431 | AT コマンド ("D" "1") |
18 | 05 | AT
コマンド(ATD1)のパラメータ (05=I/O出力をHIGH 04=I/O出力をLOW) |
19 | 1B | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 000F | フレームデータの長さ (15byte) |
3 | 97 | フ レームタイプ |
4 | 01 | フ レームID |
5 | 0013A200409821A5 | 送 信元の64ビットアドレスを設定 |
13 | 980F | 送 信元の16ビットアドレスを設定 |
15 | 4431 | AT コマンド ("D" "1") |
17 | 00 | コ
マンドの実行結果 (00が正常 その他の数値はエラー上記参照) |
18 | BF | チェックサム |
APIパケットのフレームタイプ"08"で[ATSL]のコマンドを発行すると、
XBeeからはフレームタイプ "88" のAPIパケットで応答します。
(ATSLコマンドは自分のアドレスの下位4バイトが返されます)
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0004 | フレームデータの長さ (15byte) |
3 | 08 | フ レームタイプ |
4 | 01 | フ
レームID (返信用のデータみたいだが、とりあえず01) |
5 | 534C | AT コマンド ("S" "L") (ATの文字はいらない) |
7 | 57 | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0009 | フレームデータの長さ (15byte) |
3 | 88 | フ レームタイプ |
4 | 01 | フ レームID |
5 | 534C | AT コマンド ("S" "L") |
7 | 00 | コマンドの実行結果 00=正常 01=エラー 02=無効なコマンドです 03=無効なパラメータです 04=Tx送信に失敗しました |
8 | 409C90AB | コマンドのデータ (アドレスの下位4バイトが返されました) |
12 | C0 | チェックサム |
(親機側 X-CTU1 の画面)
フレームタイプ"10"のAPIパケットが送信され、
その送信結果をフレームタイプ"8B"のAPIパケットで返されます。
(子機側 X-CTU2 の画面)
送られてきたデータはフレームタイプ"90"のAPIパケットで受信します。
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0012 | フレームデータの長さ (18byte) |
3 | 10 | フ レームタイプ |
4 | 01 | フ
レームID (00にするとAPIパケット"8B"が送信されない) |
5 | 0013A200409821A5 | 送 信先の64ビットアドレスを設定 |
13 | FFFE | 送
信先の16ビットアドレスを設定 (アドレスが不明な場合はFFFEとしておく) |
15 | 00 | ブ ロードキャスト送信の最大ホップ数を設定?? |
16 | 00 | 送 信オプション |
17 | 54455354 | 送信す るデータ("TEST") |
21 | 5E | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0010 | フレームデータの長さ (16byte) |
3 | 90 | フ レームタイプ |
4 | 0013A200409C90AB | 送 信元の64ビットアドレスを設定 |
12 | 0000 | 送 信元の16ビットアドレスを設定 |
14 | 01 | 受
信したパケットの情報 01=内容を認めたパケット(通常) 02=ブロードキャストされたパケット 20=暗号化されたパケット 40=エンドデバイスから送信さ れたパケット |
15 | 54455354 | 受信し たデータ("TEST") |
19 | 62 | チェックサム |
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0007 | フレームデータの長さ (7byte) |
3 | 8B | フ レームタイプ |
4 | 01 | フ レームID |
5 | 980F | 送
信元の16ビットアドレスを設定 (レスポンスACKを返したXbeeの16ビットアドレス) |
7 | 00 | 送
信を何回リトライしたかの個数 |
8 | 00 | 送信の状況 00=正常 01=MAC ACK 失敗 02=CCA 失敗 15=指定した送信先アドレスが不正 21=ネットワークでACKが失敗 22=ネットワークに参加していない 23=自分宛のアドレスを指定した 24=指定のアドレスが見当たらない 25=ルートが見つからない 26=ブロードキャスト失敗 2B=無効なバインディングテーブルインデックス 2C=空きバッファのリソースエラー欠如、タイマなど 2D=APS通信をブロードキャストで試してみた 2E=APS通信をユニキャストで試してみたが、EE=0 32=空きバッファのリソースエラー欠如、タイマなど 74=データ・ペイロードが長すぎる 75=要求されていない間接メッセージ |
9 | 00 | ディスカバリーの状況?? 00=ディスカバリーのオーバヘッドはなかった 01=アドレスディスカバリー 02=ルートディスカバリー 03=アドレスとルートディスカバリー 40=拡張タイムアウトディスカバリー |
10 | CC | チェックサム |
(子機側 X-CTU2 の画面)
フレームタイプ"10"のAPIパケット内のフレームIDを"00"にして
いるのでフレームタイプ"8B"のAPIパケットは返されていません。
又、送信先アドレスを"0000000000000000"にしています、コーディネータに送る場合はこれでもOK
(親機側 X-CTU1 の画面)
フレームタイプ"90"のAPIパケットで受信されています。
親機のリセットボタンを押して見た、ステータス"00"と"06"の2個が送られて来ています。
オフセット | データ | 説明 |
0 | 7E | 開始コード |
1 | 0002 | フレームデータの長さ (2byte) |
3 | 8A | フ レームタイプ |
4 | 00 | ステータス 00:ハードウエアがリセットされた 01:ウオッチドッグタイマーにてリセットされた 02:ネットワークに接続した(ルータ・エンドデバイスのみ) 03:ネットワークから切り離された 06:コーディネータが動作を開始した 07:ネットワークセキュリティキーを更新した 0D:供給する電源電圧が超えた(PRO S2B のみ) 11:ネット接続中にモデム構成が変更された 80+:スタックエラー |
5 | 75 | チェックサム |
"XBee3"モジュールでの見直し(*4) 2019/07/06
"S2C"モジュールでの見直し(*3) 2018/02/05
X-CTU(ver6.3.4)での見直し(*2) 2017/01/20
追記(*1) 2013/05/18
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.