【Arduino】大気圧センサー(BMP180)で気圧を測ろう

センサー

はじめに

大気圧センサーを使って大気圧を測ります。

アマゾンで購入したBMP180(KKHMF GY-68)というセンサーを使います。

3個で\600と安いです。しかもかなりコンパクト。

測定結果はシリアル通信でPCに表示します。温度も同時にとれるので大気圧と温度表示させます。

ポイント

 ・BMP180用のライブラリを使用

 ・気圧センサーとArduinoとはI2C通信

使用部品

 ・Arduino uno

 ・BMP180

 ・ブレッドボード、配線 4本

BMP180の使い方

  測定圧力範囲:300hPa~1100hPa

  電源電圧:1.8V~3.6V

購入時はセンサーとピンが別になっています。

はんだ付けする必要があります。

VIN:電源+(3.3V)5Vでは使えないので注意

GND:電源-

SCL:I2C信号(クロック信号)

SDA:I2C信号(データ信号)

はんだ付けした状態

接続図

全体図
接続先

I2Cの配線はA4とA5に配線しました。Arduino unoにはSCL,SDAの端子もあります。内部的にA4はSDA、A5はSCLに繋がっています。どちらに配線してもOKです。

プログラム

#include <Adafruit_BMP085.h>  //ライブラリ呼び出し

Adafruit_BMP085 bmp;          //ライブラリ変数名bmpに設定

void setup() {
  Serial.begin(9600);         //PCとの通信開始宣言と通信設定(通信速度9600bpsに設定)
  if (!bmp.begin()) {         //BMP関数開始宣言 (数値が無い場合はエラー表示)
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }
}

void loop() {
  //温度
  Serial.print("温度:");
  Serial.print(bmp.readTemperature());  //温度取得と表示
  Serial.println("℃");
  //大気圧
  Serial.print("大気圧:");
  Serial.print(bmp.readPressure()/100);     //気圧取得と表示
  Serial.println("hPa");
/*  //標高
  Serial.print("標高:");
  Serial.print(bmp.readAltitude());     //標高取得と表示
  Serial.println("M");
  //海面気圧  
  Serial.print("海面気圧(計算値):");
  Serial.print(bmp.readSealevelPressure()/100);//海面気圧取得と表示
  Serial.println("hPa");
  //実際の標高
  Serial.print("実際の標高:");
  Serial.print(bmp.readAltitude(101500)); //温度と気圧から標高を計算値取得と表示
  Serial.println("M");
*/
  Serial.println(); //表示を1行空ける
  delay(2000);      //2秒待つ
}

注意

BMP180を使うにはライブラリをインストールする必要があります。

インストール手順は次の通りです。

1.ライブラリをインクルード>ライブラリを管理
2.検索にadafruit bmpと入力
3.Install allをクリックして完了
4.プログラムに追加するときは、「ライブライをインクルード」から選択

ライブラリ名ははBMP85になっていますが、BMP180と共通です。

サイト:Adafruits-BMP85-Libraryに使い方が載っています。サンプルプログラムから作りました。

if (!bmp.begin()) {         //BMP関数開始宣言 (数値が無い場合はエラー表示)
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }

この記述がないと表示されません。代わりにbmp.begin()だけでも動作しましたが、エラー表示も出るので、こちらのほうがいいと思います。

bmp.readTemperature():温度取得

bmp.readSealevelPressure():気圧取得(データはPa表示です。天気予報でよく聞くhPa表示に変換するため100で割っています。)

標高、海面気圧、計算からの標高も表示されます。今回は温度と気圧表示だけのため、コメントアウトしています.”/*”、”*/”を消すと、表示されます。

結果

表示結果

2秒ごとに測定結果が表示されました!

頻繁に変わるデータではないので、待機時間はもっと長くてもいいかもしれません。

気象庁のデータを調べてみると1007hPaでした。誤差も少なく測定出来ていることが分かりました。

センサーは安い割に精度もよく、なかなか使える部品です。今後何かに使っていきたいと思います。

コメント

タイトルとURLをコピーしました