logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは、汎用のシングルボードコンピューターとして広く利用されています。この記事では、加速度センサーと磁気センサーが一体化された「LSM303DLH」をRaspberry Piに接続し、制御する方法について解説します。LSM303DLHは、方向や傾きの検出などの用途で利用されることがあります。

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

1. LSM303DLHセンサーの概要

LSM303DLHは、加速度センサー(Accelerometer)と磁気センサー(Magnetometer)が統合されたセンサーモジュールです。これにより、3軸の加速度と磁場を同時に測定することが可能です。Raspberry Piと組み合わせることで、様々なプロジェクトに活用できます。

2. LSM303DLHの接続

LSM303DLHをRaspberry Piに接続するには、通常、I2C(Inter-Integrated Circuit)を使用します。センサーモジュールには、VCC(電源)、GND(接地)、SDA(データライン)、SCL(クロックライン)の4つのピンがあります。これらをRaspberry Piの対応するピンに接続します。

3. Pythonコードの作成

Raspberry PiでLSM303DLHを制御するには、Python言語を使用します。以下は、簡単な例としてsmbusライブラリを使用したPythonコードの一例です。

import smbus
import time

# LSM303DLHのI2Cアドレス
LSM303DLH_ADDRESS = 0x1E

# レジスタアドレス
CTRL_REG1_A = 0x20
OUT_X_L_A = 0x28

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

# LSM303DLHの初期設定
bus.write_byte_data(LSM303DLH_ADDRESS, CTRL_REG1_A, 0x27)

# データの読み取り
def read_data(register):
    high = bus.read_byte_data(LSM303DLH_ADDRESS, register)
    low = bus.read_byte_data(LSM303DLH_ADDRESS, register + 1)
    value = (high << 8) + low
    return value

try:
    while True:
        # 加速度データの読み取り
        accel_x = read_data(OUT_X_L_A)
        
        # 加速度データの出力
        print(f"Acceleration X: {accel_x}")

        time.sleep(1)

except KeyboardInterrupt:
    pass

finally:
    bus.close()

このコードでは、LSM303DLHから得られたX軸方向の加速度データを1秒ごとに読み取り、出力します。他の軸や磁気センサーのデータも同様に取得可能です。

4. コードの実行と動作確認

Raspberry PiにLSM303DLHを接続し、作成したPythonコードを実行します。正しく接続されていれば、Raspberry PiがLSM303DLHからのデータを読み取り、コンソールに表示されるはずです。

これで、Raspberry PiにLSM303DLHを接続し、Pythonを使用して簡単な制御を行うための基本的な手順が完了しました。加速度や磁気データの活用方法は、プロジェクトによって異なりますが、このスタートガイドをベースに拡張していくことが可能です。