Category : XBee
お久しぶりです!
もしかしたら、花粉症デビューしちゃったかもしれないゆってぃです!><

最近、暖かくなったり寒くなったりで、体調を崩しがちになっております。。。
はやく本格的な春にならないかな・・・

さて、だいぶ前に本ブログでXBeeの記事を書いてから、XBeeの使い方についてお問い合わせを受けることが何度かございました。
この極めて読みにくく、自己満足かつ自己完結型のブログをお読み頂き、さらにコメントやご連絡まで下さる方がいらっしゃることを、とても嬉しく思います^^

そこで今回は、まだブログで取り上げていなかった、XBee WifiXBee Application Service機能についてご説明いたします。
というのも、お問い合わせいただく内容を見ると、XBee Wifiをいわゆる透過モード(シリアル通信の無線化)であれば簡単に使えるのに、PCやスマホといったクライアント機器(以下、クライアント)から遠隔でXBeeモジュールのポート制御などを行うとなると、なかなかうまく行かない方が多いということに気づいたからです。

でも、そのお気持ちはすごくわかります。
従来のXBeeには、2つのモードがありました。

・ATモード・・・シリアル通信を単純に無線化するモード。
・APIモード・・・APIフレームにそってデータを送信する。動的に通信相手を変えたり、ATコマンドを送ることで、相手の設定(出力ポートの状態など)を制御することも可能。

ですので、例えばクライアントから、通信先のXBeeのポートを制御したいのであれば、APIモードを使えばいいんだなと思われることでしょう。
特に、XBeeZBなど過去のデバイスを使ったことがある人ほど、そう思われたのではないでしょうか?

このように困っている人をみて、Digiの中の人は言うでしょう。
「一体いつから、PCやスマホからでも、APIフレームでコマンドを投げればポート制御ができると錯覚していた?」
(ということに気づかず、ゆってぃが思いっきりはまっていた事は秘密です)


クライアントから、XBeeのコンフィグレーション(ポートの状態などの設定)を変更するには、ATモードとかAPIモードなどではなく、XBee Application Serviceという機能を使います。
この機能については、マニュアル(90002180_G)のP41以降に詳しく書いてありますので、ご参照ください。

もっとも、英語ですし全部読むと大変なので、以下に要点のみ記載します。

<ポートに関して>
XBee Application Serviceで使用するポートは、0xBEE(3054)固定になります。
ハードコーディングされているので、ポートの変更は出来ません。
なお、C0コマンドやDEコマンドでセットしたポートは、シリアル通信機能(ATモードとかAPIモード)でのポートになります。
よって、X-CTUで設定するポートは、XBee Application Serviceでは使用しません。


<トランスポート層のプロトコルについて>
XBee Application Serviceでは、UDP固定になるのでご注意ください。
JAVAなどを用いてクライアントからアクセスするときは、UDPでソケットを開けば問題ありません。
X-CTUでセットできるプロトコル(TCPあるいはUDP)というのも、ポートと同様、シリアル通信機能での設定になります。


<フレームについて>
APIモードで送信する場合は、APIフレームに沿ってデータを送信する必要がありました。
XBee Application Serviceでも同様に、XBee Application Serviceのフレームが用意されています。
マニュアルのP42に、そのフレームが記載されています。

XBee_NTCframe.jpg


このフレームに沿って、ATコマンドを渡すことで、XBeeの制御を行うことが出来ます。

以上をまとめると、例えば、192.168.1.30が割り当てられたXBeeのD1ポートを出力HIに変更したいときは、以下の設定でフレームを送信します。

IPアドレス:192.168.1.30
ポート:3054
プロトコル:UDP
送信データ:{0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 'D', '1', 5}

<例(JAVA)>


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

public class XBeeCtrlTest {

public static void main(String[] args) throws Exception{

InetSocketAddress xbeeAddress = new InetSocketAddress("192.168.1.30", 3054);

byte[] msg = {0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 'D', '1', 5};

DatagramPacket sendPacket = new DatagramPacket(msg, msg.length, xbeeAddress);

new DatagramSocket().send(sendPacket);

System.out.println("OK");

}

}


