2007年03月24日
 ■  ArduinoをXbee(ZigBee)でワイアレスに

MaxStream社のXBee™ ZigBee OEM RF Moduleを使うことで
Arduinoを無線化することができます。

■XBee(ZigBeeモジュール)
省電力で小型のZigBee規格に準拠したモジュールです。
非常に簡単に電子機器を無線化することが可能です。
ピンは左右に10ピンずつ計20ピンあり
今回使用するのは上から見て左側の列の1,2,3,10の4ピンです。
arduino_xbee4 arduino_xbee5

■回路
Arduinoをワイアレス化するために以下のものが必要となります。
Arduino
XBee™ ZigBee OEM RF Module
・3.3V三端子レギュレータ
・コンデンサ100μF、4.7μF、0.1μF
・抵抗10kΩ

arduino_xbee
回路図

Arduinoの5Vを3.3Vに変換します。
XBeeは1ピンがVCCで10ピンがGNDとなっているので
3.3Vを1ピンに、10ピンをArduinoのGNDにつなぎます。

TXと3番、RXと2番をつなげば完了です。
XBeeの2ピンはUARTでのData Out、3ピンはUARTでのDATA Inを実現します。

以上で回路は完成です。

P1000406
できあがった回路

■注意事項
プログラムの説明に入る前にArduinoにXbeeを接続して使用するときの注意事項を説明します。必ず守るようにしてください。
・Arduinoに書き込むときに、XBeeモジュールを接続していないように注意してください。
・Arduinoの電源はACアダプタからとってください。

■プログラム
今回はTransparent Modeで通信をします。
(モードについては追記:XBeeのモードを参照)
Transparent ModeではXBeeを介して機器同士を無線でシリアル通信させることが可能となります。
そのためArduino側では
【Serial.write(送信文字列);】で任意の文字列を送信することが可能で、
受け取ったデータを
【Serial.read()】で読むことができます。

以下にサンプルのコードです。
・XBeeに書き出し
xbee_write.pde download
void setup() {
// start up the serial connection with 9600-8-n-1-true (non-inverted):
Serial.begin(9600);
}

void loop(){
//send text to XBee
Serial.print("test");
delay(500);
}


・XBeeから読み取り
xbee_read.pde download
char inByte = 0;

void setup() {
// start up the serial connection with 9600-8-n-1-true (non-inverted):
Serial.begin(9600);
}

void loop(){
if (Serial.available() > 1) {
// read a byte
inByte = Serial.read();
}
}

■XBeeのモード
XBeeには3つのモードがあります。
1) transparent mode
transparent modeではXBeeに繋がれた機器がserialで繋がれたように使用することができます。今回の回路であれば、ArduinoがXBeeを通じて、XBeeに繋がれた他の機器とシリアル接続されたように使用することが可能です。

2) command mode
コマンドモードではXBeeのボーレート(デフォルトは9600)を変更したり様々な設定変更をすることが可能です。
コマンドモードに入るためにはXBeeに対して"+++"という文字列を送ります。
コマンドモードを終了するためには"ATCN"を送ります。

3) API mode
API modeではターゲットを変えたり複雑なデータ送受信を行うための非常に有用なモードです。

投稿者 shunp : 2007年03月24日 17:28

コメント

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?