Arduino2台のシリアル通信をXbeeで無線化しました。
また、商品ページに『室内レンジは60m』と書かれているのを見て、
「横が60mだとして、縦のレンジはどのくらいなんだろう」と気になったので、実験してみました。
準備
環境
- XCTU 6.4.3
- Arduino IDE 1.8.9
- MacOS High Sierra 10.13.6
材料
- Arduino × 2台
同じもの2台なら楽だったのですが、持ち合わせが無かったので、UNOとSeeeduino Megaを使いました。 - Xbee × 2台
2.54mmピッチ変換基板とUSBシリアル変換基板にそれぞれ載せています。 - ブレッドボード × 2個
変換基板2つをそれぞれ挿してArduinoに接続しています。 - LED × 2個
- ジャンパワイヤ
プログラム
送信機のカウンターを受信機で受け取り、奇数か偶数か判別して点滅するだけの、至ってシンプルなプログラムです。
送信機と受信機のArduinoにそれぞれプログラムを書き込みます。
- 送信機
int LED = 13;
int counter = 0;
void setup(){
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop(){
counter++;
Serial.write(counter);
if(counter % 2){
digitalWrite(LED, HIGH);
}else{
digitalWrite(LED, LOW);
}
delay(1000);
}
- 受信機
int LED = 13;
void setup(){
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop(){
while(Serial.available()){
byte inChar = (byte)Serial.read();
if(inChar % 2){
digitalWrite(LED, HIGH);
}else{
digitalWrite(LED, LOW);
}
delay(10);
}
}
Xbeeの設定
Xbeeに送信・受信の設定をそれぞれ行います。
Xbeeの設定の詳細は前回の記事に載っています。
プログラム中の通信速度とXbeeの通信速度を統一するよう気を付けてください。
(上のプログラムを何も変更していなければ9600です)
- 送信機
項目名 | 項目名正式名称 | 変更前 | 変更後 |
---|---|---|---|
ID | PAN ID | 0 | 7 (受信機と合わせてください) |
CE | Coordinate Enable | Disabled[0] | Enabled[1] |
DH | Destination High | 0 | 13A200 |
DL | Destination Low | 0 | 受信機のSL |
- 受信機
項目名 | 項目名正式名称 | 変更前 | 変更後 |
---|---|---|---|
ID | PAN ID | 0 | 7 (送信機と合わせてください) |
DH | Destination High | 0 | 13A200 |
DL | Destination Low | 0 | 送信機のSL |
配線
送信側のArduinoとXbee、受信側のArduinoとXbeeをそれぞれ配線します。
Arduino | Xbee |
---|---|
3.3V | VCC(1) |
RX(D0) | TX(2) |
TX(D1) | RX(3) |
GND | GND(10) |
また、ArduinoのD13ピンにLEDを繋げておいてください。
動作確認
送信機と受信機が同じ周期で点滅を繰り返していれば、正常な動作です。
実験
冒頭に書いた通り、室内での縦のレンジがどのくらいか知りたくなったので、実験してみました。
送信機を執務室に置いたまま、受信機を持って階を移動する、というアナログな手法で実験します。
同じフロア(遮蔽物あり)
同じフロア内では、執務室とトイレの扉2枚を隔てた状態でも、正常に動作していました。
直線距離はおよそ15〜17mくらいです。
階移動
続いて、階を移動してみたところ、送信機が置いてある7階から5階まで降りたところまでは正常に動作していました。
しかし、5階から4階への移動中、受信機のLEDが光らなくなりました。
天井高がおよそ2.5mくらいなので、単純に計算して、天井という遮蔽物があっても5mまでは正常に動くということになります。
この後、5階に戻ってリセットボタンを押してみましたが、LEDの反応はありませんでした。
結局、7階(執務室外)まで戻ったところでリセットボタンを押すと、LEDが正常通りに光るようになりました。
まとめ
「意外と遮蔽物があっても正常に動作できるんだな」と分かった良い機会でした。
あまり推奨されていない使い方をしたと思いますが、こうして実験することで、
仕様書には書いていない限界を知ることができて良かったと思います。