アプリ版:「スタンプのみでお礼する」機能のリリースについて

MPU9250をarduino Unoでデータ読み込みをしたいです。
以下のサイトのサンプルプログラムMPU9250_raw.inoを利用していますが、シリアルモニタに「MPU9250 connection failed」となって、データが0しか出てきません。
MPU6050は使った経験はあるのですが、MPU9250は初めてでうまく動かせない状態です。
ネットで検索してもあまり情報が出てこないため、苦慮しています。
現状の接続図も添付します。図はMPU6050ですが、MPU9250を同じ端子に接続しています。
https://github.com/Snowda/MPU9250

「MPU9250をarduino Unoで」の質問画像

質問者からの補足コメント

  • ちなみに、私が購入したMPU9250は、GY9250モジュールです。

    https://github.com/jrowberg/i2cdevlib
    こちらのサイトのプログラムだと、加速度と角速度のデータは送られてきていますが、
    コンパスのデータが三方向とも0でデータ読み出せてない状態です。
    シリアルモニタの最初にconnection failedと出るので、センサー自体の読み込み時点で
    何かしらの問題があるように思えます。

      補足日時:2016/02/10 00:31

A 回答 (3件)

Who am iのレジスタの内容が読み込めているのでハード的には大丈夫だと思います


あとは、
1さんのストロベーリーリナクスさんのリンク先の MPU-9250モジュール説明書のところの
クイックスタートガイドなど参考にプログラムを書けばいいと思います。
    • good
    • 0
この回答へのお礼

それが分からないんですが…

お礼日時:2016/02/15 21:50

http://makers-with-myson.blog.so-net.ne.jp/2014- …
ここのプログラムを入力するか、
『早速、上記のウェブサイトにあるスケッチを動かしてみました。』と書かれている
上のリンクから飛べばプログラムをコピーして貼り付けられます。

そして実行すれば、正しく接続されていればI2Cのアドレスが表示されるはずです。

そして出たアドレスで、

-------------------------------------------------------------------
#include <Wire.h>

void setup()
{
Wire.begin();

Serial.begin(9600);
while (!Serial);
Serial.println("\nWho am i check");
}

void loop()
{
byte error, address,who_am_i_add,data,check;

address = 0x6A;//Scanner で出たアドレスに;

  //who_am_i_add = 0x75;
  // MPU9250_WHO_AM_I 0x75

 who_am_i_add=0x0F;//0x75;にする

check=0xD4;//0x71 who am iの結果の値

Wire.beginTransmission(address);
Wire.write(who_am_i_add);
Wire.endTransmission();

Wire.beginTransmission(address);
Wire.requestFrom(address,1);

byte buffer[1];
int i = 0;
while(Wire.available())
{
buffer[i] = Wire.read();
}
Wire.endTransmission();
if (buffer[i]==check)
{ Serial.println("Ok "+String(buffer[i],HEX));}
else
{ Serial.println("NG "+String(buffer[i],HEX));};

Serial.println("end");

delay(5000);
}
---------------------------------------------------------------------------------
実行したらWho am iが正しければ『Ok 71』とでるはずです。

LIS3DHでやってみて正しく動いたので、

MPU9250用に、
addressはScannerで出たアドレスで、
who_am_i_add=0x75;
check=0x71;
に変更してから実行してみてください。

あと、SCLとSDAのプルアップなどは大丈夫ですよね?
    • good
    • 0
この回答へのお礼

Ok 71
となりました。

とりあえず、ハード的な通信は問題ないということですよね?

お礼日時:2016/02/11 22:42

該当のセンサ、使ったことはありませんが……。



https://strawberry-linux.com/pub/mpu-9250-manual …
>I2Cモードで通信する場合は~CSピンをVDDIOに接続します。
となっていますが……接続しています?

>AD0ピンはI2Cスレーブアドレス設定のピンですので必ずH(=VDDIO), L(=GND)のどちらかに接続します。
というのもあるので、open(未接続)にしておくと問題あり…でしょうね。
どっちに接続するべきなのか?は深く追っていないので判りませんけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>~CSピンをVDDIOに接続
はNCSを3.3Vにつないでも変化無しでした。

>AD0ピン
こちらもGNDにつなぎましたが、変化無しでした。

お礼日時:2016/02/10 00:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!