modalsoul’s blog

これは“失敗”と呼べるかもしれないが、ぼくは“学習体験”と呼びたい

Raspberry Pi Zero WHとMPU9250で、9軸センサー(ジャイロ、加速度、磁気)を取得する

9軸センサーが安かったので、ポチってRaspberry Pi Zeroと繋いでみた1

MPU9250

はんだ付け

付属のピンをはんだ付け

小手とはんだ、はんだ吸取線、簡易こて台がセットになったものをポチった [asin:B0072QN66U:detail]

はんだ付けなんて小学校以来?くらいだけど、なんとかなった

配線

Raspberry Pi Zero MPU9250
3V3 VCC
GPIO02 SDA
GPIO03 SCL
GND GND

I2Cの有効化

sudo raspi-config
  • 5 Interfacing Options
  • P5 I2C
  • YES

でI2Cを有効化

バイスのチェック

I2Cデバイスとして認識されているかをチェック

i2ctoolsのインストール

sudo apt install i2c-tools

I2Cデバイス一覧の表示

sudo i2cdetect -y 1

これで68が表示されていればOK

pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

プログラム

pipのインストール

sudo apt install python-pip python-smbus

ライブラリのインストール

github.com

sudo pip install FaBo9Axis_MPU9250

動作確認

import FaBo9Axis_MPU9250
import time

mpu9250 = FaBo9Axis_MPU9250.MPU9250()

while True:
  accel = mpu9250.readAccel()
  print('accel:' + str(accel))
  gyro = mpu9250.readGyro()
  print('gyro:' + str(gyro))
  magnet = mpu9250.readMagnet()
  print('magnet:' + str(magnet))
  time.sleep(0.1)
pi@raspberrypi:~$ python scan.py
accel:{'y': 0.101, 'x': -0.957, 'z': -0.111}
gyro:{'y': -0.488, 'x': 3.143, 'z': 0.771}
magnet:{'y': 50.33, 'x': -43.91, 'z': 36.58}
accel:{'y': 0.1, 'x': -0.958, 'z': -0.108}
gyro:{'y': -0.328, 'x': 3.059, 'z': 0.801}
magnet:{'y': 0, 'x': 0, 'z': 0}
...

これでセンサーの値が取得できた