• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / XBee / XBee無線ネットワーク:XBee-ZBメッシュネットワークの構築①

XBee無線ネットワーク:XBee-ZBメッシュネットワークの構築①

2021年4月6日 by STEMSHIP 1 コメント

ここまでで、XBeeモジュールの概要、モデルの選び方、ポイント・トゥ・ポイントネットワークでデータの送受信をする方法について解説しました。もう少し複雑なネットワークの構築に挑戦してみましょう。

このチュートリアルでは、3つのXBeeモジュールを使用します。コーディネーター、ルーター、エンドデバイスを各1つずつ割り振ります。ここではコーディネーターにシリーズ3モジュールを、ルーターとエンドデバイスにシリーズ2のモジュールを使用しますが、それぞれどのシリーズのモジュールでも構いません。ただし、使用するモジュールによってファームウェアの書き込みと設定の中身が変わってきます。

ここでは、前回使用したATファームウェアではなく、メッシュネットワークを構築するために必要なAPIファームウェアを使用します。ネットワークを介したデータ通信にXBeeモジュールがどのように使用できるかを確認します。

APIファームウェアはZigBeeプロトコルを実装するように設計されており、データメッセージはデータパケットに収められます。つまり、メッセージはATファームウェアの時のような平文のテキストではなく、バイナリデータとして送信されます。

APIファームウェアやZigBeeプロトコルについて詳細に知らなくとも、これらを利用することはできます。ですが、データパケットがどのように形成されているか知っておくと、データを読み取ったり、デバッグを行ったりする際に役立ちます。

ZigBeeプロトコルやパケットのフォーマットについて、参考文献を記しておきます。詳しく知りたい場合は参照してください。

  • ZigBee RFモジュール (Digiインターナショナル,2018)
    https://www.digi.com/resources/documentation/digidocs/pdfs/90000976.pdf

XBeeモジュールのファームウェアの書き込み

まず、XCTUアプリケーションを使用してモジュールにファームウェアを書き込みます。先述の通り、ここではコーディネーターにシリーズ3モジュール、ルーターとエンドデバイスにはシリーズ2モジュールを使用します。

シリーズ3のモジュールをAPIモードに切り替えるには、「APIモード」という設定値を1に設定します。シリーズ2/2.5のモジュールではAPIモード用のファームウェアを選択して書き込みます。

図1 APIモードの選択

XBeeモジュールの設定

新しく実験や製作を始める際には、XCTUアプリケーションでXBeeモジュールを工場出荷時のデフォルト設定にリセットすることをお勧めします。

「Default」ボタンをクリックして設定値を工場出荷時の状態に戻し、「書き込み」ボタンをクリックすればリセット完了です。または、ATコマンドモードで「ATRE」コマンドを送信しても同様にリセットできます。

宛先アドレスやPANアドレスも消えてしまいますが、APIモードではモジュールは自動的に接続され、コーディネーターは16ビットのアドレスを各モジュールに送信してくれるので、ATコマンドモードよりも簡単に設定できます。

続いて、ネットワークにデータを送信する、「送信要求パケット」というバイナリデータを作成します。

テストメッセージの形成

テストメッセージとして、送信要求パケット(送信要求フレームとも)を利用します。送信要求パケットは他のモジュールにデータを送信する際に使用するパケットで、表1のようにフォーマットが定められています。TCPパケットやMySQLクライアントプロトコル等を扱ったことがあれば理解しやすいかもしれません。

表1 送信要求パケット(※データはすべて16進数表記)

オフセットデータ例フィールド内容
07Eパケット区切り文字(ここから1つのパケット)
100 10パケットデータの長さ
310パケットタイプ:送信要求パケット
401フレームID
5XX XX XX XX XX XX XX XX送信先の64ビットアドレス
13XX XX16ビット宛先アドレス
1500最大ホップ数
1600送信オプション
1799 99送信するデータ
19BCチェックサム

注目すべきは、データの長さ、アドレス、送信するデータの部分です。ここでは、64ビットアドレスにはコーディネーターの64ビットアドレスを、16ビット宛先アドレスにはコーディネーターの16ビットアドレスを設定します。

表1の例では、「99 99(10進数で39321)」というデータを送信しています。

パケットデータの長さは、「長さ」の後のフレーム(パケットタイプ)から送信データまでのデータのバイト数を指定します。ここでは、1+1+8+2+1+1+2=16=16進数表記で10となります。

チェックサムは通信エラーの検出に使用するためのデータで、「長さ」に含まれているデータをすべて足し算して下位8ビットを取り出し、0xFF(10進数で255)から引き算します。送信元で計算した答えを送り、受信した側でも同じ計算をして、同じ答えとなれば正常に通信できている、異なる値になれば正常に通信できなかったと判断します。

一見するとややこしい計算ですが、この計算を手動で行うことはあまりありません。XBeeモジュールと通信する際に使用するライブラリがこのあたりの計算を自動で行い、パケットを生成してくれるからです。

また、パケットデータはXCTUアプリケーションのフレームジェネレータというツールを使って簡単に生成できます。XCTUでパケットを送信したいモジュールのターミナルを開いて、「Add New Frame」ボタンをクリックすると、フレームジェネレータが起動します。

図2 フレームパケットの追加

「Add New Frame」ボタンをクリックすると、既存のパケットを編集するか、フレームジェネレータを使用して新しいパケットを追加するか選択するダイアログが表示されます。図2のように、「Create frame using “Frames Generator” tool」をクリックすると、新しいパケットを追加できます。

最初にパケットの種類を選択します。ここでは、送信要求パケット(0x10)です。ダイアログの内容は、選択したパケットの種類によって自動で切り替わります。図3に送信要求パケットの場合のダイアログの例を示します。

図3 送信要求パケットの設定例

図3で、宛先アドレスを「00 00 00 00 00 00 FF FF」としています。これは、ブロードキャストアドレスと呼ばれる特殊なアドレスで、ネットワーク内のすべてのモジュールに同じ内容を送信する場合に使用します。

特定のモジュールにだけパケットを送りたい場合は、そのモジュールの64ビットアドレスを入力します。送信データ(RF data)には送信したいメッセージを入力します。ここでは「Hello」としました。XCTUアプリケーションは作成したフレームを保存してくれるので、いろいろなフレームを作成しておいて送信テストを行うことができます。

次回はいよいよネットワークテストの開始です。

Filed Under: XBee

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM