Home Made Garbage

モーションセンサ MPU9250 の DMP 動作確認

ホーム
電子工作
Raspberry Pi
IOT
WEB

以前、各種モーションセンサを比較してみたのですが

モーションセンサ比較 - MPU6050 vs MPU9250 vs BNO055 –

9軸センサMPU9250のDMP動作が確認できず断念しておりました。
DMP(Digital Motion Processor)とはモーションセンサMPUシリーズに内蔵された自身の姿勢角を算出する機能です。

今回はsparkfunのライブラリでMPU9250のDMP動作が確認できましたので記載します。

構成

sparkfunのMPU9250のDMPライブラリがARM Cortex-M0ベースの SAMD ファミリのみ対応だったのでマイコンはAdafruit Itsy Bitsy M0 Expressを使用しました。

部品

MPU9250

6軸センサMPU6500(3軸加速度+3軸ジャイロ)と3軸コンパスAK8963を搭載した9軸モーションセンサです。

DMPライブラリとして以下を使用しました。
 https://github.com/sparkfun/SparkFun_MPU-9250-DMP_Arduino_Library

ARM Cortex-M0ベースの SAMDマイコンのみに対応しており、Arduino UNOなどには容量不足でコンパイルできません。。。

ライブラリのプログラム例 MPU9250_DMP_Quaternion を動作させてみました。

ただし26行目は以下のように修正しています。

 

いい感じにクォータニオンが得られています♪

Adafruit Itsy Bitsy M0 Express

Arduino M0シリーズで小さくてかわいいので購入してみました。

スイッチサイエンスのサイトによると、どのピンでもNeoPixel8000個以上を時間消費せずに点灯可能とか記載あるのですごそうですね。。。今度試してみます。

Arduino IDE用設定

以下を参考に実施しました。
 https://learn.adafruit.com/introducing-itsy-bitsy-m0/using-with-arduino-ide

Arduino IDEのボードマネージャで以下のパッケージをインストールします。

  • Arduino SAMD Boards (32-bits ARM Cortex-Mo+)

     
  • Adafruit SAMD Boards

 
インストール後に以下でボードを設定してコンパイルが可能になります。Win7と8はドライバインストールが必要です。

DMP動作確認

以下のMPU6050用のクォータニオンでグラフィック動かすProcessingプログラムを使用して、MPU9250のDMP動作を確認しました。
 https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/Processing/MPUTeapot/MPUTeapot.pde

Arduinoコード

MPU9250_DMP_Quaternion.inoを参考にプログラムしました。

クォータニオンをProcessing用に配列にして送信します。

動作

ProcessingのMPUTeapot.pdeを起動して、実行でMPU9250のDMPによって算出されたクォータニオンで飛行機がうごいきます。

USBポート設定はProcessingコード上でうまいこと実施してください(71行目)。

まとめ

やっとMPU9250でDMP動作が確認できました。オフセット調整などを手動でせずとも安定した姿勢角取得が確認できました。

やったーー!MPU9250はBNO055より安価ですので活用方法ひろがりそうですね!いまのところM0マイコンでしか動かせないが。。

Related Posts

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

TOP