下手の横好きのスクラップブック!!

下手の横好きの、いろいろな記録です。
電子工作・PIC・Arduino・太陽光発電・写真などetc

温度・湿度のデータをXBeeを使って無線でPCに取り込む

2011-01-17 | Arduino

シリアル通信でPCにデータを取り込んでいたものをXBeeで無線に置き換えます。

XBeeについて
XBeeはZigBee規格の無線機能とマイコンを搭載したモジュールで、これを使えば比較的簡単にワイヤレスネットワークを組むことが出来ます。

  

2.4GHz帯 1mwの出力で最大伝送距離は屋外で100m・屋内で30m程度
電源が2.8~3.4vで 基板の足のピッチが2mmなのが注意が必要

XBeeには、透過モードとAPIモードがあり、それぞれ通信方法やコントロール方法がことなるようですが、今回はエンドデバイスとコーディネータの1対1の通信ですので、透過モードを使用します。

ネットワーク構成


Coordinator( ネットワーク内に1台でネットワークの制御を行う端末)
今回はXBeeをPCに接続するための Coordinator USB接続ユニットにXBee ZBをセットして使用します。これにより基板のピッチの変換や電圧の変換もできます。
このユニットはXBeeモジュールをUSB経由でPCに接続するユニットで、ネットワーク稼働中はCoordinatorになります。また、XBeeを設定する際にも使用できます。

    

接続ユニット(表)    接続ユニット(裏)    XBeeをセット


End Device ( データ中継機能がない端末)
End Deviceでは、温度と湿度の測定を行い、その測定値をXBee ZBを経由しCoordinatorへ送ります。
Arduinoユニットに前回作製したLCDシールドをセットして回路を組み立てました。
ArduinoとXBeeの接続は電圧レベルを合わせるために簡易な方法の抵抗分圧で接続しております。

エンドデバイスの製作    

                                                    

 

     

シリアル通信を含んだスケッチ

//温度と湿度の測定
//XBeeにより無線でデータ送受信

#include

//センサーに接続したアナログピンの番号
float sensor1Pin = 0;
float sensor2Pin = 1;


//変数の定義
float v = 5;
float temp = 0;
float hum = 0;
float value1 = 0;
float value2 = 0;
long n = 0;
 
//LCDノセット
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  Serial.begin(9600);
  //LCDの桁数と行数をセットする
  lcd.begin(16, 2);
}

void loop() {
  //LCDの表示をクリアする
  lcd.clear();
 
  //センサーピンの温度センサーの値を読み取る
  value1 = analogRead(sensor1Pin);
  delay(2);

   //読み取った値を温度に換算
  temp = (((v / 1024) * value1) * 100)-60 ;
 
  //センサー2ピンの湿度センサーの読み取る
  value2 = analogRead(sensor2Pin);
  delay(2);
   
  //読み取った値を湿度に換算
  hum = ((v / 1024) * value2) *100;
   
  //LCDに温度を表示する
  lcd.print("temp: ");
  lcd.print(temp);
  lcd.setCursor(11, 0);
  lcd.write(0xDF);
  lcd.print("c ");
 
 //LCDに湿度を表示する 
  lcd.setCursor(0, 1);
  lcd.print("hum : " ); 
  lcd.print(hum);
  lcd.setCursor(11, 1);
  lcd.print("% ");
 
  //XBeeによりデータをシリアル送信する
  n = n + 1;
  Serial.print(n);
  Serial.print (",");
  Serial.print (temp);
  Serial.print (",");
  Serial.println(hum);
 
  //次のループまで1秒待つ
  delay(1000);
}

 

XBeeの設定と通信の実際は次回掲載します。

 

コメント (4)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« LCDシールドの製作 | トップ | ねぶたの家 ワ・ラッセ »
最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
arduino(tx)とxbeeの接続について (ono)
2015-07-18 12:31:29
初めまして。
タイトルの件ですが、aruduinoの電圧が5V,Xbeeの電圧が3.3Vなので10kΩの抵抗はarduino側に付けないとXbee側の電圧は3Vにならないと思いますが?
返信する
XBeeとArduinoの接続 (下手の横好き)
2015-07-20 14:30:13
ご覧いただきありがとうございます。
XBeeの電源は、Arduinoの3.3vから直接直接供給されております。
XBeeのDIN、DOUTとArduinoのTX、RXの接続は直接接続されているケースが多いのですが、念のため「XBeeをつなぐ(エンドデバイス)」を参考に、抵抗を介して接続したものです。
詳しくは、「XBeeをつなぐ(エンドデバイス)」を参考にしていただければとおもいます。
返信する
arduino(tx)とxbeeの接続 (ono)
2015-07-22 15:34:01
「XBeeをつなぐ(エンドデバイス)」での接続が間違っていると思います。5Vx15k/(10+15)k=3Vとして、Xbeeに3Vを入力するつもりが、現状の接続ではarduinoの出力5Vが10kを間に入れてXBeeの入力に加わる状態になっています。GNDに接続されている15kの抵抗は合ってもなくても動作に影響がない状態だと思います。(たびたび、すみません、気になったもので)
返信する
XBeeとArduinoの接続 (下手の横好き)
2015-07-23 10:52:41
Arduinoには3.3vの電源が用意されておりますので、それをXbee1番ピンに接続しています。
ご指摘の部分は、データをシリアルプリントで出力する部分ですので直接接続しても問題ないのですが、念のため抵抗分割を入れたものです。
返信する

コメントを投稿

Arduino」カテゴリの最新記事