• 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 / Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

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

2021年9月27日 by STEMSHIP コメントを書く

前回のArduino温度センサと、以前紹介したXBee無線ネットワーク(XBeeモジュールの選び方、XBeeモジュールの接続と設定)とXBeeモジュールでセンサを読み取る(ハードウェア作製編、センサノードの設定と測定)で学んだXBeeモジュールを組み合わせ、ArduinoとXBeeモジュールを使って、温度センサTMP36とArduinoをワイヤレスで接続して、温度を読み取ります。

XBeeセンサノード

XBeeモジュールでセンサを読み取る:ハードウェア作製編で製作したセンサノードを再利用し、図1のように温度センサTMP36を使ったセンサノードを製作します。

図1 TMP36とXBeeモジュールを使ったセンサノード

以前の記事通りにセンサノードを使用していない場合や、XBeeモジュールをリセットする必要がある場合には、ファームウェアが最新のものか確認し、X-CTUアプリケーションで表1のように設定をしてください。

設定値コード設定地の名前説明設定値
D3DIO3/AD3DIO3ピンの設定ADC [2]
IDPAN IDネットワークのID8088
IRIO Sampling Rateデータ読み込みの時間間隔 (ミリ秒単位で指定)3A98 (=15,000)
NIノード識別子ノードの名前TMP36
V+電源電圧しきい値電源電圧がこの電圧を下回ると、データと一緒に電源電圧を送信する。FFFF (=常時送信する)
表1 センサノードのXBeeモジュール設定

ZigBeeネットワークからデータを取得する方法としては、①ノードから直接データを要求する方法と、②ノードから送信されたデータをポーリングする方法の2種類があります。

今回は②の方法で行い、IOサンプリングレートの設定が必要です。これは、使用するArduinoのライブラリがZigBeeネットワークでリモートノードを検索する機能を持っていないためです。

コーディネーター(センサノード)のプログラミング

コーディネーター側のXBeeモジュールは、ファームウェアを最新のものにアップデートし、表2のように設定を行います。

設定値コード設定地の名前説明設定値
IDPAN IDネットワークのID8088
NIノード識別子ノードの名前coordinator
表2 コーディネーターノードのXBeeモジュール設定

続いて、ArduinoとXBeeモジュールの設定を行います。

Arduino用のXBeeシールドを使う

この例では、センサノード上のXBeeモジュール(ルーター)が読み取った電圧(=センサが読み取った温度)を、別のXBeeモジュール(コーディネーター)に送信し、コーディネーターとの通信をArduinoで行います。この時のArduinoの役割を「データアグリゲータ」や「データコレクタ」と呼ぶこととします。

ここではArduinoがXBeeモジュールからのデータを受け取りますが、逆にXBeeモジュール経由でデータを送信することもできます。

ハードウェアの設定

Arduinoの基板上部に差し込んで簡単に電子部品を接続し、機能を追加できる「シールド」と呼ばれるモジュールがたくさん販売されています。

ここでは標準的な「シールド」をサポートする一般的なArduino(UNOやLeonardoなど)と、「XBeeシールド」を使ってセットアップを行います。

XBeeシールドは、電源電圧の違いやピン間隔の違いを吸収する「変換基板」としての役割も併せ持ち、ArduinoとXBeeモジュールを簡単に組み合わせて使用できるように設計されています。図2にSparkFunのXBeeシールドとArduino UNOを組み合わせた例を示します。

図2 SparkFunのXBeeシールド

これ以降は、このSparkFun製のXBeeシールドを使用した、XBeeモジュールとの通信方法を紹介します。これ以外のシールドを使用する場合には、そのシールド基板のドキュメントやサンプルスケッチを確認し、この製作例のものとよく照らし合わせてください。必要に応じてうまく動作するようにハードウェア・スケッチの修正を行ってください。

このシールドは、D0ピン・D1ピンを使ってArduino内部のシリアル通信回路(UART)と通信を行いますが、この2つのピンはPC(Arduino IDE)がUSBを使ってArduinoと通信する際に使用するピンでもあります。ArduinoにPCとの通信回路とXBeeモジュールの両方ともがつながっていると正常に通信が行えなくなり、最悪の場合には部品が壊れてしまいます。

SparkFunのXBeeシールドには小さな切り替えスイッチがあり、切り替えるとXBeeモジュールの接続先をD2ピン・D3ピンに変更できます。これで、PC(Arduino IDE)との通信はこれまで通り問題なく行えます。

しかし、Arduino UNOは本来D0ピン・D1ピンの2本しかUART通信ピンとして使えません。

そこで、ソフトウェア・シリアル・ライブラリを使用します。このライブラリを使うことで、ソフトウェアでUART通信機能をシミュレートし、UART用ではないIOピンに割り当てて使用できるようになります。

ソフトウェア・シリアル・ライブラリはArduino IDEに標準で含まれています。

XBeeシールドを使用しない場合には、ブレッドボードやブレイクアウトボードを使ってこれまでの例と同様にXBeeモジュールとArduinoを直接接続します。

図3にSparkFunのXBee Explorer Regulatedブレイクアウトボードを使用する場合の配線例を示します。

図3 XBeeモジュールとArduinoの接続

このブレイクアウトボードは電圧変換回路が内蔵されているので、Arduinoから5Vを供給しています。使用するブレイクアウトボードによっては3.3Vを供給しなければならないものもあります。こちらもドキュメントをよく確認してください。

以上、いずれかの方法でArduinoとXBeeモジュールとを接続していきます。

接続できたら、コーディネーターとして設定したXBeeモジュールを差し込みます。

これでハードウェアの準備は完了です。次回は、XBeeセンサノードからデータを読み取るためのスケッチを作成していきましょう。



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年5月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
262728293031  
« 10月    

Copyright © 2025 · STEMSHIP.COM