電子工作

【Arduino】BMP180で気圧を測定する

はじめに

今回は、Arduinoと、「BMP180」と呼ばれるセンサーモジュールを使って、簡単なロギングを行います。

BMP180のモジュールは、Amazonで300円ぐらいで購入可能です。

センサーモジュールの特徴

このモジュール単体で、「気温」「気圧」の情報を計測することができます。

300~1100hPaの気圧を計測することが可能で、インターフェイスにはI2Cを利用しています。

ピンは、左から順に「SDA」「SCL」「GND」「VIN」になっています。

配線図

実体配線図

配線はこのように行います。

ArduinoNano及び、UNOの場合。「SCL」,「SDA」に割り当てられているピンは各自で確認してください。)

今回使用するモジュールには、「3V0」というピンはありません。

また、あったとしても何も接続しなくてOKです。

センサー側ピンArduino側ピン役割
VIN5V電源
3V3接続しません。
GNDGND電源
SCLA5I2C通信線
SDAA4I2C通信線

なぜ、A4,A5ピン指定なのか?

今回、「マイコン(Arduino)」と「センサー」の通信には、I2C」と呼ばれる通信方式を利用します。

このI2Cを利用できるピンが、ArduinoNanoの場合は「A4、A5」ピンに割り当てられているのです。

ArduinoNanoのピンアサイン

上の画像から、I2Cの通信に必要な「SCL」と「SDA」がそれぞれ「A5」「A4」ピンに割り当てられていると分かります。

ライブラリのインストール

ArduinoIDEを開き、ツール>ライブラリを管理 を選択します。

ライブラリマネージャが起動したら、検索欄に「BMP085」と入力をして、検索を行います。

「Adafruit BMP085 Library」と書かれているものをインストールします。

これでライブラリのインストールは完了です。

ライブラリの基本的な使い方

関数機能
bmp.readTemperature()センサが計測した気温(℃)
bmp.readPressure()センサが計測した気圧(Pa)
bmp.readAltitude()気温と気圧から算出された標高
bmp.readSealevelPressure()算出された海面気圧(Pa)

コード

使用したソースコードは以下の通りです。

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

void setup() {
  bmp.begin();
  Serial.begin(9600);
}

void loop() {
  Serial.print("温度=");
  Serial.print(bmp.readTemperature()); //気温の表示
  Serial.println(" *C");

  Serial.print("気圧=");
  Serial.print(double(bmp.readPressure()) / 100); //気圧(hpa)の表示
  Serial.println("hPa");
  
  Serial.println();
  delay(2000);
}

17行目の「Serial.print(double(bmp.readPressure()) / 100);」では、

センサーが取得した気圧情報(整数)をdouble型(小数型)にキャストし、100で割ることでパスカルをヘクトパスカルに変換する計算をしています。

実行結果

シリアルモニタを開くと2秒毎に気温と気圧の情報が表示されます。

楽しみ方

気圧の変化をグラフにしてみる!

ArduinoIDEに搭載されている、「シリアルプロッタ」という機能を使うことで、手軽に気圧の変化をグラフにできます。

シリアルプロッタは、ツール>シリアルプロッタから開くことができます。

使用するコード

#include <Wire.h>
#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

void setup() {
  bmp.begin();
  Serial.begin(9600);
}

void loop() {
  Serial.println(double(bmp.readPressure()) / 100);
  delay(2000);
}

気圧の数値のみをシリアルに流すだけのプログラムです。

台風の日に使ってみる!

台風の日(雨の日)に、この回路をONにしてシリアルプロッタを開きます。

すると、台風が最接近した時の気圧の変化を見ることができます。

ログの収集方法を工夫することで、詳しい時間や、値をExcelで管理することもできます。

追記:続編の記事を書きました!

続編では、気圧センサで取得した値をSDカードに記録し、エクセルでグラフを作成する方法を解説します!

是非合わせて読んでください!