その他の例として、マニュアルのP43にIDコマンドを投げるときの手順が記載されていますので、ご確認ください。

どうです?
意外と簡単でしょ!^^
是非、トライしてみてくださいね!

最後までお読みいただいて、ありがとうございました!

スポンサーサイト
こんばんは!
無事にXBee Wifiが動くようになってご機嫌のゆってぃです^ ^
上手く動かなくて泣きそうになった時の記事

せっかく動くようになったので、さっそくパソコンと通信をさせます。
そのためには、XBee Wifiをパソコンと同じサブネットに追加します。
(パソコンと同じルーターにぶら下げます)

なお、今回はATモードでの説明になります。
PCからリモートでXBeeのポート制御などをしたい場合は、下記の記事をご覧下さい^^
PCやスマホからXBee Wifiのポートを制御したい!

--

(1)X-CTUで「Active Scan」を実行します。
   この時、十分な電流を供給できないと、上手くスキャンできない時があるようです。
   スキャンしてもアクセスポイントが見つからない場合などは、電源を疑ってみてください。

(2)接続したいアクセスポイントのSSIDを選択し、必要に応じてパスキーを入力後、「Select AP」ボタンを押します。

--

たったこれだけ(笑)

なお、今回のXBeeのネットワーク設定は、下記の通りです。

AH = 2 (INFRASTRUCTURE)
CE = 2 (STA MODE)
IP = 1 (TCP)
MA = 0 (DHCP)

Source Port = 2626(10進数では9750)
IP Address = 192.168.111.105

パソコン側は、C言語で書くとややこしいので、今回はRubyでチェックしました。

#--ここから

require "socket"

skt = TCPSocket.open("192.168.111.105", 9750)

skt.write("hello")
skt.close

#--ここまで

無事、XBeeと接続しているCOMポートからは、"hello"の文字が出力されました^ ^

う~ん、なんて簡単なんだろう!!

XBee Wifiは(当然ながら)スマートフォンとも通信できるので、色々面白い事が出来そうです。
こんにちは!
明後日にアロマ検定1級を受験するのに、全然勉強が進んでいないゆってぃです(涙)

さて、実は以前、ゆってぃはXBee Wifi(S6B)をこっそり購入していました。
ですが、同時期に買ったRaspberry Piが楽しくてすっかり没頭してしまい、可哀想なXBeeは引き出しの中で封印されていたのです。

でも、4000円くらいした製品ですし、3連休を利用して遊んでみようと思い、封印を解除(笑)
X-CTUでF/Wを書こうとした時、事件は発生しました。。。

F/Wが書き込めない…。

書き込み終了時に、下記のエラーが出てしまいます。

---------------

Getting modem type....Programming modem...OK
Failed to enter command mode
Found bootloader active reprogramming firmware.
Write Parameters...Failed

---------------

何度writeしてもこの表示が出ます。
たま~~~にうまく行くこともありますが、結局その後の動作が不安定です。
(scan出来ない)

ネットで調べてみると、どうやら同じ症状が出ている人は少なくない様子。

もうね、はまりましたよ…。
たぶん、累計で4~5時間は悩みました(涙)
でも、まさか意外なところに落とし穴があったなんて…

実は、僕はXBee ZB用に秋月で買ったAE-XBee-REG-DIP(ピッチ変換基板)を、そのままXBee Wifiでも流用していました。
(もうこの時点で「あ、こいつバカだわwwwwww」とお気づきになられた方もいらっしゃるかもしれませんね…)

でも、全然うまくいかない。
WBee ZBに差し替えると動くのに、WBee Wifiは動かない。
電源ラインにコンデンサを入れても効果無し・・・。

うまくいかないから、しょぼくれながらAE-XBee-REG-DIPをまじまじと見ていたんですよ。
ゆ「この基板、レギュレータが実装されてるんだよなぁ…。でも、ずいぶん小さいなぁ」

・・・ん?レギュレータが小さい?

あれ、もしかして・・・

レギュレータの電流容量が足りてねーんじゃね??

説明書にレギュレータの仕様が書かれていないので定かではないですが、この大きさではせいぜい150mA~200mAが良いところでしょう。
でも、僕の買ったXBee Wifi(S6B)は、最大で309mAも食う大飯食らい。
予想ですが、書き込み時にも結構電流を使うんじゃないかな…

