XBee(無線通信)の実験パート2
(親と子の1対1で透過モードにより文字を通信してみます)
〔マイコンのトップに戻る〕
〔パート1〕
〔パート3〕
〔パート4〕
〔パート5〕
〔パート6〕
〔XBee3〕
前回(パート1)はXBeeをパソコンに接続して単体で動作させました、X-CTU基本操作とXBee基本(基礎)
の話はそちらを参照下さい。
今回はXBeeを2個準備し親と子に設定後、親から子へ文字を送信して、子はそのまま文字を返送する
ループバックの実験を行ってみます。
尚、ここでの記述は秋月電子のXBee ZBモジュール(シリーズ2)PCBアンテナタイプでの内容となります
PS. *2)
2018/1月 現在、XBee S2モジュールは製造中止です、後継機は"S2C"です
こちらの製品です、ここのMyHPは旧記事ですがぁS2Cでも少し追記して置きます。
PS. *3)
2019/7月 現在、更に低消費電力/小型化したXBee3モジュールが販売されているようです。
"XBee3"でも少し追記して置きます。

XBeeの裏側写真です。
親XBeeと子XBeeのアドレス(シリアルNo)が書いて有ります、
両方メモして置きましょう。
"0013A200"が自分のアドレスの上位4バイトです。
"409821A5"が自分のアドレスの下位4バイトです。
お互いの通信先相手としてこのアドレスを設定します。
《親機の設定を行う》
無線で接続するXBeeモジュールのネットワークには
必ず親が1個必要です、この親をコーディネータと呼ん
でいます。
秋月電子のXBee USBインターフェースボードに
乗せたXBeeを親として設定します。
(PWE-SELジャンパーピンはUSB側に取付けですよ)
@ USBインターフェイスボードをUSBケーブルでPCに接続し、X-CTUツールを起動させます。
A パート1のこちらを参照し、X-CTUとXBeeをコネクトして下さい。 *1)
-------------------------------------(S2/S2B)---------------------------------------
B "Function Set"の項目が"ZIGBEE ROUTER AT"になっています、これはデフォルト設定の
ルータです、なので、親局のコーディネータ(ZIGBEE COORDINATOR)に変更します。 *1)
Updateのアイコンをクリックします。
C XBeeのファームウェアを書き換えます。 *1)

まず、"Function Set"の項目で"ZIGBEE COORDINATOR AT"を選択します。
ちなみに、"AT"は透過モード(ATコマンドモード)を示し、"API"がAPIモードとなります。
次に、"Firmware version"の項目で書き込むバージョンを選択します、
一番上が新しいのでそれを選びましょう。
後は、[Update]ボタンをクリックしてのファームウェアを書き込みます。
ルータ時に設定した内容はそのまま引き継がれるので必要なければ元に戻しましょう。
(S2/S2BはここまでDへ進む)
-----------------------------------------------------------------------------------
-----------------------------(S2C/XBee3はここから)------------------------------- *2)
B "Function Set"の項目が"ZIGBEE TH Reg"になっていますが、これは切替えてもこのままです。
"S2C/XBee3"モジュールのデフォルトも”ルータ AT”ですので”コーディネータ AT”に切替えます。
※ "S2C/XBee3"モジュールは一つのファームウェア内にルータ/コーディネータ/エンドデバイスの
全てが書込まれているのでファームウェアの書換えは必要なく設定を切替えるだけで動作します。
C コンフィギュレーションの設定を”コーディネータ AT”に切替えます。

[Sleep Modes]の項目に有る、"SM"の設定が"No Sleep(Router)[0]"に
なっている事を確認します。

[Serial Interfacing]の項目に有る、"AP"の設定が"Transparent mode[0]"に
なっている事を確認します。
"XBee3は、[UART Interfacing]の項目です。
(因みに、[0]以外の設定になっていれば"API"モードとなります)

[Networking]の項目に有る、"CE"の設定を"Enabled[1]"に設定を行い、
"XBee3は、"From Network[1]"の設定名です。
(この項目がコーディネータ/ルータの切り替えです)
項目右横の[Write]丸ボタンをクリックして設定をXBeeに書き込んで下さい。
-----------------------------------------------------------------------------------
D インターフェースボードのASSC-LEDが点滅していますねぇ。
E PAN IDを設定します、今回は"777"で実験しました。 *1)

この同じIDどうしのXBeeのみ通信出来ます、なので同じネットワーク内なら同じIDとなります。
F 通信相手(子機)のアドレスを設定します。 *1)

