logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは豊富なGPIOピンを搭載しており、様々なセンサーやデバイスを制御するのに理想的なプラットフォームです。この記事では、優れた加速度計とジャイロスコープを組み合わせた「LSM6DS3」センサーをRaspberry Piに接続し、制御する方法について解説します。

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

1. LSM6DS3センサーの概要

LSM6DS3は、加速度計とジャイロスコープを1つのチップに統合した高性能なIMU(慣性計測装置)です。3軸の加速度計と3軸のジャイロスコープが搭載されており、小型でありながら高い精度を提供します。このセンサーを使用することで、Raspberry Piで傾きや回転などの動きを検知できます。

2. LSM6DS3の接続

まず、LSM6DS3をRaspberry Piに接続します。通常、以下のようなピンがあります。

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

これらを対応するRaspberry Piのピンに接続します。I2C通信を使用するため、Raspberry Pi上のI2Cピン(通常はGPIO2とGPIO3)を使用します。

3. Pythonコードの作成

Raspberry PiでPythonを使用してLSM6DS3を制御します。まず、smbusモジュールを使ってI2C通信を有効にし、その後、LSM6DS3からデータを読み取る簡単なスクリプトを作成します。

import smbus
import time

# LSM6DS3のI2Cアドレス
LSM6DS3_ADDR = 0x6A

# Register addresses
CTRL1_XL = 0x10
CTRL2_G = 0x11
OUTX_L_XL = 0x28
OUTY_L_XL = 0x2A
OUTZ_L_XL = 0x2C

# Initialize I2C
bus = smbus.SMBus(1)

def setup():
    # Set accelerometer and gyroscope configuration
    bus.write_byte_data(LSM6DS3_ADDR, CTRL1_XL, 0x40)  # Accelerometer: 416 Hz, ±2g
    bus.write_byte_data(LSM6DS3_ADDR, CTRL2_G, 0x40)   # Gyroscope: 416 Hz, ±125dps

def read_sensor_data():
    # Read accelerometer data
    x_accel = bus.read_i2c_block_data(LSM6DS3_ADDR, OUTX_L_XL, 2)
    y_accel = bus.read_i2c_block_data(LSM6DS3_ADDR, OUTY_L_XL, 2)
    z_accel = bus.read_i2c_block_data(LSM6DS3_ADDR, OUTZ_L_XL, 2)

    # Convert data to acceleration values
    x_accel_value = (x_accel[1] << 8 | x_accel[0]) / 16384.0
    y_accel_value = (y_accel[1] << 8 | y_accel[0]) / 16384.0
    z_accel_value = (z_accel[1] << 8 | z_accel[0]) / 16384.0

    return x_accel_value, y_accel_value, z_accel_value

if __name__ == "__main__":
    setup()

    try:
        while True:
            x, y, z = read_sensor_data()
            print(f"X-Accel: {x:.2f} g, Y-Accel: {y:.2f} g, Z-Accel: {z:.2f} g")
            time.sleep(1)

    except KeyboardInterrupt:
        print("\nProgram terminated by user.")

4. スクリプトの実行と動作確認

上記のPythonスクリプトをRaspberry Piに保存し、実行します。LSM6DS3からの加速度データが表示されるはずです。傾きや振動など、異なる動きに応じてセンサーが正しく動作することを確認してください。

これで、Raspberry PiにLSM6DS3を接続し、Pythonコードを使用してセンサーデータを取得する基本的な手順が完了しました。この情報を活用して、さまざまなプロジェクトやアプリケーションを開発することができます。