Hobby Science&Experiment

愛と工作の日々

趣味でやっている工作や勉強したことのメモ書きです。

複合センサーBME680をRaspberry Pi3+で使う

BOSH製複合センサーBME680は、1つのモジュールで温度、湿度、大気圧に加えてまで測れてしまう優れモノです。
I2CレベルコンバータIC搭載のセンサーモジュールが秋月電子で1320円で入手可能です
akizukidenshi.com
ガスセンサにしては少し高価ですが、昨日の高さとシンプルなセンサーであることが利点と考え、購入することにしました。

f:id:tara-chang:20200621183623p:plain
こんな感じで届きます
f:id:tara-chang:20200621183418p:plain
1円玉よりも小さいです。0603のMLCCも小ささに驚きです。

配線

まずピンヘッダを基盤に半田付けします。ブレッドボードで引用したかったので、付属のピンヘッダを半田付けしました。

f:id:tara-chang:20200621183244p:plain
半田付けした様子
ラズパイとは以下の表のような対応で配線します。

センサー側 ラズパイ側
CN1(Vin)
3V3
CN2(SCL)
SCL1(3pin)
CN3(SDA)
SDA11(2pin)
CN4(GND)
GND

※pinはGPIO番号です。

ライブラリのインストール

こちらの記事を参考にインストールを行いました。
こちらの記事とは使用しているモジュールが違うようですが(汗)、一応動きました。
githubからライブラリをクローンします。

@raspberrypi:~ $ git clone https://github.com/pimoroni/bme680
Cloning into 'bme680'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 416 (delta 12), reused 20 (delta 10), pack-reused 384
Receiving objects: 100% (416/416), 448.33 KiB | 447.00 KiB/s, done.
Resolving deltas: 100% (185/185), done.

ディレクトリに移動し、インストールを行います。

@raspberrypi:~ $ cd bme680/library
@raspberrypi:~/bme680/library $ sudo python setup.py install
running install
running bdist_egg
running egg_info
creating bme680.egg-info
writing bme680.egg-info/PKG-INFO
writing top-level names to bme680.egg-info/top_level.txt
writing dependency_links to bme680.egg-info/dependency_links.txt
writing manifest file 'bme680.egg-info/SOURCES.txt'
reading manifest file 'bme680.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'bme680.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
creating build
creating build/lib.linux-armv7l-2.7
creating build/lib.linux-armv7l-2.7/bme680
copying bme680/constants.py -> build/lib.linux-armv7l-2.7/bme680
copying bme680/__init__.py -> build/lib.linux-armv7l-2.7/bme680
creating build/bdist.linux-armv7l
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/bme680
copying build/lib.linux-armv7l-2.7/bme680/constants.py -> build/bdist.linux-armv7l/egg/bme680
copying build/lib.linux-armv7l-2.7/bme680/__init__.py -> build/bdist.linux-armv7l/egg/bme680
byte-compiling build/bdist.linux-armv7l/egg/bme680/constants.py to constants.pyc
byte-compiling build/bdist.linux-armv7l/egg/bme680/__init__.py to __init__.pyc
creating build/bdist.linux-armv7l/egg/EGG-INFO
copying bme680.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO
copying bme680.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying bme680.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying bme680.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/bme680-1.0.5-py2.7.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing bme680-1.0.5-py2.7.egg
Copying bme680-1.0.5-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding bme680 1.0.5 to easy-install.pth file

Installed /usr/local/lib/python2.7/dist-packages/bme680-1.0.5-py2.7.egg
Processing dependencies for bme680==1.0.5
Finished processing dependencies for bme680==1.0.5

無事完了したようです!

動作確認

xexamplesディレクトリ内にある、read-all.pyを実行します。

pi@raspberrypi:~/bme680/library $ cd /home/pi/bme680/examples
pi@raspberrypi:~/bme680/examples $ python read-all.py
read-all.py - Displays temperature, pressure, humidity, and gas.

Press Ctrl+C to exit!


Calibration data:
par_gh1: -14
par_gh2: -8970
par_gh3: 18
par_h1: 712
par_h2: 1022
par_h3: 0
par_h4: 45
par_h5: 20
par_h6: 120
par_h7: -100
par_p1: 35546
par_p10: 30
par_p2: -10422
par_p3: 88
par_p4: 4829
par_p5: 40
par_p6: 30
par_p7: 26
par_p8: -650
par_p9: -3416
par_t1: 26319
par_t2: 26386
par_t3: 3
range_sw_err: 1
res_heat_range: 1
res_heat_val: 46
t_fine: 139551


Initial reading:
gas_index: 0
gas_resistance: 12917167
heat_stable: False
humidity: 46.681
meas_index: 0
pressure: 1008.18
status: 32
temperature: 27.26


Polling:
27.26 C,1008.16 hPa,46.69 %RH
27.27 C,1008.17 hPa,46.65 %RH,5490 Ohms
27.31 C,1008.21 hPa,46.59 %RH,9369 Ohms
27.35 C,1008.21 hPa,46.55 %RH,13682 Ohms
27.39 C,1008.20 hPa,46.47 %RH,18865 Ohms
27.43 C,1008.20 hPa,46.40 %RH,25194 Ohms
27.46 C,1008.17 hPa,46.34 %RH,32489 Ohms
27.50 C,1008.17 hPa,46.28 %RH,40690 Ohms
^Z
[2]+  停止                  python read-all.py

温度、大気圧、湿度、そしてガス検出の指標となると思われる抵抗値が得られました!
抵抗値はだんだんと増加し一定値に落ち着きます。