2009Digi社のXBee、かなり便利に使える道具だと思うのだが、割とはまっているのが速度。いった物に速度を求めるなという話もあるが、実際どれくらい出るのだろうと思って試してみることにした。Moduleで、ZigbeeやDigimeshを使えるモデルではない。modeで使っての試験とした。試験は自宅というごくありふれた環境で、送信元と送信先のXBee距離は40cm程度、WiFiの電波もそれ以外の妨害電波もばしばし飛んでいる状況である。その中でXBeeのボーレートを250kbpsにして、適当なソースをつないでフロー制御なしで走らせてみることにした。設定は8bit/Odd/1Stopとしたので、1バイトあたり9bit分のデータを飛ばすことになる。その結果だが、数回繰り返したところ、おおよそ12~13kbytes/sec程度の転送レートが出ることがわかった。流れたビット数で108~117kbps、つまり出ても定格の半分程度ということになるだろうか。このテストでは、最大速度を知ることが目的だったのでフロー制御をしていない。そのため、パリティをつけている分欠損データは拾わない(カウントしていない)ものの、データの欠落は山ほど出る。実際に使うには送信側できちんとフロー制御しなければいけないだろう。XBeeは無線の制御にCSMA-CA方式をつかっているため、リアルタイム性も保証されない。ビットレートを落とせばある程度の安定したタイムラグを得ることは出来るだろうが、正確なリアルタイム制御をしたければNTP的にラウンドトリップタイムを得たりしなければならいような感じである。size(202bytes)より1メッセージを小さくしたりボーレートを下げることを要点としてあげている。簡単なテストではあったが、割と勘所はつかめた気がしてきた。CTSを握って制御してやることがまず第一のようだ。追記:その後、CTSをきちんと処理するようにした結果、目視する限りビット落ち無しで、8k~9kbytes/sec程度のスループットが出ることもわかった。鉄筋コンクリートの壁を数枚隔てたくらいではほぼスループットは落ちない感じ。ビット落ちがきわめて少ないのは大変有り難い。2009ついうっかり、古いXBeeのボーレート設定を間違えてしまって(*1)、XBeeに一切アクセス出来なくなってしまった。その対処法をさんざんマニュアルにあたったのだが全然情報がない。困り果ててgoogleをたたき続けた結果、やっと見つけた。Explorerあたりを買っておく必要はある。やることは強制的なファームウェア書き換えなのだが、方法をそのまま機械的に訳しておく。公式に認められた方法ではないので自己責任にて。firmwareのチェックボックスをチェックする修正したいXBeeの型番をドロップダウンから選ぶ入れ直したいファームウェアバージョンをドロップダウンから選ぶwriteボタンをクリックする。するとXBeeに繋がらないメッセージが表示されるので、そのタイミングでXBeeを気をつけて挿入する。手順はこれだけだが、私の場合一度ではうまくいかず、2度トライしてうまくいった。正確に場所をあわせて一気に挿すようにするとうまくいく(気がする)。今回、使っているモジュールが古くて(XBP24-AWI-001)、この型番は今のファームウェアリストにはないため、正しく接続されていても型番を自動的に認識することができなかった。ここはXBP24を選んで書き直して完了。本当のところ、どうやるのが正しかったのかを知りたいところではあるので、タイミングをみて代理店に問い合わせてみようかと思う。ご存じの方がいれば教えていただければ幸い。*1)後から調べたら、ビットレートを間違ったのではなくてファームウェアが古かったのが原因だったようだ。*2)これはDigi純正の設定ツール。Digiのウェブサイトからダウンロードできる。