MPU-6050は、ジャイロスコープと加速度計を備えた6軸モーショントラッキングデバイスであり、ロボット工学、ドローン、IoTプロジェクトなどのモーション注目アプリケーションに最適です。このガイドでは、MPU-6050をRaspberry PIで接続および使用して、モーションと方向のデータをキャプチャする方法を学びます。
あなたが必要とするもの
- Raspberry Pi (GPIOサポートを備えたモデル、例えばPI 3、PI 4)
- MPU-6050モジュール
- ブレッドボードとジャンパーワイヤ
- Raspberry Piまたは接続されたキーボードとモニターへのSSHアクセスを備えたコンピューター
- 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インターフェイスを有効にします
- Raspberry Pi構成ツールを開きます。
sudo raspi-config
- に移動します インターフェイスオプション> i2c そしてそれを有効にします。
- RaspberryPiを再起動します:
sudo reboot
ステップ3:必要なツールとライブラリをインストールします
- RaspberryPiを更新します:
sudo apt update && sudo apt upgrade -y
- I2Cツールをインストールします。
sudo apt install -y i2c-tools
- I2C通信とデータ処理のためにPythonライブラリをインストールします。
pip install smbus2
ステップ4:接続を確認します
- 使用
i2cdetect
MPU-6050がI2Cバスで検出されることを確認するには:sudo i2cdetect -y 1
- 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のアプリケーション
- モーショントラッキング: ロボット工学またはウェアラブルの動きと向きを追跡します。
- 安定化システム: ドローンまたはジンバルにジャイロスコープ安定化を実装します。
- ゲーム: モーションベースのゲームコントローラーを作成します。
- IoTプロジェクト: モーションデータを使用して、自動化イベントをトリガーします。
トラブルシューティング
-
検出されていないデバイス:
- SDAおよびSCL接続を確認します。
- Raspberry PiでI2Cインターフェイスが有効になっていることを確認してください。
- MPU-6050の電源を確認してください。
-
不正確な測定値:
- 各軸のオフセットを実装してセンサーを較正します。
- センサーが安定した表面に配置されていることを確認してください。
-
I2Cエラー:
- I2Cバスに矛盾するデバイスがないことを確認してください。
結論
MPU-6050は、Raspberry PIプロジェクトに正確なモーショントラッキング機能を追加できる汎用性の高いモーションセンサーです。このガイドに従うことにより、ロボット工学、安定化システム、IoTオートメーションなどのアプリケーションにMPU-6050を設定して使用できます。スケーリングとフィルタリングデータを試して、センサーをニーズに合わせて微調整してください!