忍者ブログ

Fグループ電子工作講座

秋月電子SH7125ボードで始めるマイコン開発

シリアル通信の設定(XBee S1による無線化1:モジュールの初期化)

関連
XBee S1による無線化2:エクスプローラの配線
XBee S1による無線化3:ベースボードの配線
XBee S1による無線化4:マイコンの設定

シリアル通信によるリモート制御ができていればシリアル通信(RS232CまたはUART)を無線化するユニットを使うことで無線によるリモート制御(ラジコン化)が可能になります。
今回はXBeeによるラジコン化を行います。BlueToothモジュールによる無線化もできるのですが、起動時にペアリングするのが案外めんどくさいです。

XBeeのS1とS2の違い

XBeeにはSeries1Series2があります。
この2種類は見た目ほとんど同じですが、全くの別物です。
Series2がSeries1の後継機というわけでもなさそうです。
ZB(ZigBee)表記のあるものはSeries2です。
S1ーS2間で通信を行うことはできません。

※2019/02/25追記
XBee3ファーム変更によりS1ともS2とも通信が可能です。
ただし、ファームにより802.15.4(S1)、ZigBee(S2)、DigiMesh、(BLEも可?)の何れかを選択するため、S1と通信しながらS2と通信することはできない様です。

S11対1または1対多の状況で使用します。
S2親機(Coordinator)、子機(Rooter)、孫機(End Device)の何れかに設定し必ずネットワークを構成して使います。

両方テストしましたが、シリアル通信(基本的に1対1)を無線化したい場合にはS1の方が向いていると思います。
・S2は親機を1つ設定しないと通信できないが、親機同士では通信できない(設定が悪いだけ?)
・S2は電源を入れてから通信可能な状態になる(ネットワークが構成される)まで数秒のラグがある
・S2は通信可能な状態になる前に通信を開始すると更に通信できるようになるまでの時間が長くなる
S2は電源投入後5秒ぐらい経過してから通信を開始するのが良いようです。
これに対してS1は電源投入直後から通信を行っても何も問題が起きません。

装置を複数用意してお互いが相互に通信を行うにはネットワークを形成しておいた方がよいのでS2が良いと思います。


やらないといけない事は
・XBeeの初期設定
・XBeeとマイコンボードを繋ぐための配線追加
・マイコンの通信設定



<材料1>
・XBee S1:XBee 802.15.4 Series1モジュールPCBアンテナ×2
XBeeエクスプローラ5Vマイコン用×2
・USBケーブルUSB(A)オス-USB(Micro-B)オス
XBee USBインターフェースボードキット ×1

<材料2>※マイコンボードへ直接半田付けする場合は不要
XHコネクタハウジング4P×2
XH基板用コネクタ4P×2
・XHコネクタ用コンタクト10個入り×2 または100個入り
・電線4色(黒、赤+2色)

再度書きますがS1ーS2間で通信を行うことはできません
S6Wifi仕様なのでこれまた全くの別物です。
XBeeモジュールのシリアルポートは3.3V仕様なので5V系のSH7125と直結するわけにはいきません。
そこで、XBeeエクスプローラ5Vマイコン用を使用します。少々値が張るのですがLEDによる動作確認ができ、他のXBeeユニットを使用したい場合にユニットだけ外して交換できるようになるので便利です。
XBee USBインターフェースボードキットはXBeeを初期化する際に使用します。 USBインターフェースボードキットが無くても初期化はできるのですが、あれば確実に設定できるうえPCとマイコン間で無線通信したい場合にも使用できるので1つ持っておくと便利です。

材料2はコネクタ部品です。マイコンボードとXBeeエクスプローラを半田付けでくっつけてしまうと後でエクスプローラを使いまわしたい時に不便なのでコネクタで接続できるようにしています。

<工具>
・半田ゴテ一式
精密圧着ペンチPA-20
圧着ペンチは無くても半田付けで代用できます。

XBee USBインターフェースボードキットの組み立て

ピンソケット(10連の小さい方)と3本脚のピンヘッダを半田付けします。
ピンソケットはいつもの2.54mmピッチより少し狭い2mmピッチです。
ピンソケットはまっすぐ付けないとモジュールが差せません。
端1つのみを半田で仮止めし、コネクタを台に押し付けながらもう一度半田を溶かしなおすとぴったりくっつきます。

反対の端も半田付けしてから残りの脚を半田付けします。
電源端子と10本足のピンヘッダはつけなくてもOKです。

USBバスパワーで動くようにジャンパピンを付ければ完成。

XBeeUSBインターフェースボードキットへXBeeモジュールを差しPCへ接続します。

眩しい。
ドライバはFTDIの標準ドライバが自動的にインストールされると思います。
デバイスマネージャーでCOMポートを確認しておきます。

デバイスマネージャーでCOMポートの番号を確認します。

私の環境ではCOM4となっていました。



XBeeの初期設定

X-CTUを使ってXBeeの初期設定を行います。
S1とS2で設定内容が異なります。
S1、S2共にX-CTUで設定が可能です。

ダウンロード

X-CTUをインストールします。
(※ダウンロード先は2017年9月18日時点)
https://www.digi.com/

PRODUCTS→XCTU

Download XCTU

新しい方はデザインが気に入らないので、古いのをダウンロードします。
下の方に行って
Download Legacy XCTU
XCTU ver. 5.2.8.6 installer(64Mbyte)

内部情報確認

インストールしてXCTUを起動します。
インストール時に最新データに更新するか聞かれます。
更新するとかなり時間がかかります。
スキップしてもそれなりに使えます。

