XBeeを繋いでみた。

XBeeを繋いでみた。

Table of Contents

ZigBeeに対応した製品であるXBeeでPCとArduinoを繋いでみました。色々とめんどかったのでまとめますね。

以下のサイトと書籍を参考に設定しました。

f:id:re_shikajiro:20120511162550j:image

環境・使ったもの

スイッチサイエンス/商品詳細 XBee ZB / チップアンテナ型 x 2

スイッチサイエンス/商品詳細 Arduino ワイヤレスプロトシールド

スイッチサイエンス/商品詳細 XBeeエクスプローラUSBドングル

XBeeを設定する

XBeeにグループや接続先などの設定をする必要があります。

参考にしたサイトと僕の端末でファームウエアや製品の差異があるみたいで、一部そのままではできませんでした。

ドライバ設定

Virtual COM Port DriversMac OS X x64 (64-bit)の VCP Driverを落としてインストールします。

ポートの取得
ls /dev/tty.*

/dev/tty.Bluetooth-Modem /dev/tty.Bluetooth-PDA-Sync /dev/tty.usbserial-A4013ABD

僕の環境だと /dev/tty.usbserial-A4013ABD が接続しているXBeeのポートです。移行、この名前を使いますが、自分の環境で置き換えてください。

picocomのインストール

XBEEを設定するターミナルをインストールします。ZTermとか色々あるみたいですが、Terminalから使えるpicocomをインストールしました。

brew install picocom

XBeeに接続するには以下を実行します。

picocom --echo --imap crcrlf /dev/tty.usbserial-A4013ABD

picocom v1.6

port is : /dev/cu.usbserial-A4013ABD flowcontrol : none baudrate is : 9600 parity is : none databits are : 8 escape is : C-a local echo is : yes noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : crcrlf, omap is : emap is : crcrlf,delbs,

ATコマンドで端末を設定
  • ATID ネットワークグループ
  • ATDH / ATDL 宛先

を設定すればいけます。

宛先を設定するためにXBee端末の裏にIDが入力されているので控えましょう。

※参考サイトではATMYに任意を値を設定してるけど、現在(?)はできません。読み込み専用です。

サンプル

ATID(ここが同じのXBee同士が繋がる)
ATDH
ATDL(この二つに指定された宛先を繋がる)

というわけで以下みたいな感じで設定しました。

XBee A

ATID2001
ATDH0013A200
ATDL4086B111

XBee B

ATID2001
ATDH0013A200
ATDL4086B126
ソースコード

建築発明工作ゼミ2008: Arduino+Xbee Shield/Processing+XBee Explorer USBを流用しました。以下引用です。

Arduino

int val;//受信データ用の変数を用意

void setup(){ //シリアル通信開始 Serial.begin(9600); //13ピンをデジタル出力に設定 pinMode(13,OUTPUT); }

void loop(){ if(Serial.available()>0){ //データが来たら val=Serial.read(); //データを読み込み、valへ代入 } if(val==‘H’){ //valが「H」の場合 digitalWrite(13,HIGH);//点灯 }else{ //valが「L」の場合 digitalWrite(13,LOW); //消灯 } }

Processing側

//シリアル通信ライブラリを取り入れる import processing.serial.*; //ポートのインスタンス Serial port;

void setup(){ //「XBee Explorer USB」のシリアルポート設定 port=new Serial(this,"/dev/tty.usbserial-A8003VXd",9600); } void draw(){ //特になし }

void mousePressed(){//マウスボタンを押したら port.write(‘H’); //「H」を送信(点灯) }

void mouseReleased(){//マウスボタンを放したら port.write(‘L’); //「L」を送信(消灯) }

Arduinoにソースを書き込む時に以下に注意してください。

スイッチサイエンス/商品詳細 Arduino ワイヤレスプロトシールド

SELEIAL SELECTスイッチによってXBeeの有線接続先を切り替えられます。

スイッチをMICRO側にすると、ArduinoXBeeの接続になります。ただしArduinoからのデータは、USBシリアルによってPCにも送信されるのでご注意ください。

スイッチをUSB側にすると、PC(USBシリアル経由)⇔XBeeの接続になります。このモードを使う場合、Arduinoには事前に下記の「空スケッチ」を書き込んで下さい。

なので、書き込んだあとはMICRO側にしないとXBeeが動きません。注意しましょう。

クリックするとこんな感じで動くはず。きっと。

D