ためしに、AE-XBee-REG-DIPのレギュレータをはずして、XBeeのVCCにはVBUS 5Vから別のレギュレータ(3.3V出力。500mAまで出力可能)を経由して電源を供給(念のため、100uの電解コンと、1uのセラコンを付けました)しました。
その上で、おかしくなっちゃったF/Wを書き戻すため、F/Wの書き戻し方を参考にF/Wを書き戻し・・・無事に動くようになりました^ ^

(因みに、この方法を試しても、1回でうまく行くとは限らないようです。僕は3回目でようやく書き戻せました。この方法でも確実に復活する保証は無いようですので、自己責任でお願いいたします)


いやぁ、安心しました(笑)
けど、電源は回路で一番重要なのに、まだまだ勉強不足ですね(涙)
もし、同じ症状でお悩みの方がいらっしゃいましたら、ご参考にして頂ければ幸いです。
(結構いると思うんだけどなぁ…。いや、僕だけかな…)

ゆ「世間の大人どもが本当のことを言わないなら、オレが言ってやるっ・・・・・・・・!」
ゆ「金(電源)は、命(F/W)より重い・・・・・!」
ゆ「AE-XBee-REG-DIPでは、XBee Wifi(S6B)は動かないっ・・・・・!」
(なお、S6は消費電流が少ないので、コンデンサさえ付ければギリギリ動くこともある模様っ・・・・・!)


最後までお読みいただいて、ありがとうございました!(感謝)
こんにちは!
連休なのに、特に何もせず、気がついたら連休最終日のゆってぃです!

本当は実家に帰ろうと思っていたのですが、妹の友達が実家に泊まりにくるらしく…。
どうやらその子は(実家の)僕の部屋で寝るそうなので

これじゃあ、帰るに帰れないじゃないか!

という訳で、いつも以上に引きこもり度が高い状況になっております。

さて、今回は前回に引き続きXBee入門講座です!
前回の記事をお読みでない方は、まずはこちらからご覧下さい。

XBeeの使い方(ZBタイプ) 超入門編 第1回!

今回は説明を2回に分け、以下の段取りで進めております。

第1回 ~座学~
 (1)XBeeがもつ通信モード
 (2)XBeeのネットワーク体系
 (3)ここまでのまとめ

第2回 ~実技~
 (4)PCとXBeeの接続方法
 (5)X-CTUを用いたファームウェア設定方法(macの人ごめんなさい…)
 (6)デモンストレーション(オシロスコープで波形確認)

という訳で、第2回目の今回は、実際にATモードのファームウェアをX-CTUでXBeeに書き込み、UART通信を無線化するところまでをご説明したいと思います。

さっそく、(4)PCとXBeeの接続方法から進めていきましょう!

なお、今回は手元に下記のものを用意しました。
これらが必ずしも必要な訳ではありませんが
今回はこれらを用いて説明を行います。

・XBee×2個
・USBシリアル変換モジュール+USBケーブル
・ブレッドボード+リード線
・XBee用ピッチ変換基板(2.00mm⇔2.54mm)×2個
・パソコン(Windows)

(4)PCとXBeeの接続方法
XBeeとPCは直接USB通信を行うことは出来ませんので、接続する時にはUSBシリアル変換モジュールを使用します。

UART通信をするだけなので、電源とグラウンド、あとはTXとRXさえ繋いでしまえば完了です。

今回、ローカルXBee(PC接続側)とPCの接続には、デジットのUSB-シリアル変換モジュールを使用しています。
このモジュールは、組み込み屋さんではお馴染みのFT232RLを実装しており、ジャンパ切り替えで出力I/O電圧を5V⇔3.3Vで切り替えることが出来ます。
XBeeは3.3V系駆動なので、FT232RL出力レベルも3.3Vに合わせます。
ここは絶対に間違えないよう、ご注意下さい!
FT232RLは内部に5V→3.3VのLDOを内蔵しており、3V3OUT端子からは3.3Vが出力されるので、それをVCCIO端子に入れてあげてください。
デジット製の変換モジュールの場合、ジャンパピンは3-4ピンショート側にセットすればOKです。

