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) | |
GND | GND(pin6) | |
SCL | GPIO3/SCL1(pin5) | |
SDA | GPIO2/SDA1(pin3) | |
CSB | ー(結線なし) | |
SDO | GND(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に記録していきます。
コメント