2014/10/11

気圧計

台風が直撃しそうな感じなので、秋月の通販で気圧センサーモジュールを買ってみた。

LPS331 というセンサーが使用されているらしい。インタフェースは I2C。

以前買った温度センサーモジュールと配線を共有させる必要があるので、

image

こんな感じの単純な回路をユニバーサル基板で作った。JP1 は Raspberry Pi に繋ぐためのピンヘッダ。JP2 は温度センサー用のソケット。IC1 は今回買った気圧センサーを刺すためのソケット。

ショートのチェックをして、さっそくモジュール刺して使ってみる。

pi@raspberrypi ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --

0x18 は温度センサー。0x5d が今回の気圧センサー。

説明書によると、まずは WHO_AM_I レジスタ(0x0F)を読んでみて、値が 0xBB であることを確かめることで接続をチェックするらしい。

pi@raspberrypi ~ $ sudo i2cget -y 1 0x5d 0x0f
0xbb

おっけー。

次に、CTRL_REG1 レジスタ(0x20)に 0b10010000 を書き込むことで、アクティブモードにするらしい。データシートによると、これは気圧と気温を 1 秒に 1 回計測するモードらしい。

pi@raspberrypi ~ $ sudo i2cset -y 1 0x5d 0x20 0x90

あとは PRESS_OUT_H レジスタ(0x2A)、PRESS_OUT_L レジスタ(0x29)、PRESS_POUT_XL_REH レジスタ(0x28)をそれぞれ読み込んで、得られた 24 bit の値を 4096 で割るとヘクトパスカルで気圧が出てくるらしい。

pi@raspberrypi ~ $ sudo i2cget -y 1 0x5d 0x2a; sudo i2cget -y 1 0x5d 0x29; sudo i2cget -y 1 0x5d 0x28
0x3f
0xf9
0x1e

counts = 0x3FF91E = 4192542
pressure = 4192542 / 4096 = 1023.56982421875 [hPa]

いいかんじででてきた。

↑と同じようなことをするスクリプトを Python で書いて、気圧も 1 分ごとにデータベースに記録するようにしてみた。気圧取得部分のスクリプトはこちら。

グラフにしてみた図

image

高気圧が近づいてる感じらしい。

0 件のコメント:

コメントを投稿