• 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モジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 by STEMSHIP 1 コメント

XCTUアプリケーションを使用してセンサノードをテストし、データを観察します。センサネットワークを構築する前に、センサの読み取りだけをテストする、という手順で進めます。このように、センサネットワークにつなぐ前にセンサノードごとに動作テストを行う方法をお勧めします。いきなりたくさんのノードが同じネットワーク上で動作する状態を作ってしまうと、動作確認や不具合の修正に膨大な時間と労力がかかってしまいます。

このセクションでは、片方のXBeeモジュールで読み取った温度センサの値を、ネットワーク上のもう一方のXBeeモジュールに渡す、ということを試みます。

センサノードの設定

センサノードとして使用するXBeeモジュールは、APIファームウェアを書き込み、ルーターかエンドデバイスに設定します。

XBeeモジュールをUSBアダプタでPCに接続し、XCTUアプリケーションからモジュールを追加します。必要があれば、ファームウェアの書き込みを行ってください。

モジュールが見つかったら設定タブを開き、いくつかの設定を変更し、XBeeモジュールがセンサを読めるようにしていきます。

具体的には、①DIO3の電圧をADCで読み取り、②XBeeモジュールの電源電圧を含めて、③15秒(15,000ミリ秒)ごとにデータ送信するように設定します。

表1のように設定します。検索ボックスに設定値コードを入力して検索すると、設定値を素早く見つけられます。設定値はすべて16進数で入力します。

設定値を変更したら、「Write」ボタンをクリックしてXBeeモジュールに設定値を保存するのを忘れないようにしてください。

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

コーディネーターの設定

センサノードの設定が終わったXBeeモジュールを取り外してブレッドボード上のXBee Explorerにセットします。

もう一つのXBeeモジュールをUSBアダプタにセットし、コーディネーターとして動作するように設定した後、表4-2のように設定します。

設定値コード設定地の名前説明設定値
IDPAN IDネットワークのID8088
NIノード識別子ノードの名前Coordinator
表4-2 コーディネーターの設定値

これでセンサノードのテストの準備が整いました。

センサノードのテスト

まず、コーディネーターとして設定したXBeeモジュールをUSBアダプタに取り付け、PCのUSBコネクタに差し込んで電源を入れます。コーディネーター側のXBeeモジュールを先に電源を入れることがポイントです。XCTUアプリケーションを起動してXBeeモジュールを検出し、ターミナルを開いておきます。

続いて、センサノードに電源を入れます。センサノード側のXBeeモジュールがコーディネーター側のモジュールと接続してネットワークに参加するまでには時間がかかることもあります。

コーディネーターがデータを受信すると、図1のようにターミナル上にコーディネーターが受信した「IOデータサンプルRXインジケータ」データが表示されます。

図1 コーディネーターが受信したデータが表示された

しばらく待ってもデータが受信できない場合は、センサノードの電源をいったん切り、再度入れなおします。この時コーディネーターは電源を入れたままにしておきます。それでもデータが受信できない場合は、コーディネーター・センサノードそれぞれの設定をもう一度見直してみてください。

下記のデータのように、受信データの最初が「7E」で始まっているでしょうか。この「7E」がデータパケットの先頭を表す区切り文字で、続いて16進数の値の羅列としてデータが送られてきています。

データの例:

7E 00 14 92 00 13 A2 00 41 CB C2 FA 17 D2 01 01 00 00 88 02 68 0A BC 23

ZigBeeパケットではデータのフォーマットやレイアウトが決まっています。表2に、「IOデータサンプルRXインジケータ」パケットのレイアウトを示します。

値(例) フィールド名説明
7E   スタートデリミタパケットの先頭
0014  パケットの長さ 
92   フレームタイプIOデータサンプルRXインジケータ
0013A20064ビットアドレスセンサノードのアドレス
41CBC2FA
17D2  16ビットアドレス 
01   受信オプション 
01   サンプル数1データサンプル
0000  デジタルマスクデジタル入力設定されているピン
88   アナログマスクアナログ入力設定されているピン
0268  データセンサ読み取り値
0ABC  電源電圧 
23   チェックサム 
表2 IOデータサンプルRXインジケータパケット

今回は、15秒ごとにAD3/DIO3ピンの電圧をAD変換したデータと、電源電圧を送信するよう、センサノード側のXBeeモジュールを設定しました。

アナログマスク部分は「88」と送られてきていますが、2進数で表すと「1000 1000」となります。1桁目の1は電源電圧を送信していること、5桁目の1がAD3/DIO3ピンのデータを送信していることを表しています。もしもAD2/DIO2ピンを使用していれば6桁目、AD1/DIO1ピンを使用していれば7桁目、AD0/DIO0ピンを使用していれば7桁目がそれぞれ1に変化します。

センサの読み取り値として、「02 68」というデータが送られてきています。16進数なので、まず10進数に変換して、「616」になります。ここから実際の温度を求めてみましょう。

XBeeモジュールのAD変換では0Vを「0」、1.25Vを「1023」として表現しています。なので、

$$ Vout = \frac{Data × 1250}{1023} …①$$

という変換式でまずは電圧に変換します。

$$ Vout = \frac{Data × 1250}{1023} = \frac{616 × 1250}{1023} = 753 [mV] = 0.753 [V]$$

センサからは0.753Vの電圧が出力されていることが分かりました。

次に、使用した温度センサTMP36のデータシートを基に、出力電圧を温度に換算します。TMP36の出力電圧は、

$$ T = 100 × Vout – 50 …② $$

という式で求められます。

$$ T = 100 × Vout – 50 = 100 × 0.753 – 50 = 25.3 [℃] $$

となり、温度は2.5℃ということが分かります。

同様に、電源電圧も①の式で計算してみます。受信したデータは16進数で「0A BC」なので、10進数では「2748」です。

$$ Vout = \frac{Data × 1250}{1023} = \frac{2748 × 1250}{1023} = 3358 [mV] = 3.36 [V]$$

3.36Vの電圧が供給されていることが分かりました。センサノードをバッテリーや電池で運用している場合、この数値を見ればバッテリーの交換や充電の時期を判断できるでしょう。

センサノードからのデータが受信できているとわかったら、ある程度動作させて温度の変化を観察してみてください。あるいは、手でセンサを温めてみたり、息を吹きかけてみたりすると温度変化が観察できるはずです。

温度の変化がデータの変化として受信できれば、正常に動作しているとみていいでしょう。

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