こんにちは!
連休なのに、特に何もせず、気がついたら連休最終日のゆってぃです!

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

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

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

さて、今回は前回に引き続き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マイコン派の人でも大丈夫ですよ笑)

関連記事
スポンサーサイト
コメント
ゆってぃさん


はじめまして。鈴木と申します。
BLOG拝見させていただいております。

今回、xbee-wifiに関してお伺いしたいことがあり、コメントさせていただきました。



僕は現在、ネットワークに対応した時計を制作しようとしておりまして、それにxbee-wifiを使おうと試みています。しかし、なかなかうまくいきません。iPhone等のアプリからサーバーにデータを送り、そのデータをルーターを介してxbee-wifi へつなげ、遠隔にある時計のアラームを鳴らそうと考えているのですが、今のところ自分の家のローカルエリアネットワーク内でしか成功していません。学校や外のwifi-spotからxbee-wifiにデータを送信しようとするとうまく行かなくなります。



そこで質問なのですが,xbee-wifiで外部からの信号をキャッチすることは可能なのでしょうか。MACアドレスやネットワークセキュリティを解除することはもう試したのですが、なかなか成功しません。また、ほかにも良い方法やモジュール等をご存知でしたらご教授お願いします。



よろしくお願いします。


鈴木
Re: タイトルなし
鈴木様

当ブログをご覧頂き、誠にありがとうございます!

でも、ごめんなさい…
XBeeはZBタイプでしかテストをしたことが無いため、申し訳ないですがXBee WiFiでのアドバイスは出来ません><
確かにWANは難易度が高そうですね。。。
(でも、それが出来たらすごく楽しそうです)

せっかく来ていただいたのに、お力になれず申し訳ありません。
僕の方でも勉強させて頂いて、わかったことがあったら記事を書かせて頂きます。
ゆってぃさん

ご返信有難うございます

お手数をおかけしまして申し訳ありません。

ご丁寧な対応に感謝いたします

鈴木
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
GPS接続の件
教えていただけませんか

XBeeモジュールに GPSモジュールを

取り付けるさい 直にGPSモジュールに

接続できるのでしょうか フィジカルマイコンモジュールなど必要なのでしょうか

送信側ですが 教えてください。
Re: GPS接続の件
> Shell-Stoneさん

コメントありがとうございます^ ^
GPSモジュールの出力がUARTかSPIであれば、XBeeの端子と直接接続出来るので、マイコンボードなどは必要ありません。(ビットレートなどが一致している必要がありますが、一般的なものであれば大丈夫です)
ただし、電圧レベルは3.3VのGPSモジュールをお選び下さいね~!

コメントの投稿
トラックバック URL
トラックバック
ご訪問者様
プロフィール

ゆってぃ

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

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

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

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

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

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