Raspberry PiでMPU9250を使う
- 2019.02.16
- Python Raspberry Pi
海外通販のAli Expressで9軸センサ(加速度、ジャイロ、コンパス)のMPU9250を買ってみたので、Raspberry Piに繋いでみました。
ちなみに、中国から10日くらいで届きました。
接続は簡単で下記の4本です。
MPU9250 <->Raspberry Pi
VCC – 3V3
SCA – GPIO2
SCL – GPIO3
GND – GND
Raspberry PiのI2Cを有効化します。
デフォルトでは無効だったと思います。
1 |
sudo raspi-config |
上記のコマンドで、config画面を出して、Interfacing Options→I2C→Yesを選択。
更に下記リンク先に書かれていることを実行していきます。
https://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi/configuring-your-pi-for-i2c
以下のコマンドで必要な物をインストールします。
1 2 |
sudo apt-get install python-smbus sudo apt-get install i2c-tools |
センサを接続した状態で以下を実行すると68が認識されていると思います。
1 |
sudo i2cdetect -y 1 |
これで使用準備はできたので、ライブラリをインストールします。
1 |
pip install FaBo9Axis_MPU9250 |
今回は、上記リンク先のサンプルプログラムを少し改造して、
ロール角、ピッチ角を計算してみます。ヨー角は良く分からなかったのでパス。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import FaBo9Axis_MPU9250 import time import sys import numpy as np mpu9250 = FaBo9Axis_MPU9250.MPU9250() try: while True: accel = mpu9250.readAccel() print " ax = " , ( accel['x'] ) print " ay = " , ( accel['y'] ) print " az = " , ( accel['z'] ) gyro = mpu9250.readGyro() print " gx = " , ( gyro['x'] ) print " gy = " , ( gyro['y'] ) print " gz = " , ( gyro['z'] ) mag = mpu9250.readMagnet() print " mx = " , ( mag['x'] ) print " my = " , ( mag['y'] ) print " mz = " , ( mag['z'] ) theta=np.arctan(accel["y"]/np.sqrt(accel["x"]**2+accel["z"]**2)) phi=np.arctan(accel["x"]/accel["z"]) print (theta*180./np.pi) print (phi*180./np.pi) time.sleep(0.1) except KeyboardInterrupt: sys.exit() |
実行するとこんな感じです。
本当は最初にオフセットして数値を整えるべきだと思いますが
今回はテストということでそこまではやっていません。
3ドルくらいで買えてちゃんと動作したので満足です。
ちなみに2個買って、両方共動きました。
-
前の記事
Raspberry Piでサイマルラジオを聞く 2019.02.11
-
次の記事
Arduinoと超音波センサを使ってお掃除ロボットを作る 2019.03.04