温度、湿度、気圧を測る(BME280使用)

解説

BME280は、温度、湿度、気圧の3つの環境情報を同時に測定できます。

「BME280 の仕様書」に従い、BME280クラス を作成しました。

作成したBME280クラスを利用して、温度、湿度、気圧を測定します。

秋月電子にて販売されている「BME280使用 温湿度・気圧センサモジュールキット」を使用しました。

部品表

最低限必要なものは「ハードウェアのセットアップ」参照

部品名 数量 商品名 参考価格
BME280モジュール 1 BME280使用 温湿度・気圧センサモジュールキット 1,080円

接続表

BME280モジュール側 ESP-WROOM-02側
ピン番号 ピン名称 ピン名称
1 VDD 3V3
2 GND GND
3 CSB IO15(Slave Select pin)
4 SDI IO13(MOSI)
5 SDO IO12(MISO)
6 SCK IO14(SCK)

接続例

プログラム書き込み時の接続については、「ハードウェアのセットアップ」参照



プログラム書き込み時は、RTSピンとRESETピンを接続し、DTRピンとIO0ピンを接続します。
実行時は、RTSピンとRESETピンを接続しません、DTRピンとIO0ピンを接続しません。
(実行時に、RTSピンとRESETピンを接続し、DTRピンとIO0ピンを接続すると、シリアル通信時に、生じる信号が、RESETピン、IO0ピンに入り、「リセットがかかる」等、期待しない動作になります。)

BME280の測定処理の手続き

BME280を用いて温度、湿度、気圧の測定を行うための手続きは以下です。

1.レジスタ※へオプション設定の書き込み(※レジスタ:BME280の演算装置内にある記憶装置。)
・測定モード(定期的に測定するか、必要なときに測定するか)
・スタンバイ時間(定期的測定モードにおける測定終了から次回測定開始までの時間)
・オーバーサンプリング(ノイズ低減のためのオーバーサンプリングの設定)
・フィルタ係数(ノイズ低減のためのIIR フィルタの係数)
・SPIのワイヤー数(3ワイヤーか4ワイヤーか)
の設定をBME280のレジスタに書き込みます。
2.レジスタからトリミングパラメータの読み込み
温度、湿度、気圧は、A/D変換回路(アナログ-デジタル変換回路)によって、A/D変換値として測定されます。
A/D変換値をアナログ値(人間にとって意味のある値)に戻すには、補正計算を行う必要があります。
補正計算は補正計算式で計算します。
補正計算式中のトリミングパラメータをBME280のレジスタから読み込みます。
3.温度、湿度、気圧の測定
測定モードを、ノーマルモードとした場合は、測定のための特別な処理はありません。(測定モードを、ノーマルモードとした場合には、測定は、スタンバイ時間設定に従い、自動的に定期的に行われます。)
測定モードを、スリープモードもしくはフォースモードとした場合には、測定のために、測定モードをフォースモードに変更します。(測定モードを、スリープモードもしくはフォースモードとした場合には、測定は、測定モードをフォースモードに変更した直後に行われます。測定後、測定モードは、スリープモードに移行します)
4.レジスタからA/D変換値の読み込み
温度、湿度、気圧は、A/D変換値として計測され、レジストリに記憶されます。
A/D変換値をBME280のレジスタから読み込みます。
5.A/D変換値をアナログ変換値に戻す
補正計算式を用いて、A/D変換値をアナログ値(人間にとって意味のある値)に戻します。

1.2.は、最初に一度だけ実行します。
3.~5.を温度、湿度、気圧を取得したいときに実行します。

クラスファイルの作成

「BME280.h」というファイル名で、以下の内容のファイルを作成します。
「BME280の測定処理の手続き」の
1.2.を、begin()関数にまとめ、
3.~5.を、getData()関数にまとめています。

サンプルコード

クラスファイル「BME280.h」は、サンプルコードファイルと同一フォルダにコピーします。

実行



ESP-WROOM-02から送信されたものをPC(Arduino IDE の Serial Monitor)で受信した結果。
温度、湿度、気圧の測定結果がSerial Monitor画面に表示されます。

ダウンロード

サンプルスケッチファイル