Arduino UNOなどのマイコンボードを無線化するのに便利なXBeeですが、簡単にスタートできる分かり易い記事がなかなか無いので、ちょこっとまとめてみました。
今回はArduino Uno R3とWindows PCのデータ通信を、XBeeシリーズ1を使って無線化します。 ただしスケッチのアップロードはUnoをPCに直結して行います。またOSはWindows 7で、Arduino Unoは既に使用経験がある(Arduino IDEをインストール済み)という前提で話を進めますので、ご了承ください。
全体の流れは以下の通りです。
- 下準備
- X-CTU(XBee設定ソフト)のインストール
- XBee USB アダプター(リセットスイッチ付き) の接続
- X-Beeの設定
- Arduino UnoをPCに接続して通信確認
- 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現在の最新版)が現れますので、これを右クリックして対象をファイルに保存して下さい。
場合によっては40003002_B.exe の発行元を確認できませんでした。の様な警告メッセージが出るかもしれませんが、無視して保存をします。
これで下準備は終了です。
2.X-CTU(XBee設定ソフト)のインストール
先ほどダウンロードしたファイルを実行して下さい。 警告が出ますが無視して実行します。
ファイルが展開され終わるといよいよインストールが始まります。
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で確認した番号)
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 アダプター(リセットスイッチ付き)」