Raspberry PiとBME280を利用して気温、湿度、気圧を測定する

Raspberry Pi

今回はRaspberry Piと温湿度気圧測定モジュールを利用してデータの取得を行います。

BME280は1つのモジュールで温度、湿度、気圧が測定可能で、接続もI2Cなので非常に簡単です。

構成

回路図

つなぎ方
BME280Raspberry Pi Zero WH
SDI3番ピン GPIO2
SCK5番ピン GPIO3
GND,SDO9番ピン GND
Vio,CSB1番ピン 3.3V

このような感じで接続します。

Raspberry Piでの準備

ICとRaspberry Piとの通信はI2Cという規格を用います。
使うためにはRaspberry Piの設定をオンにする必要があります。

I2Cを有効にする
sudo raspi-config

5 Interfacing Options  Configure connections to peripherals ←選択

P5 I2C         Enable/Disable automatic loading of I2C kernel module ←選択

設定が完了したら再起動します。

sudo reboot

次に認識しているか確認します。

I2Cで認識しているかを確認
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 --

76に認識されていればOKです。

I2C用のライブラリをpipでインストールします。

smbus2のインストール
sudo pip3 install smbus2

データ取得用のスクリプトは以下のページのを使用しました。
ありがとうございます。

(Python3 の修正コード)

Raspberry Pi で温湿度気圧センサを使う - Qiita
概要 Raspberry Pi でSIM経由で通信する顔認証システムを作成し、認証結果を kintone で管理するシステムを構築します。 今回は、顔認証した時のオフィス環境データを取得するため Raspberry Pi で温湿...

配置するディレクトリはどこでもいいですが今回は/opt配下にします。

bme280のデータを取得する
cd /opt
mkdir bme280
vim bme280.py

上記サイトのpythonスクリプトを貼り付ける
以下のコマンドで実行結果が得られればOK

python3 bme280.py
pressure    :  961.11 hPa
temperature :  28.94  ℃
humidity    :  55.17 %

この出力結果だと少し使いにくいので、シェルスクリプトを1つ書きました。

bme280.sh
#!/bin/bash

bme280py_path="/opt/bme280/bme280.py"

SECONDS=`date '+%s'`

if [ $# = 1 ]; then
	if [ $1 = "temp" ]; then
		VALUE=`python3 ${bme280py_path} | awk '{if ($1 == "temperature"){print $3}}'`
		NAME='temperature.room'
	elif [ $1 = "humi" ]; then
		VALUE=`python3 ${bme280py_path} | awk '{if ($1 == "humidity"){print $3}}'`
		NAME='humidity.room'
	elif [ $1 = "pres" ]; then
		VALUE=`python3 ${bme280py_path} | awk '{if ($1 == "pressure"){print $3}}'`
		NAME='pressure.room'
	else
		echo "usage: $0 {temp|humi|pres} "
		exit -1
	fi
else
	echo "usage: $0 {temp|humi|pres} "
	exit -1
fi

echo -e "${NAME}\t${VALUE}\t${SECONDS}"

出力形式はMackerel利用を想定した形式にしています。

実行結果はこちら

pi@raspberrypizero:/opt/scripts $ ./bme280.sh temp
temperature.room	29.34	1599296777
pi@raspberrypizero:/opt/scripts $ ./bme280.sh humi
humidity.room	56.11	1599296837
pi@raspberrypizero:/opt/scripts $ ./bme280.sh pres
pressure.room	960.96	1599296846

引数にtempを入れると室温、humiを入れると湿度、presを入れると気圧が表示されます。

これで気温、湿度、気圧が簡単に取得できるようになりました!

Mackerelで簡単にグラフ化した記事はこちら

Raspberry Pi Zero WHにMackerelを導入して死活監視と気温などのグラフ化を行う
Mackerelを導入してできることMackerelは簡単に言うとSaaS型の監視サービスです。疎通確認やCPU使用率などを監視して問題があるとSlackやメールにアラートを飛ばしてくれます。クラウド型なので、...

コメント

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