logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piはシングルボードコンピュータであり、多くのセンサーやデバイスと組み合わせて様々なプロジェクトを実現することができます。この記事では、加速度センサー「LIS3DH」をRaspberry Piに接続し、制御する方法について解説します。

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

1. LIS3DH加速度センサーの概要

LIS3DHは、小型で低消費電力な3軸加速度センサーです。Raspberry Piと組み合わせることで、デバイスの傾きや振動などの動きを検知することができます。このセンサーは、I2CまたはSPIを介して通信することが一般的です。

2. LIS3DHの接続

まず、LIS3DHをRaspberry Piに接続します。LIS3DHは通常、4つの線があります。

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

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

3. Pythonコードの作成

Raspberry PiではPythonがよく利用されるため、LIS3DHを制御するためのPythonコードを書きます。以下は、LIS3DHがI2Cで接続された場合の例です。

import smbus
import time

# LIS3DHのI2Cアドレス
LIS3DH_ADDR = 0x19

# I2Cのバス番号
bus = smbus.SMBus(1)

def read_acceleration():
    # 制御レジスタにアクセスし、3軸の加速度データを読み取る
    data = bus.read_i2c_block_data(LIS3DH_ADDR, 0x28 | 0x80, 6)
    
    # 16ビットの2の補数形式でデータを変換
    x = (data[1] << 8 | data[0]) >> 4
    y = (data[3] << 8 | data[2]) >> 4
    z = (data[5] << 8 | data[4]) >> 4
    
    return x, y, z

try:
    while True:
        x, y, z = read_acceleration()
        print(f"X: {x}, Y: {y}, Z: {z}")
        time.sleep(1)

except KeyboardInterrupt:
    pass

このコードは、LIS3DHから3軸の加速度データを読み取り、1秒ごとに表示する単純な例です。必要に応じてコードを拡張し、検知した加速度に基づいたプロジェクトを構築することができます。

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

最後に、Raspberry Piにコードを保存し、実行してLIS3DHが正しく動作しているか確認します。コンソールに表示される加速度データが期待通りであれば、LIS3DHのRaspberry Piへの接続と基本的な制御が成功しています。