- Published on
Raspberry Piに「ADXL377」を接続し制御する
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは小型で高性能なシングルボードコンピュータであり、様々なセンサーやアクチュエーターを利用してIoTプロジェクトやデバイスの制御を行うことができます。本記事では、3軸加速度センサー「ADXL377」をRaspberry Piに接続し、Pythonを使用して制御する手順について解説します。
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のデータを活用して、様々なプロジェクトを構築してみましょう。