logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは小型で高性能なシングルボードコンピュータであり、様々なセンサーやアクチュエーターを利用してIoTプロジェクトやデバイスの制御を行うことができます。本記事では、3軸加速度センサー「ADXL377」をRaspberry Piに接続し、Pythonを使用して制御する手順について解説します。

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

1. ADXL377の概要

ADXL377は、3軸の加速度を測定することができるセンサーです。これを使用することで、物体の傾きや動きを検知することが可能です。Raspberry Piと組み合わせることで、加速度データを取得し、様々なプロジェクトに応用することができます。

2. ADXL377の接続

ADXL377には、電源供給(VCC)、接地(GND)、および3軸のアナログ出力(X、Y、Z)があります。これらをRaspberry Piに接続します。通常、Raspberry PiのGPIOピンに対応するピンに接続します。

3. Pythonコードの作成

ADXL377からのデータを読み取るために、Pythonスクリプトを作成します。以下は、smbusモジュールを使用してI2C通信を行い、ADXL377からデータを受信する例です。

import smbus
import time

# I2Cアドレス
ADXL377_ADDR = 0x53

# レジスタ
DATA_FORMAT = 0x31
POWER_CTL = 0x2D
DATAX0 = 0x32
DATAX1 = 0x33
DATAY0 = 0x34
DATAY1 = 0x35
DATAZ0 = 0x36
DATAZ1 = 0x37

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

# ADXL377の初期設定
bus.write_byte_data(ADXL377_ADDR, DATA_FORMAT, 0x0B)  # ±16gの範囲で設定
bus.write_byte_data(ADXL377_ADDR, POWER_CTL, 0x08)     # 測定モード開始

def read_data(register):
    # 16ビットデータを読み取り
    low_byte = bus.read_byte_data(ADXL377_ADDR, register)
    high_byte = bus.read_byte_data(ADXL377_ADDR, register + 1)
    value = (high_byte << 8) + low_byte

    # 2の補数形式に変換
    if value & (1 << 15):
        value -= 1 << 16

    return value

try:
    while True:
        # X、Y、Z軸の加速度データを取得
        x_acc = read_data(DATAX0)
        y_acc = read_data(DATAY0)
        z_acc = read_data(DATAZ0)

        # 取得したデータを表示
        print(f"X軸加速度: {x_acc}  Y軸加速度: {y_acc}  Z軸加速度: {z_acc}")

        time.sleep(1)  # 1秒待機

except KeyboardInterrupt:
    pass
finally:
    # プログラム終了時にI2C通信を閉じる
    bus.write_byte_data(ADXL377_ADDR, POWER_CTL, 0x00)  # 測定モード終了
    bus.close()

このコードは、ADXL377からX、Y、Z軸の加速度データを1秒ごとに取得し、表示します。必要に応じてこのデータを使って様々なプロジェクトを構築することができます。

4. コードの実行と確認

Pythonスクリプトを実行してADXL377からのデータが正しく表示されるか確認します。実行が成功すると、Raspberry PiがADXL377を制御し、加速度データを読み取っていることがわかります。

これで、Raspberry PiにADXL377を接続し、Pythonを使用して簡単な制御を行う基本的な手順が完了しました。ADXL377のデータを活用して、様々なプロジェクトを構築してみましょう。