BMP280とArduino UNOによる正確な温度・気圧・高度測定
必要な部品と用品
| 部品 | 数量 |
|---|---|
| Arduino UNO | 1 |
| Adafruit BMP280 センサーモジュール | 1 |
| Adafruit OLED 128x32 I2C ディスプレイ | 1 |
プロジェクト概要
このチュートリアルでは、BMP280センサーを使用して温度、気圧、高度を測定し、Arduino UNOとOLEDディスプレイで表示する方法を解説します。BMP280のデータシートによると、以下の主要パラメータを測定可能です。
- 温度: -40〜+85℃(精度 ±1℃)
- 気圧: 300〜1100 hPa(精度 ±1 hPa)
- 高度: 気圧から計算(海面気圧を基準)
このプロジェクトでは、メトリック単位(℃、hPa、m)とインペリアル単位(℉、inHg、ft)の両方で測定値を表示します。単位変換はコード内で簡単に変更できます。
配線とトラブルシューティング
I2Cアドレスの確認と修正
モジュールを配線後、まずライブラリのサンプルコード「BMP280test」で動作確認を行います。センサーが検出されない場合は、I2Cスキャナーコードを実行してデバイスアドレスを特定してください(他のI2Cデバイスは外しておく)。
一般的なBMP280モジュールのI2Cアドレスは0x77ですが、使用しているモジュールによっては0x76の場合があります。スキャナーで見つかったアドレスをメモし、ライブラリのC++ファイル(通常は Documents/Arduino/Libraries/Adafruit_BMP280_Library 内)を開き、41行目付近の _i2caddr の値を検出されたアドレスに変更して保存します。
サンプルコード
以下の4つのスケッチが用意されています。用途に合わせて選択してください。
- bmp280_Serial_metric.ino - シリアルモニター表示(メトリック単位)
- bmp280_Serial_Imperial.ino - シリアルモニター表示(インペリアル単位)
- bmp280_OLED_m.ino - OLED表示(メトリック単位)
- bmp280_OLED_US.ino - OLED表示(インペリアル単位)
主なライブラリ設定(共通)
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, // 動作モード
Adafruit_BMP280::SAMPLING_X2, // 温度オーバーサンプリング
Adafruit_BMP280::SAMPLING_X16, // 気圧オーバーサンプリング
Adafruit_BMP280::FILTER_X16, // フィルタリング
Adafruit_BMP280::STANDBY_MS_500); // スタンバイ時間
高度計算の注意点
bmp.readAltitude(1019.66) の引数は、当日の海面気圧(hPa)です。お住まいの地域の実際の海面気圧に合わせて調整すると、より正確な高度が得られます。不明な場合は、既知の標高になるまで値を調整してください。
必要なライブラリ
回路図
BMP280とOLEDはともにI2Cインターフェースを使用します。SDA/SCLをArduinoのA4/A5に接続します。BMP280は5V駆動、OLEDは3.3V駆動です。
製造プロセス
- QR・RFID・体温検知統合アクセス制御システム(Raspberry Piベース)
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- EzTempでRaspberry Pi上の温度・湿度をシームレスに監視
- DIY自家醸造温度制御:Arduinoで監視・調節
- Raspberry PiでBMP085:I2C経由の高精度温度・気圧測定
- 実験室・科学実験向け精密熱電対測定とロギング
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- アナログセンサー搭載・高精度圧力&気流測定デバイス
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- Arduino UNOで周波数とデューティサイクルを高精度測定