タバコの受動喫煙対策で煙の検出用のI2C接続のタイプのTVOCセンサーのBME680を使ってみた

タバコの受動喫煙対策で煙の検出用のI2C接続のタイプのTVOCセンサーのBME680を使ってみた。

前に、I2C接続のタイプのTVOCセンサーを手に入れたというblogエントリーを書いたが、その続きだ。

BME680というBosch製のセンサーだが、これは大気汚染だけでなく、気温と湿度と気圧も同時に測定ができるという便利なセンサーICだ。
まず最初にストロベリーリナックスというところが出しているブレークアウト基板を入手した。
そのあと、CJMCU-680という名前の中国製のセンサーモジュール基板を試した。
後者は、3,3V電源レギュレータとI2C/SPIバスの電圧変換回路が付いているので、5V駆動のArduinoマイコンなどにそのまま接続して動かすことが可能だ。

超小型圧力CJMCU-680 BME680温湿度圧力センサ(パープル)(Amazon)

まず最初は、ストロベリーリナックスというところが出しているブレークアウト基板を試した。単に先に入手していたからだ。(というかCJMCU-680の存在を当初は知らなかった。)
このボードは、ICのピンがほぼそのままコネクタ部に信号が出ているだけで、基板上には最低限のパスコンくらいしか載っていない。

とりあえず、3.3V駆動するArduino互換マイコンボードに接続してみたが動かせずにだいぶ悩んだ。
あと、5Vの普通のArduino UNOに接続するために、I2Cバス電圧を変換するために、Amazonで安く売っているバス電圧変換基板モジュールを購入して試してみた。

最初に動かなかった原因は結局よく分からずじまいだが、I2CモードかSPIモードに設定するピンの電圧設定とか、I2Cのアドレスを設定するピンの電圧設定とか、そのあたりを半田付けミスしていたのだと思われる。(理解はちゃんとしていたはずだが、工作ではんだ付けミスか何かの凡ミスをしてたっぽい)

うまく動かなかったときに、比較用に CJMCU-680という名前の中国製のセンサーモジュール基板を手に入れて試した。
これは、普通に繋いですぐに動かすことができた。

写真の真ん中のバス電圧変換モジュール基板を介さずに、写真右側のBME680モジュールをI2C用のマイコンのピンに直結で繋いでいる。

このモジュールは6ピンのコネクタになっているのだが、2本は無視して4本だけ繋いだ。(VCC,GND,SCL,SDAの4本だ。)

Arduinoマイコンボードのソフトについては、割と簡単で、AdafruitのBME680ライブラリというのをArduino IDEのライブラリ管理からインストールして、bme680testというexampleソースコードのスケッチを動かした。
このとき、もう1つAdafruitの汎用センサーライブラリーも必要だったのでインストールした。

このexampleは、AdafruitのBME680センサーモジュール用で、I2Cのアドレスが決め打ちになっている。
CJMCU-680という中国製のBME680センサーモジュールも、Adafruit互換になっているらしく、アドレス設定を特に変更しなくても動作した。

自分はCrowtailのMP503センサーモジュール基板を比較用の基準に使っていて、BME680と同時に動かして比較してみた。

数日動かして、ログ(記録)を取ってみた。そのうちのある1日の0時からの24時間分を取り出した。

系列1は、Crowtail MP503モジュールの計測値で、汚染に反応して数値が上昇している。
系列2は、BME680のGasセンサーの抵抗値の出力値を10で割った数値をプロットした。

BME680は、汚染に反応して(センサーに使っている導電体の)抵抗値が下がっている。
しかし、汚染で変化した数値が、そのあとで汚染が軽減したときにもとの抵抗値の測定値に戻らずに、横軸の21(21時)の付近ではだいぶ大きな抵抗値になっている。

これは、BME680がおかしいのではなく、MP503で測定できない有害なガス成分が0時から7時の間にも測定されていて、21時の値が無害な状態なのかもしれない。(要検証。)

ちょっと工夫して、これからはBME680を基準のセンサーとして使おうと考えている。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

− 1 = 2