Bosh社製BME680のBSEC libraryの使い方(温度補正手順記載あり)

電子工作

はじめに

Bosh社のガスセンサーであるBME68xシリーズは気温・湿度・気圧・ガス抵抗値が測定できる環境センサーですが、Bosh社が提供しているBosch Sensortec Environmental Cluster(BSEC)ライブラリーを使用するとガス抵抗値からeCO2、VOC、IAQへの換算が可能となるため室内換気の指標として有効に活用できます。
そのBSECライブラリーをArduinoとESP32環境で使用する方法はGitHubに記載がありますが使用するまでにひと手間かかりますので手順を紹介します。
またセンサーを筐体内部に入れた際、筐体内温度は周囲温度よりも2〜5℃程度高温になりますのでその温度の補正の方法についても紹介します。

BSECライブラリーを使用する手順

1.現時点(2023.2.18)での最新ライブラリーを確認するとv1.6.1492.ですが、私はひとつ前のバージョンを使用しておりArduino環境は次の通りになります。

・Arduino 1.8.15
・Board manager – ESP32 Arduino – ESP32 Dev Module Ver 1.02
・BSEC Software library v1.6.1480

2.Board managerのフォルダーにあるplatform.txt fileを確認します。
私の環境では以下のフォルダーです。(username は各自の環境にあわせて読み替えて下さい)
C:\Users\username\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2
そのplatform.txtを編集してBSECライブラリーを使用できるようにします。具体的には2か所の変更が必要で、この変更を行わないとArduinoでBSECライブラリーを使用したコンパイルをすることができません
①55行目付近の”#These can be overridden in platform.local.txt”で最後に黄色の行を追加します。
compiler.c.extra_flags=
compiler.c.elf.extra_flags=
compiler.S.extra_flags=
compiler.cpp.extra_flags=
compiler.ar.extra_flags=
compiler.objcopy.eep.extra_flags=
compiler.elf2hex.extra_flags=
compiler.libraries.ldflags=
②77行目付近の”##Combine gc-sections, archives, and objects”で後半部分に黄色塗り部分を追加します。
–start-group {object_files} “{archive_file_path}” {compiler.c.elf.libs} {compiler.libraries.ldflags} -Wl,–end-group “-L{build.path}”
以上でBSECライブラリーを使用する作業は完了です。

スケッチ例からサンプルプログラム”basic”が問題なくコンパイルできるかを試してみてください。

以上でeCO2、VOC、IAQの数値出力が可能となり室内空気品質の確認がやり易くなります。

温度補正するための手順

私が作成した室内環境測定器では筐体内にGrove BME680センサーを内蔵しているのですが、その場合、別途用意した温度計と比較すると5℃程度上昇してしまっています。さすがに5℃も高いと湿度やガス抵抗値に影響がでてきます。補正方法は公式で少し触れられていますが他のサイトに具体的な記述が無いので参考になればと思います。

サンプルプログラムで例を示すと下記のように19行目に温度補正値を設定する一行を追加します。
iaqSensor.setTemperatureOffset(5.0); //温度オフセットさせる値をfloatで入れる。
“5.0”が”5℃下げる”ことを意味します。

スケッチ上で具体的に示すと次の箇所に記載すれば大丈夫。

以上で温度補正も行えて良い感じになりますよ。

おわりに

温度補正も行われると同時に湿度も補正されるので、温度、湿度、気圧、eCO2の4つの環境データを一つのデバイスで取得するデバイスとしてはBME680が比較的安価に入手でき使い勝手も良くおススメです。

コメント

タイトルとURLをコピーしました