ここで、先ほど確認したCOMポートを選びます。

通信設定は初期状態では以下の値を使用します。
9600
NONE
8
NONE
1
※今後モジュールの通信設定を変更した場合はこの値も変更する必要があります。

Test/QueryでXBeeモジュールと通信がつながるか確認しておきます。
成功するとモジュールのバージョンが出てきます。

Modem typeが表示されていればこの後スムーズに進みます。
Modem typeがUNKNOWN等と出ている場合はひと手間必要。

このメッセージが出るときはモジュールが差さっていないか、COMポートまたは通信設定が間違っています。


通信がつながっているのを確認できたら

Modem ConfigurationのタブでReadをクリック

正しく読み取ることができればモジュールの設定値が出てきます。


モジュールとX-CTUの組み合わせによっては以下の様なメッセージが出る場合があります。
何事もなく設定値を読めた場合は読み飛ばしてください。


X-CTUはモジュールに書き込まれたファームウェアのバージョンを読みだして、これに対応するPC側の設定ファイルを自動的に選択してくれます。もちろんPC側に対応する設定ファイルが用意されている場合の話で、無い場合はどうにもなりません。
このメッセージはXBeeモジュールに書き込まれているファームウェアに対応する設定ファイルがX-CTUに無いので「Webサイトから設定ファイルをダウンロードしますか?」というダイアログです。
「はい」でファイルが見つかれば良いのですが・・・


見つかりませんでした。
今回購入したモジュールのうちXBee 802.15.4 Series1モジュール PCBアンテナは設定ファイルがダウンロードできませんでした。
※別のPCだとDownload new versiondで更新チェックしたら出てきました。


ファームウェアのバージョンが10EEでdigiのサイト内で見つけることができませんでした。

仕方ないので、ファームウェアをアップデートしました。
PCへインストールされていた最新バージョンより購入品のバージョンの方が新しかったので、webサイトより最新のファームウェアをダウンロードします。
https://www.digi.com/support/productdetail?pid=3257
のFirmware Updatesから
XBee/XBee Pro 802.15.4 ver. 1xEF Firmware
をダウンロード。
解凍してXCTUをインストールしたフォルダ(Win10標準だとC:\Program Files (x86)\Digi\XCTU)の\update\xbeeへ中身をコピー
これで10EFを使えるようになります。

ここからSeries1のファームウェアアップデート方法です。
Series2へSeries1のファームウェアを書き込むとたぶんマズイ事になります。
同じくSeries1へSeries2のファームウェアを書き込むとたぶんマズイ事になります。
使用するモジュールの種類をよく確認してから実行してください。

Series1を10EEから10EFへ変更する場合
XB24、XBEE 802.15.4、10EFを選択

AlwaysUpdateFirmwareをチェック
Writeで書き込み
Readで内部設定が正しく読み取れれば成功です。

設定変更

XBEEでシリアル通信(UART)を無線化する場合、最低限シリアル通信の設定だけしておけば通信できる様です。
 
Serial Interfacingより
 BD Interface Data Rate(ボーレートの事)
 NB Parity(パリティー)
を変更します。
設定値変更後、Writeすればモジュールの設定が書き換わります。

※モジュールの通信設定を変更するとX-CTU起動時に設定する通信設定も変更後の値に合わせる必要があります。

これでとりあえず通信はできるようになるのですが、モジュールが増えるとデータが無茶苦茶になるはずです。
シリアル通信の設定だけ変更した場合、すべてのモジュールから送られたメッセージをすべてのモジュールで受ける設定になってしまいます。特定の相手とだけ通信を行うためにNetworking&Security部分を変更します。

DL Destination Address Low(送信先)

MY 16-bit Source Address(送信元:自分自身)
を変更します。

モジュールを2つ用意して
 モジュールA DL:31 MY:32
 モジュールB DL:32 MY:31
等と設定すれば特定の相手のみ受信できます。

正しい使い方か否かは分かりませんが
 モジュールA DL:31 MY:31
 モジュールB DL:31 MY:31
等と設定しても通信できる様です。

これでモジュール単体の準備ができました。
PR

コメント

1. いつもお世話になっております。

こんにちは。ご無沙汰しております。このブログのお陰あってライントレーサもかなり順調です。実は先日開催されましたマイクロマウス全日本学生大会に出場することが出来てなんと優勝する事が出来ました。
マイコンのピン設定はもちろんですが、ライントレースの肝となるPID制御の管理にこのブログのタイマ割込みの記事で紹介されたループを安定化させるプログラムが凄く為になりました。
恐くこのブログに出会って無ければ今頃大会出場どころかライントレースすら出来ずにいたと思います。マイコンもc言語も初めてで右も左も分からない私に道筋を立ててくださり本当に感謝しております。大会の様子の動画リンクを貼っておきますので良ければご覧ください。
https://youtu.be/TT8haTVik8Q

2. まじっすか!

優勝おめでとうございます。
書込み時間がえらいことになっていますが眠れましたか?

動画を拝見いたしました。綺麗な加減速ができてますね。
授業で習う事って理論だけで現実世界と分離してるように思うんです。
こうやって実際に動かしてみて悩んで解決して本当の知識になると思ってます。

何より、最初の一歩を踏み出し、大会へ参加した勇気。
やって出来るか分からないけど、始めないと始まらない。
後輩にも始めることの大切さを教えてあげてください。
そして、ぜひもっと先へ進み続けてください。

プロフィール

HN:
ぼんどF博士
性別:
男性

最新コメント