Raspberry PiでMPU-6050を使用します

Using the MPU-6050 with the Raspberry Pi

MPU-6050は、ジャイロスコープと加速度計を備えた6軸モーショントラッキングデバイスであり、ロボット工学、ドローン、IoTプロジェクトなどのモーション注目アプリケーションに最適です。このガイドでは、MPU-6050をRaspberry PIで接続および使用して、モーションと方向のデータをキャプチャする方法を学びます。


あなたが必要とするもの

  1. Raspberry Pi (GPIOサポートを備えたモデル、例えばPI 3、PI 4)
  2. MPU-6050モジュール
  3. ブレッドボードとジャンパーワイヤ
  4. Raspberry Piまたは接続されたキーボードとモニターへのSSHアクセスを備えたコンピューター
  5. Raspberry PiにインストールされたPython

ステップ1:MPU-6050をRaspberry Piに配線します

MPU-6050は、I2Cプロトコルを使用してRaspberry PIと通信します。

接続

MPU-6050ピン ラズベリーPIピン
VCC 3.3V(ピン1)
GND グラウンド(ピン6)
SDA SDA(ピン3、GPIO2)
SCL SCL(ピン5、GPIO3)

注記: MPU-6050モジュールが3.3Vで動作することを確認してください。ほとんどのモジュールには、電圧レギュレーターが含まれており、5Vで電源を入れることができます。


ステップ2:RaspberryPiでi2cインターフェイスを有効にします

  1. Raspberry Pi構成ツールを開きます。
    sudo raspi-config
    
  2. に移動します インターフェイスオプション> i2c そしてそれを有効にします。
  3. RaspberryPiを再起動します:
    sudo reboot
    

ステップ3:必要なツールとライブラリをインストールします

  1. RaspberryPiを更新します:
    sudo apt update && sudo apt upgrade -y
    
  2. I2Cツールをインストールします。
    sudo apt install -y i2c-tools
    
  3. I2C通信とデータ処理のためにPythonライブラリをインストールします。
    pip install smbus2
    

ステップ4:接続を確認します

  1. 使用 i2cdetect MPU-6050がI2Cバスで検出されることを確認するには:
    sudo i2cdetect -y 1
    
  2. MPU-6050はアドレスに表示されます 0x68 (または 0x69 AD0ピンが高く引っ張られている場合)。そうでない場合:
    • 配線を確認してください。
    • MPU-6050が搭載されていることを確認してください。

ステップ5:MPU-6050のデータの読み取り

次のPythonスクリプトは、MPU-6050の加速度計とジャイロスコープデータを読み取ります。

Pythonコードの例

import smbus2
import time

# MPU-6050 Registers and Address
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43

# Initialize I2C bus
bus = smbus2.SMBus(1)

# Wake up the MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)

def read_raw_data(addr):
    # Read two bytes of data from the given address
    high = bus.read_byte_data(MPU6050_ADDR, addr)
    low = bus.read_byte_data(MPU6050_ADDR, addr+1)
    value = (high << 8) | low
    # Convert to signed value
    if value > 32767:
        value -= 65536
    return value

try:
    while True:
        # Read accelerometer data
        accel_x = read_raw_data(ACCEL_XOUT_H)
        accel_y = read_raw_data(ACCEL_XOUT_H + 2)
        accel_z = read_raw_data(ACCEL_XOUT_H + 4)

        # Read gyroscope data
        gyro_x = read_raw_data(GYRO_XOUT_H)
        gyro_y = read_raw_data(GYRO_XOUT_H + 2)
        gyro_z = read_raw_data(GYRO_XOUT_H + 4)

        # Convert raw data to meaningful values (optional scaling may be needed)
        accel_x_scaled = accel_x / 16384.0
        accel_y_scaled = accel_y / 16384.0
        accel_z_scaled = accel_z / 16384.0

        gyro_x_scaled = gyro_x / 131.0
        gyro_y_scaled = gyro_y / 131.0
        gyro_z_scaled = gyro_z / 131.0

        print(f"Accelerometer: X={accel_x_scaled:.2f}, Y={accel_y_scaled:.2f}, Z={accel_z_scaled:.2f}")
        print(f"Gyroscope: X={gyro_x_scaled:.2f}, Y={gyro_y_scaled:.2f}, Z={gyro_z_scaled:.2f}")

        time.sleep(1)

except KeyboardInterrupt:
    print("Exiting...")

ステップ6:MPU-6050のアプリケーション

  1. モーショントラッキング: ロボット工学またはウェアラブルの動きと向きを追跡します。
  2. 安定化システム: ドローンまたはジンバルにジャイロスコープ安定化を実装します。
  3. ゲーム: モーションベースのゲームコントローラーを作成します。
  4. IoTプロジェクト: モーションデータを使用して、自動化イベントをトリガーします。

トラブルシューティング

  1. 検出されていないデバイス:

    • SDAおよびSCL接続を確認します。
    • Raspberry PiでI2Cインターフェイスが有効になっていることを確認してください。
    • MPU-6050の電源を確認してください。
  2. 不正確な測定値:

    • 各軸のオフセットを実装してセンサーを較正します。
    • センサーが安定した表面に配置されていることを確認してください。
  3. I2Cエラー:

    • I2Cバスに矛盾するデバイスがないことを確認してください。

結論

MPU-6050は、Raspberry PIプロジェクトに正確なモーショントラッキング機能を追加できる汎用性の高いモーションセンサーです。このガイドに従うことにより、ロボット工学、安定化システム、IoTオートメーションなどのアプリケーションにMPU-6050を設定して使用できます。スケーリングとフィルタリングデータを試して、センサーをニーズに合わせて微調整してください!

コメントを残す

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.