Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

傾斜計 (v0.1) > 動作せず > INTピンを追加して動いた

More than 3 years have passed since last update.

今度は傾斜計を作ろうとしている。

購入したのはMPU-9250
https://strawberry-linux.com/catalog/items?code=12250

スケッチ

参考: MPU-9150 @ cubic9.com

cubic9さんのページを参考にArduinoスケッチを用意した。

ソースのバージョン番号違いにより変更箇所の行番号が異なるが、適宜修正した。

配線 v0.1

参考 https://strawberry-linux.com/support/12250/1703808
参考 https://strawberry-linux.com/support/12250/1690628

以下のようにした

  • MPU-9250 GND <--> ESP8266 GND
  • MPU-9250 VDD <--> ESP8266 VCC
  • MPU-9250 VDDIO <--> ESP8266 VCC
  • MPU-9250 SCL <--> ESP8266 SCL
  • MPU-9250 SDA <--> ESP8266 SDA
  • MPU-9250 AD0 <--> ESP8266 GND
  • MPU-9250 CS <--> ESP8266 VCC (I2C接続)

実行

スケッチをダウンロードして実行すると以下のエラーとなった。

Testing device connections...
MPU6050 connection failed

Send any character to begin DMP programming and demo: 
Initializing DMP...
Enabling DMP...
Enabling interrupt detection (Arduino external interrupt 0)...
DMP ready! Waiting for first interrupt...

Soft WDT reset

ctx: cont 
sp: 3ffef250 end: 3ffef440 offset: 01b0

>>>stack>>>
3ffef400:  3ffee294 3ffee298 3ffee3e4 40204365  
3ffef410:  3fffdad0 3ffee298 3ffee3e4 3ffee40c  
3ffef420:  3fffdad0 00000000 3ffee404 40203ff4  
3ffef430:  feefeffe feefeffe 3ffee420 40100114  
<<<stack<<<

 ets Jan  8 2013,rst cause:2, boot mode:(3,0)

load 0x4010f000, len 1264, room 16 
tail 0
chksum 0x42
csum 0x42
~ld
Initializing I2C devices...
Testing device connections...
MPU6050 connection failed

Send any character to begin DMP programming and demo: 
Initializing DMP...
Enabling DMP...
Enabling interrupt detection (Arduino external interrupt 0)...
DMP ready! Waiting for first interrupt...

割込み待ちをしている時間が長すぎてwatchdog resetがかかっているようだ。

INTピンは使っていないのも問題なのだろうか。

今回はややこしそうな予感がする。

INTERRUPT_PIN

ソースを見ていると以下の定義があった。

#define INTERRUPT_PIN 2  // use pin 2 on Arduino Uno & most boards

ESP8266のピンのいずれかを割込みピンとして使ってMPU-9250のINTピンと接続が必要のようだ。

配線 v0.2

配線 (INTの追加)

GPIO14をINTERRUPT_PINとした。

  • MPU-9250 GND <--> ESP8266 GND
  • MPU-9250 VDD <--> ESP8266 VCC
  • MPU-9250 VDDIO <--> ESP8266 VCC
  • MPU-9250 SCL <--> ESP8266 SCL
  • MPU-9250 SDA <--> ESP8266 SDA
  • MPU-9250 AD0 <--> ESP8266 GND
  • MPU-9250 CS <--> ESP8266 VCC (I2C接続)
  • MPU-9250 INT <--> ESP8266 GPIO14

cubic9さんのページにもINTのことが記載されていた。

upverter上の回路図 (FDTI関連は省略)

コード

以下のように一部を変更した。

#if 1
#define INTERRUPT_PIN 14  // ESP8266
#else
#define INTERRUPT_PIN 2  // use pin 2 on Arduino Uno & most boards
#endif

実行した

値が出るようになった。

quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.32
quat    0.95    -0.00   -0.00   -0.33
quat    0.95    -0.00   -0.00   -0.33
quat    0.95    -0.00   -0.00   -0.33
quat    0.95    -0.00   -0.00   -0.33
quat    0.95    -0.00   -0.00   -0.33
quat    0.95    -0.00   -0.00   -0.33
...

すごい勢いで値が出てくる。

MPU-9250を傾けると、値がそれぞれ変化する。

傾けてみた

  • ほぼ水平の時
quat    0.92    0.01    0.01    -0.40
  • X軸を持ち上げた時
quat    0.91    0.04    0.17    -0.37
  • Y軸正方向を上げた時
quat    0.85    -0.19   0.12    -0.47
  • Y軸負方向を上げた時
quat    0.91    0.25    -0.08   -0.32

画像

気圧計の基板を流用。
MPU-9250はブレッドボード上に実装。
INT用のGPIO14は間に合わせでICクリップで掴んでいる。

DSC_0182.JPG

ESP32

(追記 2018/01/15)

@choco244 さんとのやりとりにてESP32でのセットアップには苦労するということを学びました。

7of9
セブンオブナインです。Unimatrix 01の第三付属物 9の7という識別番号です。Star trek Voyagerの好きなキャラクターです。まとめ記事は後日タイトルから内容がわからなくなるため、title検索で見つかるよう個々の記事にしてます。いわゆるBorg集合体の有名なセリフから「お前たち(の知識)を吸収する。抵抗は無意味だ」。Thanks in advance.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away