XBeeのライブラリについて

mbed についてのご質問はこちら。情報交換などにもご利用ください。

XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年3月01日(土) 11:59

唐津東高校の吉田と申します。

mbedとXBeeを接続するために山口様の21 Mar 2013 のXBeeのライブラリをインポートし、コンパイルしたところ、
「Error: Cannot open source input file "rtos.h": No such file or directory in "XBee/XBee.h", Line: 28, Col: 18」
というエラーが表示されました。
これは、ライブラリにrtos.hがないので開けない、ということだと思ったのですが、
rtos.hはどこか別に配布してあるのでしょうか?
初歩的な質問で申し訳ないのですが、よろしくお願いします。
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by yamaguch » 2014年3月01日(土) 18:47

こんにちは、

RTOS は、mbed 上で動くリアルタイムOSを使うためのヘッダファイルで、
XBee のライブラリはこれを使うように書き直してしまいました。
RTOS は mbed の開発チームがサポートしています。
mbed.org 探してみてください。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年3月01日(土) 19:51

山口様、こんにちは。
教えていただいた通り、「RTOS」で探してインポートしたところ、成功しました。
わかりやすく教えていただき、ありがとうございました。
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年3月17日(月) 18:40

山口様こんにちは
何度もすみません、唐津東高校の吉田です。
RTOSをインポートし、コンパイルをしたところ、
この前はsuccessと出たので成功と思ったのですが
実際にプログラムをmbedに入れてリセット、実行したところ
CoolTermに何も表示されませんでした。プログラムは以下の通りです。

コーディネーター側

#include "mbed.h"
#include "XBee.h"

int main() {
Serial ser(p9, p10);
ser.baud(115200);
XBee xbee(ser);
xbee.init();

printf("coordinator\n");

while (true) {
xbee.receive();
xbee.dump();
}
}

ルーター側
#include "mbed.h"
#include "XBee.h"

int main() {
Serial ser(p9,p10);
ser.baud(115200);
XBee xbee(ser);
xbee.init();

printf("router\n");

for (int i = 0; i < 10; i++) {
xbee.printf("Hello %d\n", i);
printf("sent: Hello %d\n", i);
wait(1);

}

printf("done\n");
}

ATコマンドでファームウェアバージョンを問い合わせた時には
コーディネーター、ルーター、共に結果が返ってきたので
配線は間違っていないと思うのですが、
プログラムのどこが間違っているのでしょうか。
申し訳ないのですが、ご教示いただけるとありがたいです。
よろしくお願いします。
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by yamaguch » 2014年3月18日(火) 11:23

無線通信ができていないらしいのですが、いろいろな原因が考えられます。
- Coordinator と Router のファームウェの設定
- Coordinator と Router のパラメタの設定
- PAN-ID の不一致

デバッグには、
- printf の戻り値を参照
- 送信側でも receive() と dump() を行う
などが有効かと。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年3月18日(火) 18:02

山口様こんにちは
receive() と dump() をルーターに追加し、再度行ったのですが
コーディネーター側には
コード: 全て選択
coordinator

ルーター側には
コード: 全て選択
router
sent: Hello 0
sent: Hello 1
sent: Hello 2
sent: Hello 3
sent: Hello 4
sent: Hello 5
sent: Hello 6
sent: Hello 7
sent: Hello 8
sent: Hello 9
done

のみが表示されました。
なので、パラメタまたはファームウェアバージョンが間違っていると思うのですが
X-CTUで設定不可能なパラメタはどのようにすれば変更できるのでしょうか

また、IDやCH、BDは一致しているので使用できると思ったのですが、
その他MYなどの設定も必要なのでしょうか。
また、直す必要があるのなら、どこを直せばいいのでしょうか

