温度、湿度、気圧を測る(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画面に表示されます。