Arduino用 BMP180 温度・気圧センサー
BMP180センサーは温度と気圧を測定する多用途のデバイスで、天気の監視や高度測定などさまざまな用途に最適です。このチュートリアルでは、BMP180センサーをArduinoに接続し、温度と気圧のデータを読み取り、結果を表示します。プロジェクトを終える頃には、摂氏と華氏での正確な温度値およびミリバール(mbar)と水銀柱インチ(inHg)での気圧値を取得できるようになります。

概念とコーディング手順を明確にするため、詳細な説明は関連動画(00:00の箇所)をご覧になることをおすすめします。
ハードウェア解説
BMP180はI2Cで通信するデジタルセンサーで、Arduinoなどのマイクロコントローラと簡単に接続できます。ピンは4つあります:Vn(電源),GND(地面),SDA(データ行)、およびSCL(クロックライン)。センサーは1.8〜3.6ボルトの電圧範囲で動作しますが、電圧レギュレータを使用して5Vの安定化電源で給電することもできます。
このセンサーは大気圧を測定できるため、高度推定や気象監視を必要とする用途に適しています。BMP180は内蔵の温度センサーも備えており、これは正確な気圧測定を行うために不可欠です。まず温度を測定することで、気圧測定に影響を及ぼす温度変動を補償できます。
データシートの詳細
| 製造元 | ボッシュ |
|---|---|
| 部品番号 | BMP180 |
| ロジック/入出力電圧 | 1.8~3.6V |
| 電源電圧 | 1.8〜5.0 V |
| 出力電流(典型値) | 5マイクロアンペア |
| ピーク電流(最大) | 1 mA |
| PWM周波数に関するガイダンス | 該当なし |
| 入力論理閾値 | 該当なし |
| 電圧降下 / RDS(オン)/ 彩度 | 該当なし |
| 熱限界 | -40〜85°C |
| パッケージ | 3.6×3.8mm |
| 備考/バリエーション | 低消費電力 |
- センサーを損傷しないように、適切な電圧レベルを確保してください。
- 必要に応じてI2Cラインにプルアップ抵抗を取り付けてください。
- 正確な測定のために、センサーを安定した温度環境に保ってください。
- 正確な結果を得るために、現在地に合わせて高度を較正してください。
- 電源供給を監視して、指定された許容範囲内にあることを確認してください。
配線手順

BMP180センサーをArduinoに配線するには、まず次のものを接続することから始めますVnBMP180のピンをArduinoの5Vピンに接続します。次に、接続しますGNDピンをArduinoのグラウンドに接続してください。I2C通信のために、接続してください。SDAピンをArduinoのアナログピンA4に接続し、SCLピンをA5に接続してください。接続がしっかりしていることを確認し、通信トラブルを防いでください。
別のArduinoモデルを使用している場合、I2Cピンはモデルによって異なることがあるため注意してください。例えば、Mega2560では、SDAそしてSCLピンはそれぞれ20番と21番です。特定のボードで正しく動作するよう、ピンの割り当てを必ず再確認してください。
コード例とウォークスルー
#include
#include
SFE_BMP180 pressure;
#define ALTITUDE 90.0 // Altitude of Robojax Headquarter
コードでは、まず必要なライブラリをインクルードします:SFE_BMP180.hセンサー用およびWire.hI2C 通信のために、名前を指定した BMP180 オブジェクトのインスタンスを作成しますpressureそして、我々の読み取りが行われる高度を定義するALTITUDE一定の
void setup() {
Serial.begin(9600);
if (pressure.begin()) Serial.println("BMP180 init success");
else { Serial.println("BMP180 init fail\n\n"); while(1); }
}
そのsetupこの関数はシリアル通信を9600ボーで初期化し、BMP180センサーの起動を試みます。初期化に失敗すると、プログラムはそれ以上実行を進めないように無限ループに入り、接続に問題があることを示します。
void loop() {
char status;
double T, P, p0, a;
status = pressure.startTemperature();
if (status != 0) {
delay(status);
status = pressure.getTemperature(T);
if (status != 0) {
Serial.print("temperature: "); Serial.print(T,2);
}
}
}
その中でloopこの関数では、まず呼び出すことで温度の読み取りを開始します。startTemperature()成功した場合、測定が完了するのを待って温度を取得しますgetTemperature(T)、そこでT温度の値を格納します。その後、温度がシリアルモニタに表示されます。
デモンストレーション/当日の流れ
電源が供給され、配線が正しく行われている場合、BMP180は5秒ごとに温度と気圧のデータを継続的に読み取り表示します。温度は摂氏(Celsius)と華氏(Fahrenheit)の両方、また絶対圧と相対圧の値が表示されるはずです。センサが正常に動作していれば、エラーなしで読み取りが得られます。電圧レベルの誤りや接続の緩みなど、データ取得に失敗する原因となる潜在的な落とし穴に注意してください。
リソースと参考文献
-
外部SparkFun BMP180ライブラリgithub.com
-
外部メーカーからの製品詳細bosch-sensortec.com
ファイル📁
Arduinoライブラリ(zip)
-
BMP180 Arduino ライブラリ
robojax-BMP180-Library.zip0.02 MB
データシート(pdf)
-
ボッシュ BMP180 データシート
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP180-DS000.pdf0.64 MB