• 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年5月3日 by STEMSHIP 1 コメント

前回に引き続き、XBee-ZBメッシュネットワークを構築し、ブロードキャストアドレスにパケットを送信します。ページの最後にはうまく動かないときの対処法(チェックリスト、よくあるトラブル)を書きましたので、参考にしながら読み進めてください。

ネットワークのテスト

いよいよ実験開始です。順番にXBeeモジュールの電源を入れていきます。まずコーディネーター、続いてルーターの順番に電源を入れ、各モジュールとターミナル接続します。このチュートリアルでは、ターミナルモードを使用して3つのモジュールを1台のPC、XCTUアプリケーションに接続します。

ネットワークが正常に構築されたかは、XCTUアプリケーションでネットワークマップを表示して確認します。XCTUアプリケーション右上のネットワークボタンをクリックし、次にスキャンボタンをクリックします。多少時間がかかるかもしれませんが、図1のようなネットワークマップが表示されます。各モジュールの64ビットアドレスや通信経路が分かりやすく表示されています。

図1ネットワークマップ

マップが表示されたら、通信できるか確認してみましょう。任意のモジュールのターミナルで、「Add Frame」ボタンをクリックし、前回のような送信要求パケットを作成します。「Hello」というメッセージを、ブロードキャストアドレス(=ネットワーク内のすべてのモジュール)に送信するパケットです。

作成したパケットを選択して、「Send selected frame」ボタンをクリックするとパケットが送信されます。他のモジュールのターミナルを見ると、いくつかのパケットが通過していく様子が観察できるでしょう。デフォルトではすべてのパケットが表示されるようになっていますが、フィルタを設定して見たいパケットのみ表示する、あるいは見たくないパケットを表示しないという設定もできます。

パケットをクリックして、データを確認してみましょう。図2にパケットを送った例を示します。

図2 ブロードキャストアドレスにパケットを送信

ここではパケットはコーディネーターから送信され、他のモジュールで受信されています。送信した「Hello」というデータは、アスキーコードという16進数のデータに変換されています。アスキーコードで「Hello」は「48 65 6C 6C 6F」です。

ブロードキャストアドレスでの一斉送信は、ネットワーク上のすべてのモジュールに電源制御やスリープへの移行といったコマンドを送信したり、メディアにデータを保存するコマンドを送信したりする際に便利に使えます。

次に、新しく送信要求メッセージを作成し、1つのモジュールだけにデータを送ってみます。図3のように、64ビットアドレスの欄に送信したい相手の64ビットアドレスを入力します。宛先にはルーターのアドレスを、送信データには乱数を入力してみました。

図3 宛先を指定して送信する

パケットを送信すると、ルーターのターミナルには表示されますが、他のモジュールには表示されません。送信したパケットが「ルーター宛て」だったため、他のモジュールはこのパケットを無視しました。図4には、送信モジュールと受信モジュールのターミナルを並べてみました。

図4 フレームの送受信の様子

フレームログの左側にある矢印は、右向きの青い矢印がそのモジュールが送信したパケット、左向きの赤い矢印が受信したパケットを意味しています。

これで、ネットワーク上のモジュールからモジュールへ直接パケットを送信する方法と、ブロードキャストアドレスを使ってすべてのモジュールにパケットを送信する方法を紹介しました。あとは同じようにモジュールを増やしたり、パケットを生成したりすれば、メッシュネットワークとして応用可能でしょう。

このチュートリアルではセンサの機能を持つモジュールがありませんでしたが、エンドデバイスをセンサ機能のあるモジュール、PCのキーボードを、データを送信するセンサととらえれば、センサネットワークがどのように動作するかを知ることができるでしょう。

使用したパーツのリスト

このセクションで紹介したチュートリアルを実行するために必要な電子部品を表8にリストアップします。XBeeモジュール3個、USBアダプタ3個、必要に応じてUSBケーブルを用意してください。