なお、秋月電子製のUSBシリアル変換モジュールも同じFT232RLを搭載しているので、こちらでも構いません。
1000円を切る価格なので、かなりお安いですね。
(こちらも、ジャンパ切り替えで出力I/O電圧の切り替えが可能です)

スイッチサイエンスではXBeeエクスプローラUSBという、XBee接続に特化したUSBシリアル変換基板も取り扱っているようです。

また、僕はピッチ変換基板として、秋月電子製のAE-XBee-REG-DIPを使用しています。
スイッチサイエンスで売っているものより100円お安い上、電源ラインには3.3Vの電圧レギュレータが搭載されています。(ただ、信号ラインのレベルシフターはありませんので、通信は3.3V系でなければいけませんよ)

USBシリアル変換にFT232RLを使用することを前提とすれば、接続図は以下のようになります。
これはデジット製の変換ボードを元に書いた回路図ですが、秋月電子製でもピン配置がちょっと異なるだけで、ほとんど同じです。

PC_XBeeConnect.jpg

秋月電子製のピッチ変換基板を使用した場合、電源とGNDがきちんと接続されていれば、下の画像のように変換基板のLEDが点灯します。

接続画像

ここまで出来れば、接続はOKです!
お疲れ様でした!!

次はいよいよ、XBeeへのファームウェア書き込み作業に入ります!

一気に進めると疲れてしまうので
適度に休憩を挟んでくださいね!

(5)X-CTUを用いたファームウェア設定方法
前回お話したとおり、XBeeは2種類の通信モード3種類の役割を持っており、各XBeeにはそれぞれを1つずつ振り分けてあげる必要があります。
これらの設定は、UART通信でコマンドを投げることにより行うのですが、ひとつひとつのコマンドを手でキーボードを叩いて送るのは大変です。
そこで、Digiが提供してくれているX-CTUのいうツールの出番です。
このツールは、XBeeの各種設定をGUIベースで簡単に行うことが出来る便利ツールです。
Digiのダウンロードサイトから、無料でインストーラーをダウンロードすることが可能です。

Diagnostics, Utilities and MIBsと書かれたところをクリックして・・・

ダウンロード画面1

XCTU_ver.5.2.7.5_installerと書かれたリンクをクリックします。
(バージョンは、今後更新される可能性があります)

ダウンロード画面2

ダウンロードするファイルのサイズは約50MB程度なのですが、Digiのダウンロードサーバーが重くて…
気長にお待ち下さい(笑)
(安定していれば10~20分くらいだと思います)

インストーラーのダウンロードが完了したら、さっそく実行しましょう。
起動画面で、Nextを押します。

XCTUインストール1

次に、ライセンス認証画面が表示されるので、I Agreeにチェックを入れ、Nextを押します。

XCTUインストール3

次に、インストールフォルダの選択画面が出てきます。
デフォルトで問題がなければ、そのままNextを押します。

XCTUインストール3

インストール確認画面が表示されるので、Nextを押します。

XCTUインストール4

インストールが始まります。

XCTUインストール5

しばらくすると、最新のファームウェアチェックを確認するダイアログが表示されるので、はい
を選択します。

XCTUインストール6

ここからは恐ろしいほど長いです!

かなり長い時間を要するので、部屋の掃除とか別のことをやりながら待つことをオススメします。

しかも、途中でタイムアウトエラーが発生したりして心が折れることもありますが、根気強くインストールを続けてください。



さて、無事にインストールが完了したら、X-CTUを起動します。

X-CTUを起動すると、下の画面が表示されます。
まずはXBeeと正常に通信が行えているかを確認するため、Test/Queryボタンをクリックします。
XCTU初期設定1


正常に通信が行えていれば、新たに表示されたダイアログボックスの先頭に
Communication with modem..OK
の文字が表示され、一番下には接続しているXBeeのシリアル番号が表示されます。
XCTU初期設定2

ここまで来れば、もうひと踏ん張りですよ!
あと少しで、素敵な無線通信ライフがあなたの手の中に入ります!

想像してください。
家に遊びに来た女の子が、部屋のいたるところにあるXBeeを見てこう言う訳ですよ。

