だいぶ前にラズパイ2で温度・湿度を計測してmuninでグラフ化しましたが、今回は大気圧センサーを使って部屋の大気圧を計測してmuninでグラフ化してみます。
- 【raspberry pi 2】大気圧センサーを使ってmuninでグラフ化 (今このページを見ています)
- ラズパイ2で人感センサーを使って一日の仕事時間を計りたいけど・・・未完成
大気圧センサーのハンダ付け
このセンサーはハンダ付けが必要なのでやってみましたが・・・うまく出来ないんですヨ(汗)

端子名が分かるように裏を表にしてハンダ付けしました。左すみがうまくハンダ付けできてないようす・・・ハンダゴテにハンダが付いてしまってうまくできない。まだまだですな。
大気圧センサー 配線
配線は以下のようにしました。


設置が逆なので今回から分かりやすいようにGPIOが下にくるようにしてみました。
- VCC:1番:3.3V(刺しても刺さなくても同じだった)
- GND:6番
- SCL:5番
- SDA:3番
- CSB:1番:3.3V
- SOD:6番(アース。コレも無くてもイイのかな?接続しなくても計測できた。)

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

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で一定なのでグラフ化してもあまりおもしろくないのかもしれません・・・という落ち。

コメント