logo
Published on

Raspberry Piに「BMP388」を接続し制御する

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは小型で高性能なシングルボードコンピュータであり、様々なセンサーやモジュールとの組み合わせによって、さまざまなプロジェクトを実現することができます。この記事では、「BMP388」と呼ばれる気圧センサーをRaspberry Piに接続し、制御する方法について解説します。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

1. BMP388気圧センサーの概要

BMP388は、気圧と温度を測定するための高精度なセンサーモジュールです。Raspberry Piと組み合わせることで、大気圧や気温のモニタリング、気象情報の取得などの用途に利用できます。

2. BMP388の接続

BMP388をRaspberry Piに接続するために、以下のように接続します。

  • VCC(赤色): 3.3Vの電源
  • GND(茶色): 接地
  • SDA(白色または緑色): I2Cのデータライン
  • SCL(黄色): I2Cのクロックライン

これらの線をRaspberry Piの対応するピンに接続します。

3. Raspberry Piコードの作成

BMP388を制御するためのPythonコードを作成します。Raspberry Piには既にsmbusモジュールがインストールされているため、これを使用してI2C通信を行います。以下は、BMP388から気圧と温度を読み取る簡単な例です。

import smbus
import time

# BMP388のI2Cアドレス
BMP388_ADDRESS = 0x77

# I2Cバスの初期化
bus = smbus.SMBus(1)

def read_bmp388():
    # データ読み取りコマンド
    bus.write_byte_data(BMP388_ADDRESS, 0x3D, 0x5E)

    # 20ms待機(データの読み取りが完了するまで)
    time.sleep(0.02)

    # 気圧データ読み取り
    pressure_raw = (bus.read_byte_data(BMP388_ADDRESS, 0x1E) << 16) | (bus.read_byte_data(BMP388_ADDRESS, 0x1F) << 8) | bus.read_byte_data(BMP388_ADDRESS, 0x20)

    # 温度データ読み取り
    temperature_raw = (bus.read_byte_data(BMP388_ADDRESS, 0x21) << 12) | (bus.read_byte_data(BMP388_ADDRESS, 0x22) << 4) | (bus.read_byte_data(BMP388_ADDRESS, 0x23) >> 4)

    # データ変換
    pressure = pressure_raw / 1048576.0
    temperature = temperature_raw / 100.0

    return pressure, temperature

# メインプログラム
while True:
    pressure, temperature = read_bmp388()
    print(f"気圧: {pressure} Pa, 温度: {temperature} ℃")
    time.sleep(1)

4. コードの実行と確認

作成したPythonコードを保存し、Raspberry Pi上で実行します。これにより、BMP388から取得した気圧と温度が1秒ごとに表示されるはずです。

これで、Raspberry PiにBMP388を接続し、気圧と温度を制御するための基本的な手順が完了しました。気象観測や環境モニタリングのプロジェクトに応用するなど、様々なアプリケーションで活用できます。