DHに相手アドレスの上位4バイトを設定
DLに相手アドレスの下位4バイトを設定
ちなみにSH/SLが自分のアドレスです。
G 各項目右横の[Write]丸ボタンをクリックして設定をXBeeに書き込んで下さい。 *1)
(最後に纏めて[Write]アイコンをクリックしても良いです。)
《子機の設定を行う》
XBee USBインターフェースボードには親機が乗っています、子機XBeeと乗せ替えます。
親機と子機XBeeを取り間違えない様に注意しましょう。
@ USBインターフェイスボードをUSBケーブルでPCに接続し、X-CTUツールを起動させます。
A パート1のこちらを参照し、X-CTUとXBeeをコネクトして下さい。 *1)
B "Function Set"の項目が"ZIGBEE ROUTER AT"になっています、これはデフォルト設定の
ルータです、今回はこのままルータを子機にします。(変更なしです) *1)
"S2C"モジュールの場合の表示は、"ZIGBEE TH Reg"ですが、このモジュールもデフォルトは
"ルータ AT"ですのでそのまま使いましょう。 *2)
"XBee3"モジュールの場合の表示は、"Digi XBee3 Zigbee 3.0 TH"ですが、このモジュールも
デフォルトは"ルータ AT"ですのでそのまま使いましょう。 *3)
C PAN IDを設定します、今回は"777"ですよね。 *1)

D 通信相手(親機)のアドレスを設定します。 *1)

DHに相手アドレスの上位4バイトを設定
DLに相手アドレスの下位4バイトを設定
E 各項目右横の[Write]丸ボタンをクリックして設定をXBeeに書き込んで下さい。 *1)
(最後に纏めて[Write]アイコンをクリックしても良いです。)
《親−子のループバック通信を行う》

上の写真は1対1のループバック通信実験風景です。
上側にあるXBeeがUSBインターフェースボードに乗っている親機
(コーディネータ)です。
下側にあるXBeeが2.54mmピッチ変換基板に乗っている子機
(ルータ)です。
左図がループバックする為の子機側の配線です。
外部電源5Vを配線します。
2−3番端子が配線されているので受信したデータをそのまま返す事に
なります。
親機側は配線はありません、PCに接続するだけです。
@ 親機側をUSBケーブルでPCに接続します。
(親機側から電源を先にいれますよ)
A 子機側に電源を接続します。
B X-CTUを起動させ、パート1のこちらを参照し、X-CTUとXBeeをコネクトして下さい。 *1)
図の@のタブをクリックして[Consoles Working Mode]にします。
下図が表示されるので図のAをクリックし回線をオープンします。
(オープンしたらアイコンはクローズボタンになります)


C 何かキーボードのキーを押して見て下さい、
その文字がすぐ返されると思います。
青文字が親機でのキー入力操作で、
赤文字がXBee子機から返された文字です。
(左図は旧X-CTUでの画面です)
子機からデータが送信されるとその間
USBインターフェースボード(親機)の
"RSSI-LED"が点灯している。
次に+++でATコマンドモードに移行して、
[ATND]コマンドを入力しましょう。
これは親機のネットワークに接続(無線で)されている全ての子機アドレスが表示されます。
今回は1個のみですよね。
入力したデータがそのまま送られるので透過モードって呼ばれているみたいです。
1対1での単純通信なら簡単にデータがやり取り出来ますねぇ。
(ワイヤーで接続されている旧シリアル通信も簡単にこれに置き換え出来そうですね)
リモートコマンド通信やメッシュ通信やAPIモード通信を行おうとすると途端に難しくなりますけどね。
※ X-CTU(ver6.3.4)でこの実験を行って見たがぁ、なんだか文字を送っても帰ってこない、な〜ぜぇ
ATNDコマンドも帰ってこない、ふぁ〜ぃ、なのでぇ、諦めました。 *1)
PS. *2)
”コーディネータ”と”ルータ”にての通信でなく、親機/子機ともに”ルータ AT”と”ルータ AT”の
デフォルトのままで通信を行えば上手く行きます。
親機(S2C:ルータAT)で子機(S2:ルータAT)でも動作しましたが、S2CをコーディネータATでは動作せず。
なのでぇ、1対1での透過モード通信は”ルータ AT”と”ルータ AT”の通信で行った方が良いかもぉ。
親機(S2C:コーディネータAT)で子機(XBee3:ルータAT)では動作した。 *3)
《その他》
これは子機を”USBシリアル変換モジュール”
で接続して実験を行った時の風景です。
実はこの方法が、設定を行う時に親機・子機の
XBeeを載せ替えたりの手間がいらないしぃ、
X-CTUも2個起動させられるので実験が
しやすかったりします。
試しに子機をシリーズ1に交換して通信を
行いました、やっぱり通信出来ませんでした。
シリーズ1・2は混在不可の様ですね。
次回では子機にスイッチなどを配線し
デジタル・アナログ入力のデータを
親機に送信して見たいと思います。
透過モードを使った例で、"XBeeとPWM/サーボシールドを使ってラジコン化してみます"の記事も参考にしてみてぇ。
"XBee3"モジュールでの見直し(*3) 2019/07/06
"S2C"モジュールでの見直し(*2) 2018/02/05
X-CTU(ver6.3.4)での見直し(*1) 2017/01/20
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.