XBeeに触る

前回の記録: XBeeとZigBee
ここでは実際にXBeeを使って1対1のペア通信を行うまでを記録する.

私の持ち物


XBee S2

XBeeシールド

XBeeアダプタ

XBeeをコンピュータに繋ぐ

XBeeは買ったばっかりではピクリとも動いてくれない. コンピュータに繋いでファームウェアを入れることで動き出す(もちろん+3.3V電源を忘れずに). ここではコンピュータにUSBで接続する方法を2つ記す.

その1 専用アダプタを使う

XBeeとコンピュータの仲介人,それがアダプタである. アダプタにXBeeを取り付け,USBケーブルでコンピュータと接続すればOK. これが一番手っ取り早く便利. 私はSparkFunの"XBee Explorer USB"という商品を愛用している. 他にも様々な種類のアダプタが販売されているので,あなたのニーズに合った品を探してみては如何だろう. ヒント:リセットボタンがあると便利!

その2 Arduinoをアダプタとして使う

Arduinoの拡張基板,それがシールドである. XBeeシールドを使うことでArduinoをアダプタ代わりに使用できる. 私はSeeed Studioの"XBee Shield"を愛用している. この商品の場合,シールド上に並ぶ3列のヘッダピンを,右図のようにジャンパピンでショートさせればOKだ. これで下の回路図と同じ配線になる. ピンの名前で書くならば,XB_RXとDIGITALの0ピン,XB_TXとDIGITALの1ピンを接続させる. こうすることでArduinoのRxとXBeeのRx(DIN)が,ArduinoのTxとXBeeのTx(DOUT)が繋がり,USBのシリアル通信がArduinoを素通りしてXBeeに入るようになる. つまりはシールドが無くとも下のように配線できれば,同様にArduinoをアダプタとして使用できるのだ.

Arduinoをアダプタとして使う際の注意点をいくつか

  1. XBeeには3.3Vを使用する(5Vだと故障の危険有り).
  2. Arduinoには事前に下記の空スケッチを書き込んでおく.
  3. ブレッドボードで回路を組む場合はXBeeの端子ピッチがブレッドボードよりも小さいので,端子幅を調整する基板が別途必要になること(このような基板が必要かも).
void setup() {}
void loop() {}

ファームウェアを入れる

今回の目標はペア通信なので,1つのXBeeにはコーディネータの,もう1つにはルータのファームウェアをインストールする(ルータでは無くエンドデバイスでも良いのだが今後の発展に期待する意味を込めて). まずはXCTUというソフトウェアをコンピュータにインストールしよう(ダウンロード時にRegistration(登録)を促されるが,"No thanks, register later"ボタンで登録を回避できる). 無事にインストールを終えたら2匹のXBeeをコンピュータに接続してXCTUを立ち上げる. その後,画面左上の虫眼鏡マークをクリックしよう.
XBeeが接続されているポートを選択する画面が現れた. "usbなんとか"というポートがXBeeの接続されているポートのはずだが,よく分からなければ"すべて選択"を選んでも大丈夫. "Next >"をクリックして次へ進むと転送速度などのオプションが表示される.
特に変更する必要は無いのでポチッと"Finish"しよう. XBeeが正しく認識されると,下のようにリストへXBeeが追加される.
追加されたXBeeを選択すると,上のように設定項目がずらりと表示される. 今はファームウェアのインストールが主目的なので設定項目は見ないふりをして"Update"ボタン(ICチップのアイコン)をクリックしよう. ファームウェアのリストが表示されるので,ここから望むファームウェアを選択して行く.
今回は"XBee S2"という商品を使用しているので"XB24-ZB"を選択. 次にコーディネータ,ルータ,エンドデバイスのいずれかを選択するが,今回はATと書かれたファームウェアを選択しよう(ATとはなんだろう?これは後日解説予定).
  • コーディネータ: ZigBee Coordinator AT
  • ルータ: ZigBee Router AT
  • エンドデバイス: ZigBee End Device AT
最後にファームウェアのバージョンを選ぶ. 迷わず最新"Newest"を選ぼう. 適切に選べたら"Update"をクリックしてファームウェアをインストール! それぞれのXBeeにそれぞれのファームウェアをインストール出来たら,いよいよ通信をさせてみよう.

