XBeeをはじめてみよう(シリーズ1編)

投稿者:

Arduino UNOなどのマイコンボードを無線化するのに便利なXBeeですが、簡単にスタートできる分かり易い記事がなかなか無いので、ちょこっとまとめてみました。

今回はArduino Uno R3とWindows PCのデータ通信を、XBeeシリーズ1を使って無線化します。 ただしスケッチのアップロードはUnoをPCに直結して行います。またOSはWindows 7で、Arduino Unoは既に使用経験がある(Arduino IDEをインストール済み)という前提で話を進めますので、ご了承ください。

全体の流れは以下の通りです。

  1. 下準備
  2. X-CTU(XBee設定ソフト)のインストール
  3. XBee USB アダプター(リセットスイッチ付き) の接続
  4. X-Beeの設定
  5. Arduino UnoをPCに接続して通信確認
  6. Arduino UnoをPCから切り離して通信確認

※メーカー純正のXBee設定ソフトX-CTUは2012/7/20現在、Mac版はありません。Windows版のみ公開されています。
2013年末にMac版も公開されました。DigiのX-CTU Softwareのページからダウンロードすることができます。

1.下準備

□用意するもの

  • Arduino UNO
  • ワイヤレスプロトシールド
  • XBee USB アダプター(リセットスイッチ付き)
    XBeeエクスプローラUSB もしくは XBeeエクスプローラUSBドングル でもOK
  • XBeeシリーズ1(ワイヤアンテナ)*2個
    今回はシリーズ1を使います。写真はワイヤアンテナ型ですが、チップアンテナ型やU.FLコネクタ型にアンテナを付けたものでもかまいません。
  • USBケーブル(A-B)
  • USBケーブル(A-microB)
    XBeeエクスプローラUSB の場合はUSBケーブル(A-miniB) 、XBeeエクスプローラUSBドングルの場合はPCへ直挿しあるいはUSB延長ケーブル(Aオス-Aメス)になります。
用意するもの

※他にArduinoを単独で動かすための電源をご用意ください。PCをもう1台使用されてもかまいません。

 

では、実際の作業を始めます。

最初にXBeeの個別IDを控えておきます。個別IDはXBeeの裏面にあるので、ソケットに挿すと見えなくなってしまいます。またPCとArduinoのどちらに繋げるかあらかじめ決めておきましょう。

個別IDは16進数で表され、上位8桁4バイト、下位8桁4バイトで出来ていて、上位8桁4バイトは固定された値0013A200になっています。

PC側XBee個別ID: 0013A200 /[              ]
Arduino側XBee個別ID: 0013A200 /[              ]

また他のグループと通信が切り分けられるためのPAN IDを決めなければいけません。PAN IDも16進数で表され4桁2バイトの数値になります。0000とFFFF以外で任意に設定します。サイコロを4回振って決めてもいいかもしれませんね。このPAN IDが同じになっているXBee同士が通信を行えます。

PAN ID:[              ]

次にXBeeの設定ソフトX-CTUをダウンロードします。X-CTUのダウンロードページを開いてください。

ダウンロードページ: http://www.digi.com/support/productdetail?pid=3352


このページのDiagnostics, Utilities and MIBsをクリックします。

するとXCTU 32-bit ver. 5.2.7.5 installer(2012/7/20現在の最新版)が現れますので、これを右クリックして対象をファイルに保存して下さい。
xctu-2

場合によっては40003002_B.exe の発行元を確認できませんでした。の様な警告メッセージが出るかもしれませんが、無視して保存をします。
xctu-3

これで下準備は終了です。

 

 

2.X-CTU(XBee設定ソフト)のインストール

先ほどダウンロードしたファイルを実行して下さい。 警告が出ますが無視して実行します。

xctu-inst-1

するとファイルが展開されます。

ファイルが展開され終わるといよいよインストールが始まります。

Next>をクリックします。

License Agreemetの画面が出ます。

同意できればI Agreeを選択し、Next>をクリックします。

Select Installation Folderの画面が出ます。

特に変更の必要が無ければ、そのままNext>をクリックします。

Confirm Installationの画面が出ます。

今までの設定に問題が無ければNext>をクリックします。

すると、実際のファイルのインストールが開始されます。

インストールの途中で、ファームウェアのアップデートをチェックするかどうかの画面が出ます。少々時間がかかると思いますが、推奨されているので実行してください。

はい(Y)をクリックします。

アップデートファイルのダウンロードが始まります。

アップデートファイルのダウンロードが終了するとレポート画面が出ます。

確認してOKをクリックします。

Installation Comleteの画面が出ます。

Closeをクリックします。これでインストールは終了になります。

 

 

3.XBee USB アダプター(リセットスイッチ付き)の接続

XBee USB アダプター(リセットスイッチ付き) (XBeeエクスプローラUSB もしくは XBeeエクスプローラUSBドングルでも可)にArduino側XBeeを載せ、PCに接続します。※最終的にXBee USB アダプター(リセットスイッチ付き) に搭載されるのはPC側のXBeeですが、先にArduino側XBeeの設定を済ませることとします。

 

