お天気時計の作成(その7:大気圧センサ)

Raspberry pi zero 2Wを入手したので備忘録として書きます。

 

今回は大気圧センサ(BMP280)のGY-BMP280-3.3モジュールを使用して大気圧を測定します

後々大気圧の変化をLCD上にお知らせできるようにしたいと思います。

大気圧センサ

Amazonで下記の大気圧センサを購入しました。

 

 

Raspberry pi zeroとの接続

Raspberry Pi

BMP280

3.3V(1)

Vcc

GND(9)

GND

GPIO3(5)

SCL

GPIO2(3)

SDA

 

Raspberry Piの設定

I2Cの接続設定

I2Cの接続の設定は前回のブログ(その6)を参考にしてください。

I2Cdetectコマンド実行すると下記のように接続しているI2Cデバイスのアドレスが表示されます。

今回接続した大気圧センサは76hです。

ライブラリのインストール

GitHubのbmp280-pythonを参考にしています。

以下の手順でインストールします。


pip3 install bmp280
git clone https://github.com/pimoroni/bmp280-python
cd bmp280-python
./install.sh --unstable

 

サンプルプログラムの実行

サンプルプログラムのtemperature-and-pressure.pyは下記です。


#!/usr/bin/env python

import time

from smbus2 import SMBus

from bmp280 import BMP280

print("""temperature-and-pressure.py - Displays the temperature and pressure.

Press Ctrl+C to exit!

""")

# Initialise the BMP280
bus = SMBus(1)
bmp280 = BMP280(i2c_dev=bus)

while True:
    temperature = bmp280.get_temperature()
    pressure = bmp280.get_pressure()
    print(f"{temperature:05.2f}*C {pressure:05.2f}hPa")
    time.sleep(1)

 

実行してみました。

温度と気圧がちょっとおかしいです。

 

別のライブラリのインストール

別のライブラリでも試してみます。


sudo pip3 install adafruit-circuitpython-bmp280

 

サンプルプログラム


import board
import busio
import adafruit_bmp280

i2c = busio.I2C(board.SCL, board.SDA)
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c,0x76)

print("Temperature: {} degrees Celsius".format(bmp280.temperature))
print("Pressure: {} hPa".format(bmp280.pressure))
print("Altitude: {} meters".format(bmp280.altitude))

 

実行結果


>>> %Run -c $EDITOR_CONTENT
Temperature: -137.9134765625 degrees Celsius
Pressure: 519.6263066551096 hPa
Altitude: 5294.204771306099 meters
>>>

先ほどと同じ結果です

壊れているたかも別のセンサも確認してみます。

 

別のセンサで確認しました。


Temperature: 28.447265625 degrees Celsius
Pressure: 1003.9091914551309 hPa
Altitude: 77.97827414697777 meters

期待通りの値を出力しました。

最初に使用したセンサは壊れているようです。

もう一つのライブラリの方も期待通りの値になりました。

・温度の確認:他の温度センサの値は27.4℃でしたのでほぼ同じ結果

・気圧の確認:天気予報を確認したところ、1001hPaでしたのでほぼ同じ結果

 

この大気圧センサは、3つ購入したのですが正常動作したのは1つでした。

 1つ目:測定値異常

 2つ目:正常動作

 3つ目:反応無し(I2Cdetectコマンド反応なし)

返品することにします。

 

以上