ラズパイで気圧測定
最近、台風の通過の様子などを気圧のプロットで報告する人々が多くいて興味深く見ていたのですが、この度 自分でもやってみようと気圧センサを購入いたしました。
安い!早速 我が家のコンシェルジュのおしゃべりティラノくん(Raspberry Pi Zero)に組み込んでみました。定期的に気圧の報告をするようにしました。
目次
構成
ほぼ これまでのティラノくんと同じ構成で気圧センサを追加しただけです。
変更点
- 気圧センサ追加に伴いサーボの制御線をGPIO3からGPIO19にしました。
- 気圧センサBMP280を追加。I2Cで制御します。
VCC – 3.3V
GND – GND
SCL – GPIO3
SDA – GPIO2
CSB – 接続なし
SDO – GND
参考
Raspberry Pi Zero設定
ティラノくんはRaspberry Pi ZeroにWiFiドングルを使用してネットワークに接続しています。
I2C有効化
ここでは気圧センサBMP280とラズパイはI2Cで通信します。
Raspberry Piの設定でI2Cを有効にします。
pythonコード
以下のBMP280用のpythonコードを参考にプログラミングしました。
https://github.com/SWITCHSCIENCE/BME280/blob/master/Python27/bme280_sample.py
smbus2ライブラリも必要となりますのでインストールします。
- bme280_sample.pyのインストール
wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py - smbus2ライブラリのインストール
sudo pip install smbus2==0.1.3
bme280_sample.pyの修正
ティラノくんに発話させるためにセンサから気圧を受け取って発話内容を生成します。
bme280_sample.py内のcompensate_P(adc_P)の最後の測定値出力を以下のように修正しました。
sys.stdout.write("今の気圧は、%dヘクトパスカルだよ" % (pressure/100))
参考
Node-RED
ティラノくんはNode-REDでAquesTalk を用いて定期的に発話させています。
「歯磨きしなさい、歯磨きしなさい」
「宿題やった?」
「もう夜だから、布団に入りなさい。早く、寝なさい」
などなど、毎日元気におしゃべりして もうすっかり家族の一員です。
ここではこれらの定期発話の後に気圧の報告も追加しました。
赤枠で囲んだ部分が今回追加した箇所です。
定期発話のあとに先ほど修正したbme280_sample.pyで気圧の発話内容を生成してAquesTalk で発話させています。
動作
我が家のコンシェルジュ ティラノくんの定期発話に気圧の報告も追加しました。 pic.twitter.com/z23UOnXnTp
— HomeMadeGarbage (@H0meMadeGarbage) September 15, 2019
これでティラノくんが気圧の報告も行ってくれるようになりました。気温、天気に加えて気圧と家族の体調との相関などつかめれば面白いかなぁと思っています。