XBee の評価ひょうかじつは 2かい

以前いぜんに XBee を使つかったことがあったのですが、簡単かんたん評価ひょうかしかしていませんでしたし、ほとんどわすれてしまったので、はじめからやりなおしです。

事前じぜん準備じゅんび

まず最初さいしょに、XBee を ZigBee ノードとして使つか場合ばあい、ダウンロードするファームウェアによって動作どうさモードをえることになります。今回こんかいは、PC (あるいは Raspberry Pi)につなぐほうを Coordinator、センサをつなぐ Arduino Fio がわを End Device にしたいとおもいます。(しかしあときますが、End Device ではスリープモードでの動作どうさ前提ぜんていとなり、評価ひょうか厄介やっかいなので、最初さいしょは Router モードで動作どうささせ、スリープしないように設定せっていしたほうが無難ぶなんです。スリープモードの動作どうさについては、XBee のメーカーである Digi International しゃからマニュアルをダウンロードすると詳細しょうさい記述きじゅつされており、とくに XBee End Device Configuration というセクションが有用ゆうようです。)

ツールのダウンロード

閑話休題かんわきゅうだいつぎに、ファームウェアのダウンロードやオプション設定せってい必要ひつような XCTU というソフトを、やはり Digi International しゃのウェブサイトからダウンロードします。最新さいしんばんは Mac でも動作どうさするバイナリがあり、また、よくできた GUI になっていて感心かんしんしました。

設定せってい項目こうもく

XCTU でファームウェアの最新さいしんばんをダウンロードします。方法ほうほう詳細しょうさいは、

などが丁寧ていねい参考さんこうになります。最初さいしょ動作どうさモード(Coordinator, Router など)の設定せっていからなかったのですが、これはファームウェアのダウンロード機能きのう選択せんたくします。なお、ファームウェアをダウンロードすると、動作どうさオプションが工場こうじょう出荷しゅっかことなるになることがありますが、これはとりあえず工場こうじょう出荷しゅっかもどして使用しようしました。

必要ひつようとなる項目こうもく以下いかとおりです。

  • PAN ID

これは、Coordinator をトップノードとする ZigBee のネットワーク(PAN)インスタンスを、のインスタンスから区別くべつするための ID で、通常つうじょうは 16ビットです。XBee では、拡張かくちょう PAN ID として、64ビットの ID を設定せっていすることもできます。ながいアドレスは、ネットワークの衝突しょうとつ防止ぼうし有効ゆうこうのようです。

この数字すうじですが、ランダムな一意いちいめ、ネットワークない共通きょうつう使用しようします。Mac OS や Linux であれば、

$ dd if=/dev/urandom bs=8 count=1 | od -txL
1+0 records in
1+0 records out
8 bytes transferred in 0.000012 secs (671089 bytes/sec)
0000000 c6b559db2f84d9fa

などのようにるのが簡単かんたんだとおもいます。ここでは、れいとして c6b559db2f84d9fa になってます。/dev/urandom はランダムデバイスなので、サイコロのように毎回まいかいことなるられます。

  • Sleep Mode

ここではとりあえず、スリープしない設定せっていにしておきます。なお、End Device にすると Pin Sleep というモードがありますが、Arduino Fio では SLEEP RQ がレベル H になっているので、つねにスリープ要求ようきゅうとなってしまい、うまくありません。最初さいしょは End Device ではなくて Router モードを使つかうのが簡単かんたんのようです。(なお、End Device で SM=0(スリープなし)モードに設定せっていしようとするとエラーになります。このあたりはちょっとかりにくいのですが、設定せっていできない、ということのようです。わたしもマニュアルをちゃんとれてませんが、できたら XCTU ソフトで明解めいかいなエラー説明せつめいをしてくれたら、1あいだほどの無為むい時間じかんつぶさずにんだのにな、とおもいました。)

  • Destination Address

DH, DL という項目こうもくで、通信つうしん相手あいての MAC アドレスを設定せっていできます。つね必要ひつよう設定せっていではないようですが、PAN ない一対一いちたいいち通信つうしんしかしないのであれば、設定せっていしておくと有用ゆうようのようです。(わたし勉強べんきょう不足ふそくですが、こちら ↓ を参考さんこうにさせていただきました。)

XBee ユニットの MAC アドレスですが、ユニットの裏側うらがわ金属きんぞくシールドにラベルがられた部分ぶぶんに 0013A200 ではじまる 16けたの 16進数しんすう記載きさいされています。また、XCTU ソフトからすこともできます。) DH に上位じょうい 8けた、DL に下位かいの 8けた入力にゅうりょくします。

この指定していですが、(たりまえですが)自分じぶんのアドレスではなくて相手あいてのアドレスを指定していします。ユニット A がわには B の MAC アドレスを、B がわには A の MAC アドレスを指定していします。
実験じっけん

つぎ実験じっけんです。XBee Explorer が 2だいあると簡単かんたんなのですが、ない場合ばあいには loopback cluster ID (0x12) という機能きのう便利べんりのようです。(わたし以前いぜんためしたはずだが、わすれた。)

ユニット A からデータを送信そうしんしてユニット B でループバックさせたい場合ばあい、ユニット B の DOUT -> DIN を結線けっせんしなくても、ユニット A がわで ATCI12 というコマンドを実行じっこうする(XCTU ソフトであれば、CI という項目こうもくに 12 を設定せっていする)ことにより、ユニット B が勝手かってにデータをループバックしておくかえしてくれるようです。詳細しょうさいは、Digi International しゃのマニュアルで loopback cluster というキーワードを検索けんさくしてみてください。

はなしもどして、今回こんかいわたしは XBee Explorer が 2だいあったので、両方りょうほうを Mac につなぎ、シリアルターミナルソフトで実験じっけんしました。2つのユニットのあいだ通信つうしんしているときには、XBee Explorer じょうの(Arduino Fio の場合ばあい同様どうように) RSSI という LED が点灯てんとうします。通信つうしんわると、自動的じどうてきえます。

Arduino Fio につないでみる

最後さいごに、Arduino Fio に Router モードのユニットをせてみました。

最初さいしょ注意ちゅういてんはビットレートです。もし、XBee のデフォルト設定せっていが 9600bps であれば(XCTU ソフトで確認かくにんできるようです。詳細しょうさい勉強べんきょう)、Arduino で Serial.begin(9600) しないといけません。

つぎ注意ちゅういてんは、End Device モードなどでスリープしていると通信つうしんできない、ということです。もし、電源でんげん投入とうにゅうに Arduino Fio じょうの ON LED がすぐにえてしまう場合ばあいは、スリープモードにはいっていることをしめします。この場合ばあいは、まずは Router モードのファームウェアで実験じっけんすることをおすすめします。

Arduino からシリアルデータがると、RSSI LED が点灯てんとうし、相手あいてユニットの RSSI も点灯てんとうし、相手あいてユニットの DOUT からシリアルデータがるのが正常せいじょう動作どうさです。上記じょうき 2てん注意ちゅういし、おためしください。

今日きょうはとりあえず、こんなところです。今度こんど End Device モードの Cycle Sleep をためしたときは、またきたいとおもいます。

(8がつ1にち作業さぎょう
[siblingso] [parent]

コメントをのこ