コーディネーター
コード: 全て選択
modem inquiry
ATCommandResponse, Id=2, Nm=ID, St=00, 0000000000000005 | ........
ATCommandResponse, Id=3, Nm=AP, St=00, 02 | .
ATCommandResponse, Id=4, Nm=DH, St=00, 0013A200 | ....
ATCommandResponse, Id=5, Nm=DL, St=00, 409F3353 | @.3S
ATCommandResponse, Id=6, Nm=OP, St=00, 0000000000000005 | ........
ATCommandResponse, Id=7, Nm=CH, St=00, 12 | .
ATCommandResponse, Id=8, Nm=BD, St=00, 00000007 | ....
ATCommandResponse, Id=9, Nm=OI, St=00, 1546 | .F
ATCommandResponse, Id=10, Nm=AI, St=00, 00 | .
ATCommandResponse, Id=11, Nm=MY, St=00, 0000 | ..
ATCommandResponse, Id=12, Nm=VR, St=00, 21A7 | !.
done.

ルーター
コード: 全て選択
modem inquiry
ATCommandResponse, Id=2, Nm=ID, St=00, 0000000000000005 | ........
ATCommandResponse, Id=3, Nm=AP, St=00, 02 | .
ATCommandResponse, Id=4, Nm=DH, St=00, 0013A200 | ....
ATCommandResponse, Id=5, Nm=DL, St=00, 407C22F8 | @|".
ATCommandResponse, Id=6, Nm=OP, St=00, 0000000000000005 | ........
ATCommandResponse, Id=7, Nm=CH, St=00, 12 | .
ATCommandResponse, Id=8, Nm=BD, St=00, 00000007 | ....
ATCommandResponse, Id=9, Nm=OI, St=00, 1546 | .F
ATCommandResponse, Id=10, Nm=AI, St=00, 00 | .
ATCommandResponse, Id=11, Nm=MY, St=00, 86A2 | ..
ATCommandResponse, Id=12, Nm=VR, St=00, 2370 | #p
done.

よろしくお願いします
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年3月22日(土) 09:57

山口様、こんにちは
すみません、プログラムを修正している段階で片方のbaudrateを11520に
設定にしてしまっていたのが原因だったようです。本当にすみません。

おかげさまで基本的な通信ができるようになりました。ありがとうございました。
また、わからないことがあったら、よろしくお願いします。

唐津東高校 吉田
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年6月14日(土) 17:31

こんにちは、唐津東高校、吉田です。
XBeeが不調になって設定しなおしているのですが、
CHをmbedから設定するときはどのようにするのでしょうか

「0B」と設定したく
コード: 全て選択
#include "XBee.h"

int main()  {
    XBee xbee(p9, p10);
    xbee.baud(115200);
    xbee.init();
 
  printf("setting \n");
  char param = {0x00,0x11};
  xbee.sendCommand("CH",param,2);
  xbee.sendCommand("CH");
 
  while (xbee.receive())
    xbee.dump();

としているのですが
コード: 全て選択
ATCommandResponse, Id=2, Nm=CH, St=01,  |
ATCommandResponse, Id=3, Nm=CH, St=00, 00 | .

と返ってきて設定できません。
数字の表記を"0B"に変更してみても結果は同じです。
どの部分に誤りがあるのでしょうか。
XBeeのライブラリは山口様の2013年4月のものです。

よろしくお願いします。

追記:ネットワークリセットを何度も繰り返したところ設定が一致して一応使えるようになったのですが、
確実に設定する方法があれば教えていただけるとありがたいです。
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

Re: XBeeのライブラリについて

投稿記事by yamaguch » 2014年6月15日(日) 18:08

吉田さん、

CH コマンドは現在のチャネル番号を知るためのコマンドです。
CH は実行時に決まるものなので、予め設定することはできません。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: XBeeのライブラリについて

投稿記事by 吉田幸司 » 2014年6月15日(日) 21:21

山口様、返信ありがとうございます。

やはりチャネル番号は意図して設定をすることはできないのですね。
わかりました、ありがとうございます。
吉田幸司
 
記事: 23
登録日時: 2013年12月29日(日) 15:01
お住まい: 佐賀県

次へ

Return to mbed 質問箱

cron