- Published on
Raspberry Piに「LSM303DLH」を接続し制御する
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは、汎用のシングルボードコンピューターとして広く利用されています。この記事では、加速度センサーと磁気センサーが一体化された「LSM303DLH」をRaspberry Piに接続し、制御する方法について解説します。LSM303DLHは、方向や傾きの検出などの用途で利用されることがあります。
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を使用して簡単な制御を行うための基本的な手順が完了しました。加速度や磁気データの活用方法は、プロジェクトによって異なりますが、このスタートガイドをベースに拡張していくことが可能です。