秋月で買った温度・湿度・気圧センサーBME280をラズパイに繋いでみました。
校正をしていないLM335Zよりも正確そうな数値が得られました。
☆材料 ブレッドボード BB-801 | 秋月 P-05294 | 200円 |
ラズベリーパイ用ブレッドボード接続キット | 秋月 K-08892 | 450円 |
BME280使用 温湿度・気圧センサモジュールキット | 秋月 K-09421 | 1,080円 |
ブレッドボードジャンパーワイヤセット | 秋月 C-05159 | (60本)220円 |
合計 | | 1,950円 |
☆回路図
☆できあがり
☆チェック
①「i2cdetect -y 1」でアドレス76が表示されれば認識されています。$ 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 --
|
☆ライブラリのインストール
①smbus2をインストールする。(Python3を使っているときは「pip3」でインストールする。)$ sudo pip3 install smbus2 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting smbus2 Using cached https://www.piwheels.org/simple/smbus2/smbus2-0.2.3-py2.py3-none-any.whl Installing collected packages: smbus2 Successfully installed smbus2-0.2.3
|
②RPi.bme280をインストールする。(Python3を使っているときは「pip3」でインストールする。)$ sudo pip3 install RPi.bme280 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting RPi.bme280 Using cached https://files.pythonhosted.org/packages/8a/55/2c738564ceb478952f15d6331759c0ca4f4d518e8e44689766deac9f42de/RPi.bme280-0.2.3-py2.py3-none-any.whl Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (from RPi.bme280) (0.2.3) Installing collected packages: RPi.bme280 Successfully installed RPi.bme280-0.2.3 |
☆テストコード
RPi.bme280ライブラリを使えばとても簡単なコードで温度・湿度・気圧が取得できます。(SWITCHSCIENCEさんのサンプルコードとほぼ同じ数値が得られました。「ほぼ」なのは,同時刻に取得した数値ではないからで,まったく同じといってよいと思います。)
参考にしたWebページによると,この温度は湿度・気圧を求めるときの補正用に使うセンサー自身の温度であって,周辺の環境の温度とは異なるとのことです。校正していないLM335Zと比べると,確かに3℃近く高い温度を示しますが,市販の温度計や体温計などを近くに置いてみると,BME280に近い温度を示します。気温・湿度・気圧のロガーを作る際に,気温だけLM335Zで測るようにしようかと思いましたが,校正するのも大変そうなので,BME280の温度をそのまま使うことにします。
import smbus2 import bme280 import time
port = 1 address = 0x76 bus = smbus2.SMBus(port) calibration_params = bme280.load_calibration_params(bus, address)
while True: data = bme280.sample(bus, address, calibration_params) print("{0:%Y年%m月%d日 %H時%M分%S秒}".format(data.timestamp)) print(" 温度:{0:.2f} ℃".format(data.temperature)) print(" 湿度:{0:.2f} %".format(data.humidity)) print(" 気圧:{0:.2f} hPa\n".format(data.pressure)) time.sleep(1) |
>>> %Run BME280_Rpi.bme280.py 2019年xx月xx日 xx時xx分xx秒 温度:32.58 ℃ 湿度:58.63 % 気圧:1005.91 hPa
2019年xx月xx日 xx時xx分xx秒 温度:32.57 ℃ 湿度:58.55 % 気圧:1005.87 hPa |
上の直後にSWITCHSCIENCEさんのサンプルコードを実行した結果が下です。ほぼ同じ値です。
>>> %Run BME280_SRpi.bme280.py temp : 32.56 ℃ pressure : 1005.89 hPa hum : 58.47 % |
☆参考にしたwebページ