プロが教える店舗&オフィスのセキュリティ対策術

ArduinoとXbeeによる無線通信を利用して複数の散水ポンプを遠隔操作でON/OFFしようとしていますがラグ(遅延時間)が生じて困っています。

構成としてArduinoとXbee間でシリアル通信を行い、それを二つ使って無線通信をしています。

([Arduino←シリアル通信→Xbee]←無線通信→[Xbee←シリアル通信→Arduino])

使用機器等
AVRマイコンはATmega168Pを使用し、互換性のある回路で動作させています。
XbeeRFモジュールはProではありません。

現状として思い通りに通信できているのは
送信側:シリアル通信で「h」,「j」を3秒経つ毎に繰り返し送信
受信側:「h」の時赤色LED出力、「j」の時黄色LED出力
この時はLEDが交互にラグもなく光ってくれます。

しかし、
送信側:デジタル入力でタクトスイッチのON/OFFを検出し、タクトスイッチを押した時にシリアル通信で「h」を、それ以外の場合(押していない時)は「j」を送信
受信側:「h」の時赤色LED出力、「j」の時黄色LED出力(変更なし)
とした時、タクトスイッチを押したり離したりしてLEDで確認をするのですが、3回程押すと通信が途切れてしまうのかLEDが光っていたなら光ったまま数秒から十秒程固まってしまいます。

上記の送信側スケッチ例(プログラム)
int button = 13;

void setup() {
Serial.begin(9600);
pinMode(button, INPUT);
}

void loop() {
if (digitalRead(button) == HIGH) {
Serial.print('h');
} else {
Serial.print('j');
}
delay(1000);
}

規則的な値を送信し、受信できているといった症状から問題は送信側のスケッチ(プログラム)だと思い、ダメもとでif else文ではなくswitch case文で書きましたが症状は変わりませんでした。
反応速度を上げて使用したいと考えておりdelay(100)等にするとラグが大きくなりました。

また、Xbeeの送信側をパソコンに繋ぎ
送信側:パソコンにXbeeを接続してXbeeの設定ソフトX-CTUのterminalから 「h」,「j」を交互に適当な間隔で送信
受信側:「h」の時赤色LED出力、「j」の時黄色LED出力(変更なし)
とした時も同様にラグが発生しています

さらに、
送信側:[ArduinoとXbee]アナログ入力に可変抵抗を繋ぎその値をシリアル通信で1秒毎に送信
受信側:パソコンにXbeeを接続してX-CTUのterminalでシリアル通信をモニタリング
とした場合
シリアル通信で送ってきた値を1秒毎に表示→数秒後に値の表示が停止→数秒後、止まっていた間の値がまとめて表示→シリアル通信で送ってきた値を1秒毎に表示
の繰り返しです。

検索サイトで調べましたが、同様の症状が出でいる方が居られますが解決にまで至っていませんでした。また、同じような構成でラジコンを製作している方の動画ではラグも無く、ボタンやセンサーにすばやく反応している様でしたので何か設定などがあるのかと思い試していますがうまくいきません
何か解決策はないのでしょうか? お願いします。

A 回答 (1件)

XBee は、Series 1 と Series 2 の二種類ありますが、Series 2 の方をお使いではないですか?


Series 1 と Series 2で互換性はありませんので、モジュールを買い換えるしかありませんが、タイムラグの問題に関しては Series 1 にすれば改善されるかもしれません。

(Series 2は、表面に「Series 2」もしくは「S2」の刻印があり、5×2の金メッキ端子があります)
http://blog.goo.ne.jp/silvernetworks/e/175aeb53f …

Series 1 は独自プロトコルで通信するのに対し、Series 2 は標準化された Zigbee プロトコルで通信します。
Series 2の方が、中継(メッシュネットの構築)が可能であるなど高機能なのですが、その分タイムラグが大きい感じです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私の持っているXbeeはSeries2でした。また、特徴など分かりやすい説明をありがとうございます。
Series1も入手できたら試してみたいと思います。

お礼日時:2011/04/01 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!