• 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

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

現在の場所:ホーム / Arduino / Arduino応用編 / ArduinoでSTEM教育​ 応用編:XBee(ZigBee)で無線通信

ArduinoでSTEM教育​ 応用編:XBee(ZigBee)で無線通信

2020年1月11日 by STEMSHIP コメントを書く

長距離通信を行う場合、Bluetoothは電波が届かないので、WiFiやZigBeeを使用します。XBeeモジュールを使用すると、手軽に環境を構築できます。Arduino2台を1対1でZigBee通信する方法について紹介します。

XBeeとZigBeeについて

 XBeeは米Digi社の商標で、各種無線通信規格に対応したモジュールが販売されています。よく使用される通信規格は、WiFiとZigBeeです。ZigBeeは聞いたことがないかもしれませんが、電気的な基礎仕様はIEEE802.15.4で規格化されており、それより上位の層はZigBeeアライアンスが使用策定を行っています。
 WiFiはアクセスポイントを経由して、インターネットに接続することを主な目的としていることに対して、ZigBeeやBluetoothは機器間を接続して情報を相互通信することを目的としています。そのため、 ZigBeeやBluetoothは 通信速度でWiFiに劣るものの、低消費電力という点で優れています。ZigBeeはBluetoothと同じ2.4GHz帯を使用しており、通信速度はBluetoothに劣りますが、通信距離はBluetoothが10m程度なのに対して、ZigBeeは1km程度まで届きます。

XBeeの種類

今回使用するのは「XBee S2C/ワイヤアンテナ型」ですが、XBee S2Cはアンテナの種類が3つあります。

  • PCBアンテナ型
  • ワイヤアンテナ型
  • U.FLアンテナ型

ワイヤアンテナ型は、基板にアンテナが埋め込まれているため、アンテナに指向性があります。ワイヤアンテナ型は、基板から短いアンテナが伸びており、指向性が無く、遠くまで電波を飛ばすことができます。U.FLアンテナ型は、別売りの太くて大きなアンテナ「 XBee用外部アンテナU.FLコネクタ型 」を取り付けて使用します。

ここで注意が必要なのが技適です。XBee S2Cは技適認証取得済みなので、日本国内で使用可能です。ただし、U.FLアンテナ型は先述のアンテナとセットで認証を得ているため、セットで使用する必要があります。もし、自作のアンテナを取り付けたり、他製品のアンテナを取り付けて使用すると、違法になる恐れがありますのでご注意ください。

使用する部品

Arduinoを2台使用して、1対1でZigBee通信します。今回は、1台目のプッシュスイッチを押すと、2台目のLEDが点灯するものを作成します。

  • Arduino UNO R3 … 2個
  • ブレッドボード … 2個
  • XBee S2C/ワイヤアンテナ型  … 2個
  • XBeeシールド(Seeed Studio社製) …2個
  • XBeeエクスプローラUSB … 1個
  • プッシュスイッチ … 1個
  • LED … 1個
  • 抵抗(220Ω) … 1個

回路構成

LEDとプッシュスイッチの使用方法については、「ArduinoでSTEM教育​ 基礎編:プッシュスイッチ」に記載していますので、ここでの説明は割愛させていただきます。

XBeeの設定

1. XCTUのインストール

XBee製品の設定を変更するために、XCTUをインストールします。このソフトは、米Digi社で公開されています。ダウンロードリンクがわかりにくいのですが、下記リンク先の「Diagnostics…」をクリックで展開して、DOWNLOAD XCTUから対象OSのソフトをインストールしてください。

XCTUのリンク先:https://www.digi.com/support/productdetail?pid=3352

2.XBeeの設定

①XCTUを起動すると下記の画面が出ます。 まずは、XBeeエクスプローラUSB にXBeeを挿して、パソコンのUSBポートに接続して下さい。そして、左上のプラスマークのアイコン「Add devices」をクリックして下さい。

②パソコンに接続されたXBeeデバイスを検索するため、接続したポートを選択して、「Finish」をクリックします。すると、検索が始まりますので数秒待って下さい。 デバイスが見つかると、ウィンドウ左側に表示されます。これをクリックすると、デバイスの詳細情報を表示することができます。

