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

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

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

## スケッチ

参考: [MPU-9150 @ cubic9.com](http://cubic9.com/Devel/%C5%C5%BB%D2%B9%A9%BA%EE/Arduino/%A5%E2%A1%BC%A5%B7%A5%E7%A5%F3%A5%BB%A5%F3%A5%B5/MPU-9150/)

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関連は省略)](https://upverter.com/7of9/1d25c7f00e7feae2/160705_ESP8266_MPU9250/)


### コード

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

```c
#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](https://qiita-image-store.s3.amazonaws.com/0/32870/2c838a44-cae4-8b1a-2f32-b84039fd34cd.jpeg)

## ESP32
(追記 2018/01/15)

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