「ゆってぃくん、これはなぁに?」

「これはXBeeという無線モジュールさ。これを使って、家中の情報をパソコンで一元管理しているんだ(キリッ)」

「すごぉい!結婚して!!><」


素晴らしい!!!
実に素晴らしい!!!


・・・


・・・って、んな訳あるか!!!!

大体ね、よく雑誌とかで「モテ部屋」特集などと謳っている企画をやってますが
家に女の子が来てる時点で、ソイツはもうモテてるんだよ!(怒)
モテないヤツはね、いくらモテ部屋を作ったところで、それを見せる女の子がいないのよ!(涙)

つまり!!

モテ部屋を作ればモテるっていう考え方自体
すでに論理が破綻してるんだよこの野郎!!!
(雑誌の内容を信じて、色々エスニックな雑貨を買ってしまった後に気がついたのは秘密です)


むふぅ…むふぅ…


さて


今度は、Modem Configurationタブをクリックします。

XCTU初期設定3

すると、画面がModem Configuration設定モードに移ります。
このモードで、前回お話した通信モード役割を設定します。
画面左上のReadボタンを押してください。

XCTU初期設定4

Readボタンが押されると、現在の設定値が読み出されます。
下の図の例では、Function Setと書かれたプルダウンリストに「ZIGBEE ROUTER AT」と書かれています。
つまり、現在書き込まれている設定は通信モードはATモード役割はROUTERということがわかります。

XCTU初期設定5

早速、このXBeeを以下の設定にしてみましょう。

通信モード:ATモード
役割:COORDINATOR
PAN ID:5
Distination Address:通信相手のアドレス(ZBタイプの場合は、XBeeのシリアル番号が相当)

先ほどの画面で、Function Setと書かれたプルダウンリストをクリックし
ZIGBEE COORDINATOR ATを選択します。
XCTU初期設定6

次に、PAN ID5に設定しましょう。
(別に5にしたい理由はありませんが(笑))

XCTU初期設定6-1


今度は、Distination Address High 及び Distination Address Low を設定します。

今、手元には2つのXBeeがあると思います。
ひとつは現在PCと接続されていますね。
もうひとつの裏側をご覧下さい。
この写真の例では、右下に0013A200 40899AD0と書かれています。
これが、このXBeeのシリアル番号です。

シリアル番号


Distination Address Highには、上位4バイトを入れます。(前半の8文字)
今回の例では0013A200になります。

XCTU初期設定6-2

Distination Address Lowには、下位4バイトを入れます。(後半の8文字)
今回の例では40899AD0になります。

XCTU初期設定6-3


ここまではOKでしょうか?
正しく設定できたら、最後にWriteボタンをクリックします。

XCTU初期設定7

書き込み中・・・

XCTU初期設定8

無事に書き込みが完了すると、画面左下にWrite Parameters...Completeの文字が表示されます。
(たまに書き込みに失敗することがありますが、そんな時はあきらめずにもう一度Writeボタンを押してください)

XCTU初期設定9

以上で、X-CTUを使用したファームウェアの設定方法の説明は一旦終了です。

同じ要領で、今度はもう片方のXBeeにも設定を行いましょう!
念のため、USBケーブルを抜いてXBeeへの電源を落としてから、XBeeの付け替えをお願いします^^

さて、設定内容は以下の通りです。

通信モード:ATモード
役割:ROUTER
PAN ID:5
Distination Address:通信相手のアドレス(ZBタイプの場合は、XBeeのシリアル番号が相当)

今回はROUTERモードとして設定を行いますので、ご注意くださいね。


・・・


設定は終わりましたか?

ここまで長い間、本当にお疲れ様でした!^^

さぁ!
これが終わったら、次はいよいよ通信のデモンストレーションです!!

(6)デモンストレーション
いやぁ、ここまでお疲れ様でした!
長かったですね!!><
でもね、書いている僕の方もかな~~~り長かったです!!(涙)
途中で回路図書いたりなんやかんやしていましたが、現時点でかれこれ3時間くらいかけて書いてます!

なんだよ。時間かけてる割には、内容が薄いじゃねーか。

そんなこと言わないでくれーーー!!!(涙)

