複合センサーBME680をRaspberry Pi3+で使う
BOSH製複合センサーBME680は、1つのモジュールで温度、湿度、大気圧に加えてまで測れてしまう優れモノです。
I2CレベルコンバータIC搭載のセンサーモジュールが秋月電子で1320円で入手可能です
akizukidenshi.com
ガスセンサにしては少し高価ですが、昨日の高さとシンプルなセンサーであることが利点と考え、購入することにしました。
配線
まずピンヘッダを基盤に半田付けします。ブレッドボードで引用したかったので、付属のピンヘッダを半田付けしました。ラズパイとは以下の表のような対応で配線します。
センサー側 | ラズパイ側 |
---|---|
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
温度、大気圧、湿度、そしてガス検出の指標となると思われる抵抗値が得られました!
抵抗値はだんだんと増加し一定値に落ち着きます。