Todotaniのはやり物LogTodotaniのはやり物Log自分の中でマイ・ブームなはやり物について、ダラダラ綴っています。»XBeeを使ってみるMTM06でスイッチサイエンスさんからXBeeを購入しました。前から使ってみたいと思っていたのですが、面白い応用例が思いつかず(電力モニターとか先例があるし)先送りになっていました。「とにかく使ってみるぜ」といじり始めると、すごく機能があり奥が深いです。そのため、設定面では結構ハマってノウハウもたまりました。XBeeの基本設定については多くの方がブログで解説していますが、最新のZB型(ZigBee対応)でAPIモードを使った設定例はあまりなかったので、この点について記載します。今回は、XBeeモジュールの種別・基本動作の解説とループバックテストを行うまでの基本設定について記載します。XBeeモジュールの種別2010年12月時点でスイッチサイエンスさんから購入できるXBeeモジュールには大きく分けて以下の4種類があります。XBee独自規格の短距離版ZigBeeと共通の無線規格(IEEE802.15.4)上に独自の上位ネットワークプロトコルを載せている。XBeeの選択は悩むところですが、Mesh通信(Routerノードを介したマルチホップ中継や、Routerノード故障時に通信経路の再構築=迂回が可能)を試してみたく、ZBモジュールを購入しました。私が買ったのは、ZBモジュールのチップアンテナ版(XB24-Z7CIT-004)とワイヤーアンテナ版(XB24-Z7WIT-004)です。ZBはシリアルインタフェースを使用してホストMCUと通信を行いますが、以下に示す2つのインターフェースに対応しています。ホストからのデーターを無線リンクに透過するモデムとして動作。XBeeモジュールの設定はATコマンドで行う。ホスト-XBee間でデーターおよびコマンドをAPIフレームでやりとりする。透過モード・APIモードをシーケンス図的に描くと以下のようになります。■透過モードはいわゆるATモデム(懐かしい!)と同様の動作になります■APIモードの動作は以下となります送信データは、APIフレーム形式ででXBeeモジュールに渡します。リモート側で受信したデータもAPIフレーム形式でシリアル回線に出てきますデバイス設定はATコマンドをAPIフレームに入れてXBeeモジュールに送ります。APIフレームには任意の宛先アドレスを設定できるため、リモート側(遠方)のXBeeモジュールを操作することも可能。ループバック試験による動作確認を行うために、透過モードの設定を行います。その後に、APIモードに設定を変更し、リモート側モジュールのGPIOを使ったLチカ(リモートLチカ)やADCポートに接続したセンサーデーターの読み取り(リモートセンシング)を行うことにします。ZBモジュールが準拠するZigBee規格では、以下に示す3つのデバイス種別が存在します。ID)の広報や無線CHの選択を行うノードで、ZigBeeネットワーク内に必ず1つ必要。ネットワークの立ち上げ後はRouter動作を行う。常時オンでスリープしない。Device間のデーター中継を行う。Deviceとしての動作も可能。Deviceがスリープ中の場合、一時的に受信データーをバッファリングする。中継機能を持たない代わりに、送受信データーが一定時間ない場合はスリープ状態になり消費電力を節減する。そのため、電池で長時間の動作が可能XBeeの実験を行うためには、最低2個のモジュールが必要ですが、上記の要件から、1個はCoordinatorに設定する必要があります。Deviceにしています。ZigBeeならではスリープ状態の実験もしたいためですが、設定開始時にデバイスがスリープしているとエラーになる場合があるため注意が必要です(その場合は再度やり直し)。Routerにしておけば常時オンのため、このような問題に遭遇することはなくなります。ZBの設定には、販売元のDigiが提供するX-CTUと呼ばれる設定ツールを使用します。7だと強制終了ができず、ログオフが必要になる場合がありました。ZBモジュールとPCをシリアル接続する必要があります。PCとの接続には、XBeeのソケットとUSB・シリアル変換チップを乗っけたXBeeエクスプローラUSB(写真左)あたりを使うのがお手軽です。X-CTUで設定中にリセットを要求されることが度々あるため、リセットボタンを追加してあります。スイッチサイエンスさんの2.5mmピッチへの変換基板(写真右)と秋月さんのFT232RLをブレッドボード上で配線する方法もあります。両方を試してみたのですが、XBeeエクスプローラーを使った方が若干動作が安定するように思います。そのため、設定はXBeeエクスプローラーで行うことを前提にします。変換基板+FT232RLで設定を行う場合は、FT232RLのジャンパー2をオープンにしてXBeeモジュールとFT232RLの電源を共通にする必要があります。当初は、FT232RLの電源はPCのUSB側から取っていたのですが、この場合電源が分かれてしまい、XBeeの電源が落ちているがFT232RLの電源が入っておりシリアル回線にHighが出力される可能性があります。XBeeにしてみると電源電圧(電源切っているので0V)より高い電圧がI/Oに加わるので、最悪ラッチアップを起こしかねない使い方だと思い修正しました。原因は分からないのですが、XBeeモジュールを1個壊してこの点に気がついた次第。透過モードの基本設定X-CTUをインストールして起動します。初回起動時は最新ファームウェアをダウンロードするかと聞かれるのでダウンロードしておきます。typeの確認ができます。typeがXB24-Bと表示されますがこれはX-CTUのバグのようで、XB24-ZBが正解です。APIモードのどちらか)とX-CTUの設定が一致している必要があります。APIのチェックが外れた状態)。ZBモジュールも透過モードで動いているということになります(出荷時は透過モード)。typeが正しく読み取れなかった場合は、X-CTUとXBeeモジュールの動作モードが合ってないことが考えられます。上記の表示となった場合、先ずは何回かリトライします(リセット+リトライも実施)。APIをチェックして再度Test/Queryを行います。ZBモジュールがAPIモードで動いていることになります。firmwareをチェックWriteボタンを押して、Coordinator対応ファームウェアの書き込みを行います。以下のダイアログボックスが出現したら、リセットボタンを押してモジュールをリセットします。続いて、ネットワーク関係の情報を設定します。0以外の適当な値を設定(0はCoordinatorが空きIDをスキャンして自動設定。0以外の値を設定した場合は手動設定となります。Deviceのアドレス(裏面のシリアル番号)を設定。DL=FFFFはブロードキャストアドレスですが、ZBモジュールでブロードキャストを行うと、使用に耐えない程遅いです。Deviceのアドレスを設定します。自身のアドレス(=シリアル番号)が表示されています(この値は変更できません)Writeボタンを押してパラメーターを書き込み。書き込みに成功したら、Readボタンを押して設定を確認します。ATのファームを書き込んで設定を行います。IDについてはCoordinatorと同じ値。DH/DLはCoordinatorのSH/SL(シリアル番号)を設定します。ループバックテストループバックテストを行うためにはリモート側のXBeeも動作できるようにする必要があります。そこで、スイッチサイエンスさんのピッチ変換基板を使ってブレッドボードに搭載できるようにしました。この基板は、On/AssociateピンとLED間の配線パターンが引いてあり、抵抗とLEDを追加することによってモジュールの状態をLED表示することが可能です。抵抗は、スルーホールが1/6W抵抗サイズのところに手持ちの1/4W抵抗を押し込んだので部品がはみ出していますがその点はご愛嬌。抵抗は消費電流を抑えるために1KΩを使用しています。ZBモジュールの結線は以下の通りです。LEDを接続すると無線リンクが繋がった際にLEDが点灯します。GNDやっとループバックテストに到達です。Testタブを開きStartボタンを押すとテストパターンが送信されループバックが始まります。LEDが点灯したあたりからデーターが流れ始めます。ZBは設定が難関かもしれません。デバイス種別や動作モードの変更を行うとかなりの確率でX-CTUがエラーを吐きます。自分の環境で発生したエラーと回避方法を書きましたが、使用環境によってエラーの出方が異なるかもしれません。その場合は、X-CTUとXBee本体の動作モードを合わせる、たまにXBeeをリセットし活入れしながらリトライする点を意識して、色んな組み合わせを試してみるしかないかと思います。Point-to-Pointでの使用であれば、XBeeモジュールの方が設定が簡単で使いやすいかも(使っていないのでなんとも言えませんが)。次回は、設定をAPIモードに変えてホストMCUからの制御方法について記載します。APIモードライブラリのLPCXpressoへの移植(2011.10.09)XBeeをAPIモードで使う(2010.12.12)XBeeを使ってみる(2010.12.11)コメント初めまして!マイコンにつながっているXBeeとパソコンに繋がっているXBeeで送受信テストをしています。testは上手くいくのですが、3文字以上になると、タイムアウトになってしまい、悪い結果しかでません。16時05分この記事へのコメントは終了しました。新館CuBeatSystemsSTM32マイコン徹底入門なんでも作っちゃう、かも。研究所SatE-OプロフィールRSSを表示する@niftyが提供する無料ブログはココログ!TwitterTwitterブログパーツ。