ラズパイで温度・湿度・気圧センサー(HiLetgo BME280)からpython3で値を取得し、 Google BigQueryに記録する。(前編)

自宅IoT

HiLetgo BME280センサーを使用し、pythonにより、気温、湿度、気圧の取得とGoogle BigQueryに取得データを記録します。

前提

環境

ラズパイ:Raspberry pi 4B
OS:Raspbian GNU/Linux 10 (buster)
使用言語:python3

事前準備

アップデート

お決まりのお作法です。

# sudo apt-get update
# sudo apt-get upgrade
# sudo apt-get dist-upgrade

I2C有効化

以下の記事を参照し、ラズパイのI2C通信を有効にします。

Pythonライブラリインストール

後で利用するライブラリをインストールします。

# sudo pip install smbus2

BME280

BME280準備

私はamazonから購入しました。

この値段で気温・湿度・気圧が取得可能なのは破格だと思っています。

PINがはんだ付けされていないため、はんだ付けします。

はんだ付けが汚いのはご愛敬です。

BME280結線

結線は以下のとおりです。
センサーの保全のため、VCC・GND・CSBは最後に結線してください。
私は、誤った結線に気づかず、センサーを壊しました。

BME280ラズパイ
VCC+3V3(pin1)
GNDGND(pin6)
SCLGPIO3/SCL1(pin5)
SDAGPIO2/SDA1(pin3)
CSB+3V3(pin17)
SDOGND(pin9)

ラズパイ

センサー結線確認

結線が完了したら以下のコマンドで確認します。

# 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 --

0x76が表示されていれば正しく結線でき、センサーが認識されています。
結線の方法を変更(CSB→未使用、SDO→+3V3)した場合、アドレスは0x77となります。

モジュール準備

スイッチサイエンスのサンプルをpython3用に改造します。
まずは、サンプルを取得します。

# sudo mkdir /home/pi/mod/BME280
# cd /home/pi/mod/BME280
# curl -L -O https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py

スイッチサイエンスさんありがとうございます。

モジュール修正

サンプルはpython2用なので、python3で動作させるためにprint構文を以下のように修正します。

bme280_sample.py

95行目
print "pressure : %7.2f hPa" % (pressure/100)

print ("pressure : %7.2f hPa" % (pressure/100))

103行目
print "temp : %-6.2f ℃" % (temperature)

print ("temp : %-6.2f ℃" % (temperature))

117行目
print "hum : %6.2f %" % (var_h)

print ("hum : %6.2f %" % (var_h))

モジュール実行

準備ができたらモジュールを実行します。

# python bme280_sample.py
temp : 27.69 ℃
pressure : 1013.53 hPa
hum : 61.03 %

コンソールに気温・湿度・気圧が表示されました!

次回はこれをGoogle BigQueryに記録していきます。

コメント

タイトルとURLをコピーしました