Raspberry Pi 4B + BME680 + Ambientで実験室環境をモニタリングする
Raspberry Piを買ってみたはいいが、何をするでもなかったので、とりあえず実験室(とデスク)の環境をモニタリングしようと思い立った。
ということで覚書。
モニタリングするもの
・室温
・湿度
・大気圧
ということで、ラズパイマガジン2020年12月号に載っていたセンサーBME680を使うことに。
BME680はガスセンサーでもあるが、今回は使用していない。
配線もラズパイマガジン通りI2C接続する。
ここで取得した各データをAmbientに送信して表示する。
諸々インストール
# SMBusのインストール
sudo apt install python-smbus
# bme680ライブラリ
git clone https://github.com/pimoroni/bme680
cd bme680/library
sudo python setup.py install
# Ambientライブラリ
sudo pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git
センサーを認識しているか確認。
$ 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: -- -- -- -- -- -- -- 77
各値をAmbientに送るPythonプログラムを作成。
# import sensor
import bme680
try:
sensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
except IOError:
sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY)
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)
temp = sensor.data.temperature
press = sensor.data.pressure
humid = sensor.data.humidity
# write Ambient
import ambient
ambi = ambient.Ambient(XXXXX, "XXXXXXXXXXXXXXX") # それぞれAmbientのチャネルID、ライトキー
r = ambi.send({"d1": temp, "d2": humid, "d3": press})
これを保存して、あとはcronで10分ごとに起動する設定に。
参考にしたのは以下。