項目製品例価格必要数
XBee-ZBシリーズ2/2.5/3https://www.switch-science.com/catalog/5311/
(https://www.sparkfun.com/products/15126)
¥2,546-3
XBee Explorer ドングルhttps://www.switch-science.com/catalog/1790/
(https://www.sparkfun.com/products/11697)
¥3,243-1 *
XBee Explorer USBhttps://www.switch-science.com/catalog/1791/
(https://www.sparkfun.com/products/11812)
¥3,243-1 *
miniUSBケーブルhttps://www.switch-science.com/catalog/1034/
(https://www.sparkfun.com/products/11301)
¥165-3 **
表1 必要な電子パーツ

* これら3種類の組み合わせは何でも構いませんが、合計3つ必要です。

** USBアダプタ1つにつき1本必要です。XBee Explorerドングルには不要です。

イライラ解消?ちょっと変わったUSBケーブル
身の回りの電子機器や今回使用したUSBアダプタ、マイコンボードなどを見渡すと、さまざまな形状のUSBコネクタが使われています。
それは時に、「miniUSBを使いたいのにケーブルがない」といった事態を引き起こします。

そんなイライラを解消するUSBケーブルがあります。
https://www.sparkfun.com/products/12016
片方の先端はUSB Type A(PCについているUSBコネクタに刺さる形状)になっています。反対の先端にはよく使用される標準B、Mini B、Micro Bの3種類のコネクタが並列につながれており、どれでも使えるという代物。

あるいは、こんなケーブルもあります。
https://www.sparkfun.com/products/11579
片方の先端がUSB Type A、反対の先端はACアダプタのコネクタ、JSTタイプのコネクタ、ワニ口クリップが付いていて、USBから電源を取りたいときに便利に使えそうです。

うまく動かないときは

XBeeモジュールは多くの機能や設定値があり、設定したのにうまく動かないということがよく発生します。ここでは、よくあるトラブルと解決のヒントをいくつか紹介します。

チェックリスト

〇ケーブル類の配線:
すべてのモジュールに電源が供給されていますか?USBはきちんと接続されていますか?ケーブルを抜き差ししてみると治った、ということも割とよくあります。最近のスマホの付属品などで、「充電専用」で通信ができないUSBケーブルが多く出回っています。当然、USB「接続」には充電専用ケーブルは使えません。PCのOSによってはシリアルポートのCOM番号が何かの拍子に変わってしまうということも起こりますので、確認してみてください。

〇モジュールの向き・位置:
モジュールを変換アダプタに取り付ける際の方向や位置は間違っていませんか?

〇シリアル通信の設定:
XCTU以外のアプリケーションを使用している場合はボーレートなどを確認してください。

〇宛先アドレス:
ATモードを使用してポイント・トゥ・ポイントネットワークを構築している場合、宛先アドレスが「データを送信したい相手」のアドレスになっているか確認してください。

〇ファームウェアのバージョン:
ネットワーク内のすべてのモジュールで同じバージョンを使用するのがベストです。一部のバージョンはほかのバージョンと互換性がない場合があります。

〇ファームウェアの破損:
XBeeモジュールに書き込まれたファームウェアが破損すると、ターミナルアプリケーションで読み取れなくなったり、XCTUに反応しなくなったりします。このような場合にはファームウェアの修復を行います。詳しい方法はhttps://www.instructables.com/Restoring-your-broken-XBee/を参照してください。

〇ATモードで設定が書き込めない:
ATWRコマンドを使用しても設定値が書き換えできない(読み出しをすると変更前の数値が返ってくる)場合は、リセットコマンド「ATRE」を使用して、すべての設定値を工場出荷時の状態に戻します。

よくあるトラブル

より具体的なシチュエーション別に、解決のヒントを示しましょう。

〇ATコマンドが動作しない:
シリーズ2/2.5のモジュールで「+++」コマンドでモジュールが起動しない場合、ATファームウェアがロードされているか確認します。

〇ATモードでエラーが出る:
各モジュールで同じバージョンのファームウェアが書き込まれているか確認します。「ATVR」コマンドで確認できます。

〇設定値が書き換わらない:
設定値を変更した後、書き込み操作をしなければ設定値は消えてしまいます。

〇ATコマンドターミナルで、BackSpaceが使えない:
一度Enterキーを押してコマンドを送信し、もう一度やり直してください。設定値を入力したら確認コマンドで確認するようにしましょう。

〇APIファームウェアが動作しない:
各モジュールで同じバージョンのファームウェアが書き込まれているか確認します。また、各モジュールに電源を入れる順番が重要です。まずコーディネーター、ルーター、エンドデバイスの順に電源を入れます。ネットワークの構築には10分程度時間がかかる場合もあります。

Robert Faludi氏のwebページ(https://www.faludi.com/projects/common-xbee-mistakes/)には、XBeeモジュールのよくある間違いについてまとめられています。特にXBeeに不慣れな時に犯しがちなミスや設定方法、解決方法について数多くまとめられています。

また、Digiインターナショナル社のwebサイトやナレッジベース(https://www.digi.com/support/knowledge-base)にもたくさんの情報があります。過去に同じように悩まされた人がいることや、ナレッジベースやフォーラムを検索したら答えが載っていた、なんてこともよくあることです。

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

2025年7月
月 火 水 木 金 土 日
 123456
78910111213
14151617181920
21222324252627
28293031  
« 10月    

Copyright © 2025 · STEMSHIP.COM