もし...

右の警告が表示されたら,それは接続不良を意味する. アダプタなどのリセットボタンを押してから10秒待ってもこの画面が消えなければ,XCTUとXBeeが上手く通信できていない. 次の項目をチェックしてみよう.
  • XCTUを一旦終了し,もう一度立ち上げる
  • USBケーブルを一旦抜いて挿し直す
  • 正しいポートを選択したかどうか?
  • どこかがショートしていないか?
  • XBeeに5Vを入力していないか?
  • XBeeとArduinoの配線が正しいか?
  • XBeeが正しい向きに差し込まれているか?
  • XBeeのピンがずれて差し込まれていないか?
などなど. この警告の原因で最も多いものはハードウェアだ. 経験上,配線間違いや断線で起こる. USBケーブルを別の所に挿し直してみたり,USBケーブル自体を別の物に替えてみたりもしよう.

パケットをやりとりする

今2匹のXBeeがコンピュータに接続され,XCTUに表示されている. これからはペア通信に必要な設定を行う. 設定項目は次の3つだ.
  • PAN ID: 好きな数字をひとつ入力.
  • DH: 宛先アドレスの上位32ビットを入力.
  • DL: 宛先アドレスの下位32ビットを入力.
PAN IDは両方のXBeeに同じ数値を入力する. もし異なる数値を入力すると互いに無視しあってしまうので注意. 私は1009にした(素数!). 宛先アドレスはXBeeリスト中の"MAC"と書かれた16桁の英数字である. 互いのアドレスを互いの設定項目に入力しよう. コーディネータの宛先はルータのアドレス,ルータの宛先はコーディネータのアドレスだ. 恐らくDHはどちらも"13A200"だと思われる. DLは残りの英数字になる.
上の3項目を入力し終えたらXBeeに変更内容を書き込む. "Write"ボタン(大きめの鉛筆マーク)をクリックすることで一括書き込みを行える. 設定項目横にある小さな鉛筆マークをクリックすれば,その項目だけを書き込むことが出来る. 変更した設定項目は右下が緑色になる. 書き込みが完了した項目は右下が青色になる. さて,"Consoles"(ウィンドウ右上のディスプレイアイコン)をクリックしてみよう. 次のような画面が表示されるはずだ.
ここでXBeeの通信内容を閲覧/作成できる. "Open"と書かれたプラグアイコンをクリックしよう. 回線が接続(Close)される. これでXBeeを通過する通信内容がこのコンソールへ表示されるようになった. 両方ともXBeeの回線をCloseにしたら,どちらか一方の"Send Packets"欄にあるプラス"+"マークをクリックして送信したいパケット(贈り物)を作成しよう.
上の例では"Hello"という文字列を入力しているが,英数字ならば何でも良い. もう一方のXBeeに送りたい文字列を入力しよう. 入力を終えたら"Add packet"をクリックする. さて,いよいよパケットを送信する時がやって来た. "Send selected packet(選択されたパケットの送信)"ボタンを押してみよう. 上手く行くと下のようになるはずだ.
送信されたパケットは青色で,受信したパケットは赤色で表示される. 青色で"Hello"と表示されているということは,先ほどのパケット"Hello"が無事送信されたことを意味する. 送信先はもちろんDHとDLに設定してある宛先,すなわちもう一方のXBeeである. そのもう一方のXBeeを選択すると,赤色の"Hello"を確認出来るはず.
赤色の"Hello"があればパケットの送受信は大成功だ! いろいろなパケットを追加/送受信して遊んでみよう.

もし...

通信が上手く行かない場合は設定が正しく行われているかをもう一度チェックしてみよう. アドレスが間違ってないか良く見てみよう. またPAN IDが同じ数値になっているか,もう一度確認してみよう. それでもダメなら前の項目にある"もし..."のチェックリストを確認してみよう.
1280489816103615522 http://www.storange.jp/2016/02/xbee.html http://www.storange.jp/2016/02/xbee.html XBeeに触る 2016-02-15T21:24:00+09:00 http://www.storange.jp/2016/02/xbee.html Hideyuki Tabata 200 200 72 72