ZigBeeと共通の無線規格(IEEE802.15.4)
モジュールも色々ありますが、用途別にファームウェアを入れ替えて使用します。
透過モードとAPIモードの2種類とコーディネータ(親)、ルータ(中継)、エンドデバイス(子)を組み合わせます。
最低構成は、コーディネーターとエンドデバイスになります。
XBeeは、新旧があり設定も違います。ここの情報は新でXBeeにはS2と書いてあります。
USB-USRTは、3.3Vの物を使用してください。
接続
| UART |
XBee |
(pin) |
| 3.3V |
VCC |
(1) |
| RXD |
DOUT |
(2) |
| TXD |
DIN |
(3) |
| |
RSSI |
(6) 1KΩ-LED-GND 通信時光ります |
| GND |
GND |
(10) |
2mmピッチの変換基板を買い忘れたので必要なピンだけを2.5mmのボードにハンダしましたw
設定 Digi社が提供しているツールX-CTU
今回は簡単なATモードで通信しました。
コーディネーターを設定
FunctionSetは、ZIGBEE COORDINATOR ATを選択
Show Defaults を押してデフォルト設定にする
ID - PANID -> ネットワーク共通のIDを設定します
DL - Destination Address High -> 子機の裏に書いてある上位6桁
DL - Destination Address Low -> 子機の裏に書いてある下位8桁
Always Update Fimware にチェックを入れて Write のボタンで書き込みます。
エンドデバイスの設定
FunctionSetは、ZIGBEE END DEVISE ATを選択
Show Defaults を押してデフォルト設定にする
ID - PANID -> コーディネーターと同一IDを設定します
Always Update Fimware にチェックを入れて Write のボタンで書き込みます。
Arduinoでループバックテスト
X-CTU の Range Test でループバックテストが出来ます。
本来はエンドデバイスのdinとdoutをショートさせてテストしますが、簡易的に行うためにエンドデバイスのArduinoに
下記のプログラムを入れてテストしました。
通信スピードをどこまで上げれるかは試していません。
Badの数字が失敗した事になります。
int var;
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600); // 9600bpsでポートを開く
}
void loop() {
var = Serial.read();
if (var>0)
Serial.print(var,BYTE);
}
参考リンク