先日、「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 |
---|---|
GND | GND |
3V3(OUT) | VCC |
SDA | SDA |
SCL | SCL |
「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
リンク