ラズペリーパイ5で MPU-6050 (加速度・ジャイロセンサ)を使ってみたのでその時のメモをここに残します。
環境
Raspberry Pi 5 に Ubuntu 24.10 を入れてます。
$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.10" NAME="Ubuntu" VERSION_ID="24.10" VERSION="24.10 (Oracular Oriole)" VERSION_CODENAME=oracular ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=oracular LOGO=ubuntu-logo
準備
センサ取り付け
MPU-6050 ピン名 | Raspberry Pi 5 GPIO ピン(例) |
------------ | ------------------------- |
VCC | 3.3V または 5V(センサ仕様による) |
GND | GND |
SDA | GPIO2 (Pin 3) |
SCL | GPIO3 (Pin 5) |
AD0 | GND(=0x68)または VCC(=0x69) |
ピン配置図参考
MPU-6050(加速度・ジャイロセンサ)を Raspberry Pi 5 上の Ubuntu 24.10 で使うには、以下の手順で I2C 通信を有効にします。
ステップ 1: I2C を有効にする
Ubuntu 24.10 では raspi-config は通常使えません。手動で有効化します。
I2C ドライバをロード
sudo apt install -y i2c-tools
「/boot/firmware/config.txt」 を編集して I2C を有効にします。
sudo vi /boot/firmware/config.txt
以下を追加または有効化します。
dtparam=i2c_arm=on
ステップ 2: I2C デバイスを確認
再起動後、MPU-6050 を接続し、I2C バスに見えるか確認します。
sudo i2cdetect -y 1
実行例は以下の通りです。
test@test-desktop:~$ sudo i2cdetect -y 1 [sudo] password for test: 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
0x68 や 0x69 が表示されれば、MPU-6050 が見えています。
ステップ 3: Python ライブラリのインストール
sudo apt install -y python3-smbus pip install mpu6050-raspberrypi
ステップ 4: Python サンプルコード
from mpu6050 import mpu6050 sensor = mpu6050(0x68) accel_data = sensor.get_accel_data() gyro_data = sensor.get_gyro_data() print("Accelerometer:", accel_data) print("Gyroscope:", gyro_data)
実行例は以下の感じです。
test@test-desktop:~$ python3 sample.py Accelerometer data: {'x': 0.5099649536132812, 'y': -0.33518823242187495, 'z': 11.602301245117188} Gyroscope data: {'x': -3.8702290076335877, 'y': 0.32061068702290074, 'z': -0.25190839694656486}