温湿度・気圧・ガスセンサ(BME680)を Raspberry Pi 4 で使う
別に 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
5の Interfacing Options を選びます。
P5の箇所の I2C を選びます。
すると 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 --