- Published on
Raspberry Piに「ADXL345」を接続し制御する
1610文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは、小型で手軽に利用できるシングルボードコンピューターで、様々なセンサーやモジュールを接続して利用することができます。この記事では、加速度センサー「ADXL345」をRaspberry Piに接続し、制御する方法について解説します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
1. ADXL345の概要
ADXL345は、3軸の加速度を測定するセンサーで、小型で低消費電力ながら高精度な計測が可能です。I2C通信を使用してデータを取得し、Raspberry Piなどのシングルボードコンピューターに接続して使用します。
2. ADXL345の接続
ADXL345をRaspberry Piに接続するには、通常、4つのピンがあります。
- VCC: 3.3Vの電源
- GND: 接地
- SDA: I2Cデータライン
- SCL: I2Cクロックライン
これらをRaspberry Piの対応するピンに接続します。Raspberry Pi 4の場合、I2Cピンはデフォルトで有効になっていますが、Raspberry Pi 3以前のモデルではraspi-config
を使用してI2Cを有効にする必要があります。
3. Pythonコードの作成
ADXL345を制御するためには、Python言語を使用するのが一般的です。以下は、smbus
モジュールを使用してADXL345からデータを読み取り、コンソールに表示する簡単な例です。
import smbus
import time
# ADXL345のI2Cアドレス
ADXL345_ADDRESS = 0x53
# レジスタアドレス
POWER_CTL = 0x2D
DATA_FORMAT = 0x31
DATAX0 = 0x32
DATAX1 = 0x33
DATAY0 = 0x34
DATAY1 = 0x35
DATAZ0 = 0x36
DATAZ1 = 0x37
# I2Cバスの初期化
bus = smbus.SMBus(1)
# ADXL345の初期化
bus.write_byte_data(ADXL345_ADDRESS, POWER_CTL, 0x08)
bus.write_byte_data(ADXL345_ADDRESS, DATA_FORMAT, 0x0B)
def read_acceleration_data(register):
low_byte = bus.read_byte_data(ADXL345_ADDRESS, register)
high_byte = bus.read_byte_data(ADXL345_ADDRESS, register + 1)
value = (high_byte << 8) + low_byte
if value & (1 << 16 - 1):
value -= 1 << 16
return value
try:
while True:
x = read_acceleration_data(DATAX0)
y = read_acceleration_data(DATAY0)
z = read_acceleration_data(DATAZ0)
print(f"X: {x}, Y: {y}, Z: {z}")
time.sleep(1)
except KeyboardInterrupt:
print("プログラムを終了します")
このPythonコードは、ADXL345からX、Y、Z軸の加速度データを読み取り、1秒ごとにコンソールに表示します。
4. コードの実行と動作確認
Pythonコードを実行して、ADXL345からのデータが正しく表示されることを確認します。加速度センサーの傾きや振動などによって、値が変化することが期待されます。
これで、Raspberry PiにADXL345を接続し、Pythonを使用して制御する基本的な手順が完了しました。このセンサーデータを活用して、様々なプロジェクトや応用を試みてみることができます。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