Archive for the 'XBee' Category

XBeeを最高速で使いたい

Posted by ゆのじ on 11月 2nd, 2009

Digi社のXBee、かなり便利に使える道具だと思うのだが、割とはまっているのが速度。ああいった物に速度を求めるなという話もあるが、実際どれくらい出るのだろうと思って試してみることにした。なお、XBeeといっても802.15.4だけしか使えないOEM RF Moduleで、ZigbeeやDigimeshを使えるモデルではない。また、転送レートを調べることが目的なので、Transparent modeで使っての試験とした。

試験は自宅というごくありふれた環境で、送信元と送信先のXBee距離は40cm程度、WiFiの電波もそれ以外の妨害電波もばしばし飛んでいる状況である。その中でXBeeのボーレートを250kbpsにして、適当なソースをつないでフロー制御なしで走らせてみることにした。設定は8bit/Odd/1Stopとしたので、1バイトあたり9bit分のデータを飛ばすことになる。

その結果だが、数回繰り返したところ、おおよそ12~13kbytes/sec程度の転送レートが出ることがわかった。流れたビット数で108~117kbps、つまり出ても定格の半分程度ということになるだろうか。このテストでは、最大速度を知ることが目的だったのでフロー制御をしていない。そのため、パリティをつけている分欠損データは拾わない(カウントしていない)ものの、データの欠落は山ほど出る。実際に使うには送信側できちんとフロー制御しなければいけないだろう。また、XBeeは無線の制御にCSMA-CA方式をつかっているため、リアルタイム性も保証されない。ビットレートを落とせばある程度の安定したタイムラグを得ることは出来るだろうが、正確なリアルタイム制御をしたければNTP的にラウンドトリップタイムを得たりしなければならいような感じである。

ちなみに、マニュアルによれば、フロー制御をしたくない場合、DI Buffer size(202bytes)より1メッセージを小さくしたりボーレートを下げることを要点としてあげている。

簡単なテストではあったが、割と勘所はつかめた気がしてきた。ひとまず、CTSを握って制御してやることがまず第一のようだ。

引き続き開発。

追記:その後、CTSをきちんと処理するようにした結果、目視する限りビット落ち無しで、8k~9kbytes/sec程度のスループットが出ることもわかった。鉄筋コンクリートの壁を数枚隔てたくらいではほぼスループットは落ちない感じ。ビット落ちがきわめて少ないのは大変有り難い。

XBeeのファクトリーリセット方法

Posted by ゆのじ on 8月 22nd, 2009

snapshot-1250887593.253979

ついうっかり、古いXBeeのボーレート設定を間違えてしまって(*1)、XBeeに一切アクセス出来なくなってしまった。その対処法をさんざんマニュアルにあたったのだが全然情報がない。困り果ててgoogleをたたき続けた結果、やっと見つけた。それがこれ。シリアル経由でXBeeにつながっていることだけは最低限必要なので、sparkfunのXBee Explorerあたりを買っておく必要はある。

やることは強制的なファームウェア書き換えなのだが、方法をそのまま機械的に訳しておく。公式に認められた方法ではないので自己責任にて。

  1. モジュールをインタフェイスボードから外しておく
  2. インタフェイスボードをPCに接続する
  3. X-CTU(*2)を起動する
  4. Modem Configurationのタブを開く
  5. Always update firmwareのチェックボックスをチェックする
  6. 修正したいXBeeの型番をドロップダウンから選ぶ
  7. 入れ直したいファームウェアバージョンをドロップダウンから選ぶ
  8. writeボタンをクリックする。しばらくするとXBeeに繋がらないメッセージが表示されるので、そのタイミングでXBeeを気をつけて挿入する。

手順はこれだけだが、私の場合一度ではうまくいかず、2度トライしてうまくいった。正確に場所をあわせて一気に挿すようにするとうまくいく(気がする)。

今回、使っているモジュールが古くて(XBP24-AWI-001)、この型番は今のファームウェアリストにはないため、正しく接続されていても型番を自動的に認識することができなかった。ここはXBP24を選んで書き直して完了。

本当のところ、どうやるのが正しかったのかを知りたいところではあるので、タイミングをみて代理店に問い合わせてみようかと思う。もしご存じの方がいれば教えていただければ幸い。

*1)後から調べたら、ビットレートを間違ったのではなくてファームウェアが古かったのが原因だったようだ。。

*2)これはDigi純正の設定ツール。Digiのウェブサイトからダウンロードできる。