【raspberry pi 2】大気圧センサーを使ってmuninでグラフ化・人感センサーを使って一日の仕事時間を計測したい

だいぶ前にラズパイ2で温度・湿度を計測してmuninでグラフ化しましたが、今回は大気圧センサーを使って部屋の大気圧を計測してmuninでグラフ化してみます。

この記事は複数のページに別れています
  1. 【raspberry pi 2】大気圧センサーを使ってmuninでグラフ化 (今このページを見ています)
  2. ラズパイ2で人感センサーを使って一日の仕事時間を計りたいけど・・・未完成

大気圧センサーのハンダ付け

このセンサーはハンダ付けが必要なのでやってみましたが・・・うまく出来ないんですヨ(汗)

rasppi2 大気圧センサーハンダ付け

端子名が分かるように裏を表にしてハンダ付けしました。左すみがうまくハンダ付けできてないようす・・・ハンダゴテにハンダが付いてしまってうまくできない。まだまだですな。

大気圧センサー 配線

配線は以下のようにしました。

Raspberry Pi Documentation - Raspberry Pi OS
The official documentation for Raspberry Pi computers and microcontrollers
physical-pin-numbers

設置が逆なので今回から分かりやすいようにGPIOが下にくるようにしてみました。

  • VCC:1番:3.3V(刺しても刺さなくても同じだった)
  • GND:6番
  • SCL:5番
  • SDA:3番
  • CSB:1番:3.3V
  • SOD:6番(アース。コレも無くてもイイのかな?接続しなくても計測できた。)
rasppi2_ブレッドボード

大気圧計測

以下の設定を全て参考(猿真似)で設定しました。

Raspberry Pi 2で温湿度・気圧センサのBME280をPythonから使う - Qiita
スイッチサイエンスから温湿度・気圧センサのBME280が発売されています。同じBosch製のBMP180に比べると湿度も計測できます。BME280一つあれば環境センサとして便利に使えそうです。残念なことにBoschからはCのBME28...
sudo i2cdetect -y 1

Error: Could not open file `/dev/i2c-92′ or `/dev/i2c/92′: No such file or directory

と出るので以下のように設定する。

成功した設定

sudo vim /boot/config.txt

以下のような行があるので「dtparam=i2c_arm=on」にする

## i2c_arm
 ## Enable the ARM's i2c interface
 ##
 ## Default off.
 ##
 dtparam=i2c_arm=on

それと、以下のファイルに追加。

sudo vim /etc/modules
i2c-dev #追加

最後にリブートすると設定が反映された。

失敗した設定

sudo vim /boot/config.txt

以下を追加したら・・・Ubuntu自体が起動しなくなったので(汗)MicroSDカードを他のPCに刺してconfig.txtを開いて以下の項目を削除したら起動するようになった。

device_tree=bcm2708-rpi-b.dtb
 device_tree_param=i2c1=on
 device_tree_param=spi=on

どうやらこの設定は初代ラズパイのらしい。

以下の設定もあったけど意味なかった。

sudo vim /boot/cmdline.txt
最後に追加
bcm2708.vc_i2c_override=
sudo vim /etc/modules-load.d/raspberrypi.conf
 新たに追加
 i2c-bcm2708
 i2c-dev

再度 i2cdetect 実行してみる

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

うまくいった!

サンプルコードを使う

適当なディレクトリを作ってWgetでスイッチサイエンスが作ってくれたサンプルコードをダウンロード

mkdir sample
cd sample
wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py
sudo python bme280_sample.py

いよいよ実行!すると・・・

Traceback (most recent call last):
 File "bme280_sample.py", line 3, in <module>
 from smbus2 import SMBus
 ImportError: No module named smbus2

こんなエラーが出る↑

from smbus2 import SMBus

「subus2」がエラーになっているようです。↑の行を編集

from smbus import SMBus

「2」を消したらうまくいった。(参考

sudo python bme280_sample.py
temp : 36.59  ℃
pressure : 1016.56 hPa
hum :   0.00 %

温度高めの湿度が取得できてない。配線がおかしいみたい。

Traceback (most recent call last):
  File "bme280_sample.py", line 138, in <module>
    setup()
  File "bme280_sample.py", line 133, in setup
    writeReg(0xF2,ctrl_hum_reg)
  File "bme280_sample.py", line 19, in writeReg
    bus.write_byte_data(i2c_address,reg_address,data)
IOError: [Errno 5] Input/output error

配線変えたらこうなった(汗)

スクリプト改造

仕方がない大気圧のみ正常のよう?なのでこのまま大気圧を取得してグラフ化しましょう。

と言うよりそもそも製品が違う?ようなので大気圧しか計測できないものなのかもしれません。

cp bme280_sample.py pressure.py
vim pressure.py

bme280_sample.pyを少し変えて数値のみが表示されるようにする。

#print "temp : %-6.2f ℃" % (temperature)
print "%7.2f" % (pressure/100) #大気圧は数値のみプリントする
#print "hum : %6.2f %" % (var_h)

試してみます↓

sudo python pressure.py
1017.07

数値のみの状態になりました。

出来たスクリプトをコピーして、実行できるようにする。

sudo cp pressure.py /usr/local/bin

munin 定期的に動作させるスクリプト

sudo vim /usr/share/munin/plugins/pressure

以下のように追加、このページの温度・湿度のスクリプトをちょっと変えただけ。

#!/bin/sh
#%# family=auto
#%# capabilities=autoconf
GETNUM=`python /usr/local/bin/pressure.py 22 4`
if [ "$1" = "autoconf" ]; then
 if [ -n ${GETNUM} ] ; then
 echo yes
 exit 0
 else
 echo no
 exit 0
 fi
fi
if [ "$1" = "config" ]; then
 echo 'graph_title pressure'
 echo 'graph_args -r --lower-limit 0'
 echo 'graph_vlabel hPa'
 echo 'graph_category Weather'
 echo 'total.label pressure'
 echo 'total.min 0'
 echo 'total.draw LINE2'
 echo 'total.type GAUGE'
 exit 0
fi
echo "total.value $GETNUM";

スクリプトのシンボリックリンク

sudo ln -s /usr/share/munin/plugins/pressure /etc/munin/plugins/pressure

パーミッションの変更

cd /usr/share/munin/plugins/
sudo chmod 755 pressure

root権限で動作するように設定

sudo vim /etc/munin/plugin-conf.d/pressure
[pressure]
user root

munin再起動

/etc/init.d/munin-node restart

muninでグラフ確認

で、完成してmuninで表示させました。大気圧はほぼ1000hPaで一定なのでグラフ化してもあまりおもしろくないのかもしれません・・・という落ち。

rasppi2 大気圧 完成

コメント

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