この時、デバイス ドライバー ソフトウェアは正しくインストールされませんでした。と表示される場合があります。
表示されなければ4.XBeeの設定から続けてください。


閉じるをクリックして、この画面を閉じます。

スタートボタンをクリック、コンピュータを右クリックして、出てきたメニューの中のプロパティをクリックします。

 デバイス マネージャーをクリックします。


マークの付いているFT232R USB UARTを右クリックしてメニューの出てきたドライバーソフトウェアの更新をクリックします。


下段のコンピューターを参照してドライバー ソフトウェアを検索しますをクリックします。


参照を使って、Ardino IDEのフォルダ中の\drivers\FTDI USB Driversを選択し、次へをクリックします。


ドライバーがインストールされて、USB Serial Converterとして認識されます。閉じるを押して、画面を閉じ、COMポート番号を確認してください。

 

 

4.XBee の設定

2でインストールしたX-CTUのアイコンがデスクトップ上にあるので、それを起動します。

SelectComPortに3で認識させたUSB Serial Port(COMx)が表示されています。(xは3で確認した番号)

Test/Queryをクリックして、接続を確認します。

 


Communication with modem. OKと出たら接続出来ているので、OKをクリックして閉じます。

画面のModem Configurationタブをクリックします。

Readをクリックします。

XBeeの現在の設定値が読み込まれます。PAN IDは既定値が入っている場合があります。

ID-PAN IDをクリックして1で準備した16進数4桁2バイトのPAN IDを入力します。
DH-Destination Address Highをクリックして、0013A200(Arduino側XBeeの固有ID上位番号)を入力します。

DL-Destination Address Lowをクリックして、1で控えたPC側XBeeの固有ID下位番号を入力します。※このDH,DLは通信相手の番号なので、今設定しようとしているXBbee(Arduino側)の番号ではありません。

入力が出来たら、WriteをクリックしてXBeeに設定を書き込みます。

書き込みが出来たら、PCからXBee USB アダプター(リセットスイッチ付き) をPCから取り外し、XBeeをPC側のものに差し替えます。

PC側XBeeも同様に接続の確認と、PAN ID,DH,DL(通信相手であるArduino側XBeeの番号)の設定・書き込みをします。

 

5.Arduino UnoをPCに接続して通信確認

このテストではArduino Unoには何も仕事をさせず、ただPCとXBeeをつなぐ基板として使うためです。スケッチを使った通信確認は6で行います。

Arduino Unoに何もシールドを載せない状態で、PCに接続します。

Arduino IDEを起動します。
Arduino IDEのメニューからファイル(File)→ スケッチの例(Examples)→01.Basics→BareMinimumを開き、Arduino Unoにアップロードします。
Arduino IDEを閉じ、Arduino UnoをPCから取り外します。

 

ワイヤレスプロトシールドのSERIAL SELECTスイッチをUSB側にします。

ワイヤレスプロトシールドにArduino側XBeeを載せ、Arduinoに接続します。

 

X-CTUを2つ起動し、PC側,Arduino側のそれぞれのCOMポートを選択します。

Terminalタブを開いて、入力エリアをクリックし、適当な文字列をタイプします。

XBee同士の通信が出来ていれば、タイプした入力エリアには青い文字で、もう一方の入力エリアには受信したデータが赤い文字で表示されます。双方の入力エリアで試してみてください。

 

 

6.Arduino UnoをPCから切り離して通信確認

いったんArduino UnoをPCから切り離し、さらにワイヤレスプロトシールドをはずします。
再度Arduino UnoをPCに接続し、Arduino IDEを起動します。
Arduino IDEのメニューからファイル(File)→ スケッチの例(Examples)→04.Comunication→ASCIITableを開き、Arduino Unoにアップロードします。

Seleal Moniterを開きます。

Arduino UnoからASCII Tableのキャラクタマップが送信されてきます。ここまでは有線接続です。
確認が出来たらSerial Moniterを閉じます。

 

またArduinoUnoをPCから切り離します。
ワイヤレスプロトシールドのSERIAL SELECTスイッチをMICRO側にして、Arduino Unoに載せます。

Arduino IDEのメニューのツール(Tools)→シリアル ポート(Serial Port)→PC側XBeeの使用しているCOMポートを選択します。

Serial Moniterを立ち上げたら、Arduino UnoをPCとは別の電源に接続します(別のPCに接続してもかまいません)

すると、Serial Moniterに先ほどと同様に文字データが送られてきます。

これで、Arduino Uno上のスケッチがXBee間の無線通信を通してPCにデータを送った事が確認できました。
ワイヤレスプロトシールド上のRESETスイッチを押すと再度文字列が送信されます。

 

以上で、XBeeをはじめてみよう(シリーズ1編)は終わりです。ここまで設定と動作確認が出来ていれば、まずはXBeeを有線シリアル通信の置き換えに使えますね。 ぜひみなさんも試してみてください。

 

2012/07/31 追記 仮称だった製品が新発売になりましたので、該当箇所を書き換えました。

「XBee FTDI Breakout (仮称)」 → 「XBee USB アダプター(リセットスイッチ付き)」