クリリンのことかーーーーー!!

ん?なんだ今の?

さ!これ以上シュールな展開になる前に、先に進めてしまいましょう!(汗)

ここまでで、各XBeeに対してATモードでの設定は一通り完了しました。
あとは実験だけですが、前回もお話したとおり、ATモードではXBeeはシリアル通信を無線化してくれるだけなので、本来であればそれを受信するマイコンやPCが必要になります。

FM3との通信であれば、こちらの記事にソースコードが載せてありますので、ご参照下さい。
PICマイコンのソースも、近日中に公開いたします。
(と言っても、UART部分をレジスタ設定するだけですが…)

今回のデモンストレーションでは、ATモードでの無線通信が行えているかを確認するだけですので、リモート側のDOUT端子を直接オシロスコープで覗いてしまいましょう。

なお、リモート側の回路は以下の通りです。

Demo.jpg


PC側は、TeraTermを起動します。
ここで、ターミナル上で'a'と打ってみます。
すぐに、リモートXBee側のDout端子以下の波形が出力されました。

波形

ここで、この波形を人間デコードすると
1000_0110
と流れてきていることがわかります。
LSBファーストなので、実際のデータは0110_0001ですね。
16進数に直せば、0x61です。
これは、アスキーコードの'a'に相当します。

つまり、きちんとローカルXBeeからリモートXBeeへ通信が出来たということです!

やりましたね!!

いやぁ、ここまで本当にお疲れ様でした(^-^)
ATモードでの通信は、こんなにも簡単に、しかしながらきちんと行うことが出来ます。
今回のデモはオシロスコープで済ませてしまいましたが、実際はここにマイコンなどがつきます。

それで、例えば'a'という文字を受信したらモーターを動かしたり
'b'という文字を受信したらセンサー値を取ったり
'c'という文字が流れてきたらLEDを光らせたり

夢が広がるでしょう??
(え…そうでもないですか…?そうですか…)

しかし、XBeeにはAPIモードというもうひとつの通信モードもあります!
これを使えば、上に書いたような簡単な処理ならマイコンなしで実現可能です!
APIモードを使用した記事も、近日中に公開予定です!

どうぞお楽しみに!!

最後までお読みいただいて、ありがとうございました!!(感謝)

//-----

なお、XBeeの使い方は、トランジスタ技術12月号にかなり詳しく書かれています。
特にAPIモードに関しては、実使用例も含めて非常に詳しい記載があります。
今回の記事も、ずいぶん本書の内容を参考にさせていただきました。
しっかりした知識を得たい方には、とても参考になると思います。



参考書としては、こちらの書籍も有用です。
ボリュームもあって、とても参考になりますよ!
ArduinoでサクっとXBeeを動かしたい人から、APIモードでガシガシXBeeを動かしたい人まで、多くの人にオススメしたい一冊です!
(もちろん、反ArduinoなPICマイコン派の人でも大丈夫ですよ笑)

みなさんこんばんは!

さぁ~!三連休ですよ~!!!

仕事は全然終わっていませんが
休むときはピシッと休むのがモットーのゆってぃです(おぃ…)

さて、今回はまたまたXBeeネタです。
ですが、今日はマイコンのソース関連ではなく、XBeeモジュール(以下、XBee)側に焦点を当てて書いていきたいと思います。
今までは「マイコンとシリアル通信できた~!」とか言ってマイコン側のソースを一方的に載せているだけでしたが、よく考えたらXBee側の記事を全く書いていないことに気がついてしまったもので。。。

読者様の立場に立ってみると、これでは全く意味がありません。
だって、マイコン側の設定なんて、ただのUARTの設定に過ぎないのですもの!

という訳で、今回はXBeeの基本的な部分に関する記事を書いていきますね。
(というか、僕自身がXBeeの応用的な知識を持っていないため、基本的なことしか書けないのは超極秘事項です)

しかしながら、一度に全部書こうとすると
ただでさえ無駄な文章が多い当ブログですから
記事がとてもとても長くなってしまいます。

ですので、誠に勝手ながら2回に分けさせていただきます!!
(1回でまとめて書くのが面倒くさい訳ではありませんよ!)

