みなさんこんばんは!

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

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

さて、今回はまたまた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回!(設定編)

最後までお読みいただいて、ありがとうございました!!(感謝)
関連記事
スポンサーサイト
コメント
コメントの投稿
トラックバック URL
トラックバック
ご訪問者様
プロフィール

ゆってぃ

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

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

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

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

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

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