2017年3月8日水曜日

XBee ZB S2C を 2 台使ってデータの送受信を行ってみた

概要

前回 2 台の XBee に初期設定を行いました
今回は実際に 2 台の XBee 上でデータのやり取りを行ってみました

環境

事前準備

前回の記事を参考に XBee の ROOTER と COODINATOR の設定は行っておいてください
また今回は Arduino の XBee シールド (ワイヤレスプロトシールド) を使います
自分が購入した シールド はピンヘッダが 別売り でハンダされていないので、事前に Arduino に乗せるためにピンヘッダのハンダ付けを行ってください
xbee_test_shield_handa.jpg

今回の構成

今回やることは以下の通りです
overview.png

2 台の XBee を無線で通信させます
電源確保は今回 PC を使っています
送信側は Arduino のスケッチを使ってシリアルで送信します
受け取り側は今回特に何もせず受け取った情報を PC 上のシリアルモニタで確認したいと思います
また、どちらでもいいのですが今回は送信側を ROOTER, 受信側を COODINATOR という構成で進めていきます

送信側の Arduino スケッチ

5 秒おきにシリアルにデータを送信するだけの簡単なスケッチです

/* ROOTER側 */

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.write('C');
  delay(5000);
}

できたら Arduino IDE を使って UNO に書き込んでください

送信側配線

送信側 の XBee は Arduino 上に配線します
と言ってもシールドを接続してその上に XBee を配置するだけです
xbee_test_sending_side.jpg

  • Arduino -> XBee Shield -> XBee

という順番で上に乗せていきましょう
一点注意が必要なのはシールド上のショートピンを RX, TX 側に寄せてください
そうしないとシリアリでうまくデータを送信してくれません
配線できたら USB ケーブルを使って PC と接続して電源の確保を行ってください

受信側配線

受信側は特にやることはありません
XBee USB アダプターに乗せて、USB で電源供給すれば OK です
xbee_test_receiving_side.jpg

今回はこちらでデータを受信して PC のシリアルモニタで受信したデータを確認します

動作確認

今回の場合は 2 台の XBee を接続した瞬間に通信が開始されます
通信が成功しているとシールドおよび USB アダプター上の赤色の LED が点滅すると思います
点滅している間、データの送信が行われています

念のため受信側のシリアルモニタでも確認してみましょう
X-CTU を開いてください
X-CTU にシリアルモニタの機能があるのでそれを使ってみます
X-CTU で XBee を認識したら右上にある「コンソール (Switch to Consoles working mode) 」ボタンを押しましょう
そしたら「コネクト (Open) 」ボタンがあるのでクリックします
すると XBee が受信した C という文字列がシリアルモニタ上に 5 秒おきに表示されているのが確認できると思います
xbee_test_xctu_serial.png

最後に

紹介は以上です
あとは受信した側でそのデータを Arduino とかで Serial.read してそれに応じて GPIO を制御する感じだと思います
X-CTU を見ると「I/O Settings」という項目があり D0 や P0 というピンの動作を設定する項目があったので XBee だけでも頑張ればできそうな気がしましたが、Arduino 等のマイコンを使っておくのが無難かと思います

あと通信距離の測定も適当に引き離して行ってみたのですが、20m くらいは余裕で到達できました
調べてみると 40m - 60m くらいまでは室内であればいけるみたいです
この辺は確かに BLE よりも優れている点かもしれないですね

とりあえず動かし方はだいたいわかったので、あとはやっぱり大量に購入してメッシュを組んでみたりピン制御をしてみたいかなと思います

0 件のコメント:

コメントを投稿