第1回目の今回は、XBeeの通信モードや役割モードなどの説明で、どちらかと言えば座学的なお話をします。
第2回目には、簡単な配線をしたりXBeeにファームウェアを書き込んだり、実技的なお話をしたいと思います。

第1回 ~座学~
 (1)XBeeがもつ通信モード
 (2)XBeeのネットワーク体系
 (3)ここまでのまとめ

第2回 ~実技~
 (4)PCとXBeeの接続方法
 (5)X-CTUを用いたファームウェア設定方法(macの人ごめんなさい…)
 (6)デモンストレーション(オシロスコープで波形確認)

!!注意!!
ここでお話しするXBeeは、ZBタイプを前提にしております。
それ以外のタイプに関しては、このブログでの説明は致しません…
せっかく来ていただいたのに申し訳ありません(T_T)


それでは、説明に入りま~す!(パチパチパチ)


(1)XBeeがもつ通信モード
XBeeには、ATモードAPIモード2種類の通信モードが存在します。
XBeeを使用するときには、このどちらかのモードを選択して使用します。
さっそく、それぞれのモードについて説明していきますね。

<ATモード>
ATモードは、2つのXBeeモジュール間で、無線化されたUART通信を行うモードです。
具体的な用途としては、PC⇔PCPC⇔マイコンマイコン⇔マイコンの通信を無線化することなどが挙げられます。
このモードのメリットは、とにかく非常にお手軽だということ。
XBeeを無線通信のアンテナのような役割のみに限定できるので、PC側からは(例えば)シリアルターミナルにデータを流し込めば、あたかも有線で接続されているように、PCに繋いだXBee(ローカルXBee)から遠隔で別のXBee(リモートXBee)へ転送することが出来ることです。
つまり、今までRS232通信を前提にPC⇔マイコン通信用に書いてきたソフトウェア資産を、そのまま流用することが出来る、ということです。
(TeraTermで'a'という文字をローカルXBeeに送れば、そのまま'a'という文字がリモートXBeeから出てきます)

逆に言えば、このモードを使う場合は接続される機器全てに制御プログラムを書かなければならず、ごくごく簡単な制御しか行わないのであれば、(例えば、LEDを付けたり、センサー値を取ってきたり)、このモードを使う意味というのは薄いかもしれません。

<APIモード>
APIモードは、XBee内のマイコンにATコマンドと呼ばれるコマンドを投げることによって、XBeeモジュールの各端子に対し、コマンドに応じた制御を行うことが出来るモードです。
このモードのメリットは、PCに繋いだXBeeモジュール(ローカルXBee)から、遠隔で別のXBeeモジュール(リモートXBee)の端子情報を読み出すことなどが出来るので、リモートXBeeの端子に直接センサーなどを繋いでおけば、リモートXBee側は他に外付けマイコンが無くても、きちんと仕事をさせることが出来る点です。
ただし、XBee内のマイコンを使用するだけでは、残念ながら複雑な制御を行うことは出来ません。
そんなときは、ATモードの時と同様に、リモートXBee側にも別途高性能なマイコンを付けてあげれば、多様な制御が行えるようになります。
(これだけ読むと、「ん?ATモードと何が違うの?」と思われるかと存じますが、以下に記述するように、APIモードではAPIフレームが定義されている点が異なります)

なお、APIモードを使用する場合は、規定されたプロトコル(APIフレーム)に沿ってコマンドを投げる必要があります。
XBeeのデータシートに詳しい説明が載っておりますので、ご参照ください。
(機会があれば、このブログでも紹介します)
また、APIモードでは通信エラーが発生した際に、自動的に再送処理を行ってくれるというメリットもあります。

(2)XBeeのネットワーク体系
さて、各モードについてご理解いただけましたでしょうか?
「僕は無線でPCとFM3を繋げてサクっと通信したいから、ATモードだな!」
「私はXBeeに沢山センサーを繋げて家の中の情報をセンシングしたいから、APIモードがいいな」
そんな思いが瞬時に頭の中に生まれてきたのなら
非常に残念ながらあなたも立派な引きこもりエンジニアです(笑)

