logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piはコンパクトでパワフルなシングルボードコンピュータであり、様々なセンサーやモジュールを利用してIoTプロジェクトを構築するのに適しています。この記事では、「LPS25H」と呼ばれる気圧センサーをRaspberry Piに接続し、制御する方法について解説します。

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

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

LPS25Hは、気圧および温度を計測するためのデジタル気圧センサーです。I2CまたはSPI通信プロトコルを使用して、Raspberry Piと通信します。このセンサーを使用することで、大気圧の変化や高度の計測が可能になります。

2. LPS25Hの接続

まず、LPS25HをRaspberry Piに接続します。通常、LPS25HにはVCC、GND、SDA、SCLの4つのピンがあります。

  • VCC: 3.3Vの電源
  • GND: 接地
  • SDA: I2Cのデータライン
  • SCL: I2Cのクロックライン

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

3. Pythonコードの作成

Raspberry PiでLPS25Hを制御するには、Pythonを使用します。以下は、smbusモジュールを使ってLPS25HとI2C通信を行う基本的な例です。

import smbus
import time

# LPS25HのI2Cアドレス
LPS25H_I2C_ADDR = 0x5C

# LPS25Hレジスタアドレス
PRESS_OUT_XL = 0x28
PRESS_OUT_L = 0x29
PRESS_OUT_H = 0x2A

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

# LPS25Hの初期化
def init_lps25h():
    # CTRL_REG1 レジスタの設定(データレートなどの設定)
    bus.write_byte_data(LPS25H_I2C_ADDR, 0x20, 0x90)

# 気圧の取得
def read_pressure():
    # 24ビットの気圧データを読み込む
    pressure_xl = bus.read_byte_data(LPS25H_I2C_ADDR, PRESS_OUT_XL)
    pressure_l = bus.read_byte_data(LPS25H_I2C_ADDR, PRESS_OUT_L)
    pressure_h = bus.read_byte_data(LPS25H_I2C_ADDR, PRESS_OUT_H)

    # 16ビットに変換
    pressure_raw = (pressure_h << 16) | (pressure_l << 8) | pressure_xl

    return pressure_raw / 4096.0

# メインプログラム
if __name__ == "__main__":
    try:
        init_lps25h()

        while True:
            pressure = read_pressure()
            print(f"気圧: {pressure} hPa")
            time.sleep(1)

    except KeyboardInterrupt:
        pass
    finally:
        print("プログラムを終了します")

このコードは、LPS25Hから気圧を読み取り、1秒ごとに表示するものです。必要に応じて、温度データを読み取るなど、さまざまなセンサーデータを取得できます。

4. コードの実行と確認

コードを保存し、Raspberry Piで実行します。気圧の値が表示されれば、LPS25Hが正常に接続され、制御されていることが確認できます。

これで、Raspberry PiにLPS25Hを接続し、Pythonコードを使用して気圧データを取得する基本的な手順が完了しました。これをベースにして、気象情報の収集やその他のプロジェクトに応用することが可能です。