Raspberry Pi Pico WにGROVE温湿度・気圧センサ(BME280)をつなぐ

先日、「Raspberry Pi Pico W」に「GROVE温度・湿度センサ(DHT20)」をつなぎ、温度・湿度データを取得しました(記事は こちら)。

今回も引き続き、「Raspberry Pi Pico W」にI2Cインターフェースのセンサをつないで、データを取得してみようと思います。


今回使うのは「GROVE温湿度・気圧センサ(BME280)」です。
このセンサで温度・気圧・湿度データを取得してみたいと思います。


今回も「DHT20」の時と同様に、2系統ある「Raspberry Pi Pico W」のI2Cのうち「I2C1」を使います。
「Raspberry Pi Pico W」と「BME280」を以下のようにつなぎます。

Raspberry Pi Pico W BME280
GNDGND
3V3(OUT)VCC
SDASDA
SCLSCL

「BME280」用のライブラリを入手します。

  • 「Thonny」で「ツール」>「パッケージを管理」を選択し、検索窓に「bme280」と入力して「PyPIを検索」をクリックします。
  • 検索結果が表示されるので、その中から「micropython-bme280」をクリックします。
  • 「インストール」をクリックします。
  • インストールが完了したら「閉じる」をクリックしてウィンドウを閉じます。「表示」>「ファイル」を選択して画面左側のファイルエリアを表示すると、「Raspberry Pi Pico」内に「lib/bme280.py」が保存されていることが確認できます。

以下のとおり、プログラムをつくります。

from machine import I2C
from bme280 import BME280
i2c = I2C(1)
bme = BME280(i2c=i2c)
while True:
    print(bme.values)

これを「Raspberry Pi Pico W」に「main.py」という名前で保存し、「実行」ボタンをクリックすると、以下のようにシェルに温度・気圧・湿度が表示されます。

なお、ここでは温度・気圧・湿度データが単位付の文字列として表示されていますが、補正計算前の数値を取得する場合は「read_compensated_data()」を使います。

from machine import I2C
from bme280 import BME280
i2c = I2C(1)
bme = BME280(i2c=i2c)
while True:
    print(bme.read_compensated_data()[0]/100)
    # print(bme.read_compensated_data()[1]/25600)
    # print(bme.read_compensated_data()[2]/1024)

この場合は、シェルに温度データが数値として表示されます。

温度・気圧・湿度それぞれの補正式は以下のとおりです。

  • 温度(℃)= 測定値 / 100
  • 気圧(hPa)= 測定値 / 256 / 100
  • 湿度(%)= 測定値 / 1024