さて、XBeeで通信を行う前に、XBeeのネットワーク体系について軽くお話します。
XBeeには2種類の通信モードがあることはお話した通りですが、XBeeにはさらに3種類の役割のいづれかを設定する必要があります。

3種類の役割はそれぞれ、COODINATORROUTEREND DEVICEと呼ばれています。

設定方法は次回詳しくご説明いたしますが、XBeeの初期設定時には、各XBeeに通信モード役割をそれぞれ設定する必要があります。

さて、XBee同士で通信を行う場合、それぞれのXBeeが同じPAN ID(Personal Area Network ID)を持っていなければなりません。
PAN IDとは、そのネットワークのIDだとお考え下さい。
そして、1つのPAN ID内には、必ず1つのCOORDINATOR(コーディネーター)となるXBeeが必要です。(2つ以上あってはいけません)
もっとも、自宅で実験する分にはご近所にXBee大好きな引きこもりエンジニアの方が住んでいない限り、そうそうPAN IDが競合することはないでしょう(笑)
(社内や学内でのデモや、展示会・学会などで使用する場合にはご注意くださいね)

そして、同じPAN IDを持つ他のXBeeは、ROUTER(ルーター)END DEVICE(エンドデバイス)のどちらかになります。
これはどちらを選択してもかまいませんが、ルーターにはエンドデバイスとしての機能もあるので、ルーターを選択しておけば間違いありません。(ただし、ルーターでは省電力モードに入ることが出来ません)

ですので、例えば1:1の通信を行いたいのであれば、片方のXBeeをコーディネーターに、もう片方をルーターに設定しておけばOKです。

(3)ここまでのまとめ
さて、一度ここまでをまとめてみましょう。
XBeeの設定には、以下のパラメータが存在します。

<1>通信モード
 ・ATモード
 ・APIモード

<2>役割
 ・COORDINATOR(コーディネーター)
 ・ROUTER(ルーター)
 ・END DEVICE(エンド デバイス)

ですので、例えば2つのXBeeをAPIモードで通信したかったら
XBee1:APIモードのコーディネーター
XBee2:APIモードのルーター
のように設定します。

はい!

以上で、前半戦は終了です。

お疲れ様でした!!

なお、XBeeの使い方は、トランジスタ技術12月号にかなり詳しく書かれています。
今回の記事も、ずいぶん本書の内容を参考にさせていただきました。
擬似的なI2CでXBeeとセンサーを繋いで、APIモードで操作する内容が書かれています。
ハードウェア含めてしっかりした知識を得たい方には、とても参考になると思います。



参考書としては、こちらの書籍も有用です。
ボリュームもあって、とても参考になりますよ!
ArduinoでサクっとXBeeを動かしたい人から、APIモードでガシガシXBeeを動かしたい人まで、多くの人にオススメしたい一冊です!
(もちろん、反ArduinoなPICマイコン派の人でも大丈夫ですよ笑)



それでは、第2回をお楽しみに!
XBeeの使い方(ZBタイプ) 超入門編 第2回!(設定編)

最後までお読みいただいて、ありがとうございました!!(感謝)
ご訪問者様
プロフィール

ゆってぃ

Author:ゆってぃ
経歴7年の組み込み系・制御系エンジニアです。
("ど素人"という文言は取りました…笑)
ソフトウェア開発経験ゼロの状態から、なんとか実務がこなせるようになってきた現在に至るまでの経験を、備忘録代わりに綴っていきたいと思います。
入門者の方、大歓迎!
(上級者の方、ごめんなさい…)

あと、ブログには全然関係ないですが、Bumpy Headというバンドのギターをやっています。
ライブ情報なんかも書いたりすることがあるので、その時に「行ってもいいよ~」といった感じのコメントを戴けると、泣いて喜びます(泣)
ブログ読んでくださってる方なら、チケット代サービスしちゃいます!

最後に…滅多に流用することは無いでしょうが、このブログに書かれているソースは、特に指定の無い限りMITライセンスとします。ただし、一部それ以外のものもございますのでご注意下さい。
※ブログのリンク先にあるコードに関しては、リンク先のポリシーに従ってください。

最新記事
最新コメント
カテゴリ
RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

twitter
リンク
ブロとも申請フォーム
スポンサードリンク