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分ごとに起動する設定に。

参考にしたのは以下。


この記事が気に入ったらサポートをしてみませんか?