ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

MPU-6050(加速度・ジャイロセンサ)を使ってみる

ラズペリーパイ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)
ピン配置図参考

pinout.xyz



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}