③ここで下記の設定を書き換える必要があります。

  • ID PAN ID
  • DH Destination Address High
  • DL Destination Address Low
  • CE Coordinator Enable

「ID PAN ID」は、2台のXBeeで共通の値を使用します。ここでは初期設定の3332をそのまま使います。
「DH Destination Address High」は、接続相手のXBeeの「SH Serial Number High」の値を入力します。同様に、「DL Destination Address Low」も接続相手の「SL Serial Number Low」を入力します。
「CE Coordinator Enable」は、コーディネータの許可設定です。 コーディネータとは、ネットワーク内に必ず1台だけ存在し、ネットワークの立ち上げ機能を持っています。今回の場合は、どちらのXBeeをコーディネータ「Coordinator[1]」に設定しても構いません。もう1台はエンドポイント「Disable[0]」に設定して下さい。

以上を入力したら、最後に鉛筆マークの「Write」をクリックしてXBeeに書き込みます。完了すると、ウィンドウ左側のアイコンに「C」や「E」が表示されていると思います。これは、CoordinatorとEndpointを意味します。

XBeeシールドの設定

XBeeの設定が完了したら、シールドに差し込んでArduinoと接続します。ここで、注意が必要なのがジャンパーの位置です。今回の部品の組み合わせの場合は、下記の写真で示すとおり、「0」はXB_TXとDIGITALをジャンパーで接続、「1」はXB_RXとDIGITALをジャンパーで接続します。

プログラム

 プログラムは以下の通りですが、Arduinoに書き込むときに注意が必要です。書き込む前に、XBeeシールドのジャンパーを取り外してください。もしくは、XBeeをArduinoから取り外してください。ジャンパを外さないまま書き込もうとすると、書き込みエラーが発生します。
 書き込みが完了したら、ジャンパーをもとに戻します。コーディネータ側のArduinoの電源を入れ、続けてエンドポイント側のArduinoの電源を入れると1対1接続が完了します。

①スイッチ側のプログラム

スイッチは、2番ピンでプルアップ入力に設定します。スイッチを押すとLOWが入力され、シリアル通信で’A’を出力します。この記述は、XBeeを使用せずにシリアルモニタに出力する場合と同じです。

//www.stemship.com
//2019.12.28
const int buttonPin = 2;

void setup() {
  pinMode(2, INPUT_PULLUP);
  Serial.begin(9600);

}

void loop() {
  if(digitalRead(buttonPin) == LOW) {
    Serial.print('A');
  }
  delay(100);

}

②LED側のプログラム

LEDは、3番ピンで出力に設定します。スイッチ側からデータが送られてきたかどうかは、Serial.available関数で判断します。Serial.available関数は、シリアルバッファにあるデータのバイト数が戻り値です。したがって、この戻り値が0より大きければ、データが送られてきたことを意味します。そして、なんのデータが送られてきたかは、Serial.read関数で読み込みます。読み込んだ値が’A’の場合は、LEDの3番ピンをHIGH出力にして点灯させます。

//www.stemship.com
//2019.12.28
const int ledPin = 3;
int serialData = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

}

void loop() {
  if(Serial.available() > 0) {
    serialData = Serial.read();
    Serial.println(serialData);
    if(serialData == 'A') {
      digitalWrite(ledPin, HIGH);
      Serial.println("LED-ON");
      delay(1000);
      serialData = 0;
    }
    else {
      digitalWrite(ledPin, LOW);
    }
  }
  else {
    digitalWrite(ledPin, LOW);
    Serial.println("No Serial Data");
  }
  delay(100);

}

まとめ

Arduinoを2台使用して、1対1でXBee(ZigBee通信)で無線通信する方法を紹介しました。通信相手のアドレスをXCTUで書き込み設定しさえすれば、あとはシリアルモニタに出力する要領で、プログラムを書くだけで通信ができました。海外サイトを見ていると、もっと安価なモジュールを使って無線通信をしていますが、 日本では 技適認証取得 が必要なことを覚えておいて下さい。

Filed Under: Arduino応用編 関連タグ: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