メモ

調べたり思いついたりしたことをメモします

温湿度・気圧・ガスセンサ(BME680)を Raspberry Pi 4 で使う

f:id:uenoshin:20190712214250j:plain

別に Raspberry Pi 4 でなくとも同じだとは思いますが、一応 Pi 4 でも使えたよという実績を書き残しておきます。 使ったのはこちらの BME680 です。£16ぐらいで買えました。

Getting Started with BME680 Breakout - Pimoroni Yarr-niversity

写真にあるブレッドボードとT型拡張ボードはそのへんの安物で十分でしょう、たぶん。Amazonでこういうのを買うといろいろ使えて便利だと思います。

さて、実装ですがブレッドボード上の 3.3V, SDA, SCL, GND を合わせて差し込みます。RPiのGPIOの並びなら特にジャンパピンなども使わずにそのままぶっ刺すだけでOKです。

ライブラリのインストールは公式サイトに記載の通りです。

git clone https://github.com/pimoroni/bme680
cd bme680/library
sudo python setup.py install

これでインストールが出来た状態となりますので動作確認用のスクリプトを動かしてみます。

cd /home/pi/bme680/examples
python read-all.py

するとエラーメッセージが出ました。

read-all.py - Displays temperature, pressure, humidity, and gas.

Press Ctrl+C to exit!


Traceback (most recent call last):
  File "read-all.py", line 15, in <module>
    sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY)
  File "build/bdist.linux-armv7l/egg/bme680/__init__.py", line 43, in __init__
IOError: [Errno 2] No such file or directory

よく考えたらI2CをEnableにしていなかったので raspi-config を使って設定変更します。

sudo raspi-config

f:id:uenoshin:20190712220655j:plain

5の Interfacing Options を選びます。

f:id:uenoshin:20190712220815j:plain

P5の箇所の I2C を選びます。

f:id:uenoshin:20190712220915j:plain

すると I2C を Enable にするか聞いてくるので「はい」を選択します。 これで I2C が有効になったので気を取り直して再度動作確認用スクリプトを動かします。

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: -37
par_gh2: -8441
par_gh3: 18
par_h1: 853
par_h2: 995
par_h3: 0
par_h4: 45
par_h5: 20
par_h6: 120
par_h7: -100
par_p1: 37742
par_p10: 30
par_p2: -10529
par_p3: 88
par_p4: 7839
par_p5: -83
par_p6: 30
par_p7: 70
par_p8: -6136
par_p9: -1168
par_t1: 26291
par_t2: 26386
par_t3: 3
range_sw_err: 0
res_heat_range: 1
res_heat_val: 37
t_fine: 141008


Initial reading:
gas_index: 0
gas_resistance: 6250729
heat_stable: False
humidity: 53.186
meas_index: 0
pressure: 998.4
status: 32
temperature: 27.54


Polling:
27.55 C,998.40 hPa,53.18 %RH
27.56 C,998.38 hPa,53.12 %RH,1692 Ohms
27.58 C,998.44 hPa,53.04 %RH,2316 Ohms
27.61 C,998.43 hPa,52.94 %RH,3029 Ohms
27.63 C,998.42 hPa,52.84 %RH,3634 Ohms
27.66 C,998.44 hPa,52.71 %RH,4206 Ohms
27.67 C,998.41 hPa,52.61 %RH,4768 Ohms
27.69 C,998.43 hPa,52.50 %RH,5329 Ohms
27.70 C,998.46 hPa,52.39 %RH,5863 Ohms
27.71 C,998.45 hPa,52.29 %RH,6440 Ohms
27.71 C,998.46 hPa,52.16 %RH,7048 Ohms
27.72 C,998.45 hPa,52.08 %RH,7624 Ohms
27.73 C,998.44 hPa,51.97 %RH,8251 Ohms
27.74 C,998.45 hPa,51.89 %RH,8897 Ohms
27.74 C,998.44 hPa,51.81 %RH,9547 Ohms
27.75 C,998.43 hPa,51.73 %RH,10200 Ohms
27.76 C,998.44 hPa,51.66 %RH,10823 Ohms
27.77 C,998.44 hPa,51.61 %RH,11477 Ohms
27.77 C,998.43 hPa,51.55 %RH,12131 Ohms
27.77 C,998.44 hPa,51.51 %RH,12893 Ohms
27.78 C,998.43 hPa,51.47 %RH,13508 Ohms
27.78 C,998.42 hPa,51.43 %RH,14185 Ohms
27.79 C,998.42 hPa,51.40 %RH,14839 Ohms
27.79 C,998.41 hPa,51.40 %RH,15602 Ohms
27.79 C,998.42 hPa,51.41 %RH,16396 Ohms
27.80 C,998.42 hPa,51.43 %RH,17106 Ohms
27.80 C,998.42 hPa,51.41 %RH,17834 Ohms
27.81 C,998.43 hPa,51.40 %RH,18578 Ohms
27.81 C,998.41 hPa,51.37 %RH,19405 Ohms
27.81 C,998.46 hPa,51.34 %RH,20152 Ohms
27.82 C,998.46 hPa,51.29 %RH,20917 Ohms
27.82 C,998.45 hPa,51.25 %RH,21697 Ohms
27.83 C,998.44 hPa,51.21 %RH,22538 Ohms
27.83 C,998.43 hPa,51.19 %RH,23342 Ohms
27.83 C,998.43 hPa,51.16 %RH,24118 Ohms
27.83 C,998.43 hPa,51.15 %RH,24936 Ohms
27.83 C,998.43 hPa,51.11 %RH,25795 Ohms
27.83 C,998.42 hPa,51.09 %RH,26699 Ohms
27.83 C,998.42 hPa,51.06 %RH,27595 Ohms
27.83 C,998.43 hPa,51.04 %RH,28554 Ohms
27.83 C,998.43 hPa,51.01 %RH,29374 Ohms

温度・気圧・湿度・ガス抵抗値 が一秒ごとに出力されていきます。

あと、ちなみにこのBME680のアドレスは 0x76 です。今後ほかのI2Cデバイスも並べて使っていこうと思うので覚書までに。

pi@raspberrypi:~/bme680/examples $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 --