アルディーノ(Arduino)とSparkFunのウェザーシールドを使って気温・湿度・気圧を測定してみます。
まずは、アルディーとセンサーボード
気象センサー搭載ボード
SparkFunのウェザーシールドは、温度・湿度・気圧センサーが搭載されています、オプションでGPSや雨量・風力・風向センサーを取り付けることができるセンサーボードです。
はじめに、オプション無しの状態で温度・湿度・気圧データの測定を行います。
Arduino UNOとUNO互換ボード
計測するためには、マイコンボードが必要となります。
今回はマイコンボードはアルディーノ(Arduino)を使います。
低価格なマイコンボードですので導入しやすいと思います。
まずは、Arduino UNO純正品です。
純正品ですから安心感はあります、ただし価格が3000円台と夏休みの自由研究で利用するにはちょっと高いと思います。
出典:アマゾン−Arduino UNO/価格3240円(2016年7月)
そこで、もっと低価格な「UNO互換ボード」を使います。
互換ボードならかなり安くてにはいります、気象観測に使うので安い方が良いと思います。
アマゾン:waves Arduino UNO互換/価格850円(2016年7月)
アルディーノの開発環境
アルディーノのIDE(開発環境)は無料ダウンロードで利用できます。
Windows・Mac・LinuxのそれぞれのIDEをダウンロード出来ますので自分のPC環境に応じてダウンロードします。
Windowsの場合は、ダウンロード後にインストールしましょう。
MacOSの場合は、解凍後に起動出来ます。
開発環境を(インストール)して起動すると、ウィンドウが開きますのでその中にプログラムを記述します。
はじめの一歩
LEDをチカチカさせるプログラム
通称「Lチカ」
ファイルメニューの下に「スケッチの例」をたどるとLEDをチカチカさせるプログラムのサンプルが用意されています。
スケッチの例
01.Basics
Blink
oid setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
13番ポートの信号をオン・オフさせてLEDを点滅させるプログラムになっています。
点滅の待ち時間は500ミリ秒です。(コメントの英文は秒と書いてます)
このプログラムを動作させると、LEDがチカチカします。
点灯時間500ミリ秒、
消灯時間500ミリ秒
ですから1秒に1回点灯するようになっていることがわかります。
アルディーノのボード上には、13番ポートにLEDが接続されている事が多いので、LEDを取り付けなくてもボード上のLEDが点滅するのでわかると思います。(LEDがついてない時はLEDと抵抗を付けてね!)
気象センサーボードも同じように使います!
センサーボードでもLチカと同様にサンプルコードが公開されていますので、少しづつ改良して利用します。
ウェザーシールドのボードのサンプルコードはGithubと呼ぶところで公開されています。
Weather Shield online!
Humidity = 54.54%, temp_h = 31.84C, Pressure 100721Pa, ...
このプログラムを使ってウェザーシールドで測定すると、1秒毎に温度(℃)、湿度(%)、気圧(パスカル)、温度(F)、光度(電圧)、Vin電圧(V)を表示してくれます。
気圧の表示が少し気になりませんか?
100721Pa
気圧(Pressure)の表示はニュースの天気予報で見るhPa(ヘクトパスカル)へ変更して表示させます。
気圧を表示させる部分(93行〜97行)
//Check Pressure Sensor
float pressure = myPressure.readPressure();
Serial.print(" Pressure = ");
Serial.print(pressure);
Serial.print("Pa,");
気圧データをhPaとするように100で割って単位をhPaに変更します。
float pressure = myPressure.readPressure() /100;
...
Serial.print("hPa,");
小さな変更ですけどね。
Weather Shield online!
Humidity = 53.17%, temp_h = 32.33C, Pressure 1007.28hPa, ...
こんな感じで必要に応じて少しづつ手直ししてゆきましょう。
次回は測定データとまとめ方を
次回から、研究レポートを作成することを考えて、どのような形式で気温・湿度・圧力のデータを記録するかを考えてみましょう。
0 件のコメント:
コメントを投稿