シリアル通信で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の設定と通信の実際は次回掲載します。