2017年3月8日水曜日

ESP-WROOM-02 で MPU6050 を動かしてみた

概要

前回 Arduino で MPU6050 を動作させました
今回はESP-WROOM-02 を使って MPU6050 を動作させてみました
事前情報で MPU6050 と WROOM は互換性がないとわかっているのはのですが、やはり結構ハマりました

環境

  • MPU6050
  • Mac OS X 10.11.3
  • Arduino IDE 1.6.7

配線

WROOM + MPU6050 の全体の配線は以下の通りです
wroom_with_mpu6050_circuit.jpg

簡単に説明すると

  • WROOM VO -> MPU6050 VCC
  • WROOM GND -> MPU6050 GND
  • WROOM 4 -> MPU6050 SDA
  • WROOM 5 -> MPU6050 SCL
  • WROOM 2 -> MPU6050 INT

になります

  • WROOM 2 -> MPU6050 INT

今回の場合、この接続はなくても大丈夫だと思います

ライブラリのインストール

  • cd /path/to/Arduino/libraries
  • wget http://skomo.o.oo7.jp/f49/25-1.zip
  • unzip 25-1.zip
  • rm 25-1.zip

もし既存の「I2Cdev」と「MPU6050」がインストールされている場合は /path/to/Arduino/libraries から一旦対比させてから上記作業を行ってください

※あとから確認したのですが、この作業は不要っぽいです、Arduino 公式の「I2Cdev」と「MPU6050」でも動作しました
なので、普通に Arduino IDE の「ライブラリを管理」から「I2Cdev」と「MPU6050」をインストールしてください

スケッチ

スケッチの全体は以下の通りです
インストールしたライブラリ内にあるサンプルスケッチをほぼそのまま使っていますが、一部書き換えないと動作しませんでした

#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"

MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;

void setup() {
  Wire.begin();
  Serial.begin(115200);

  Serial.println("Initializing I2C devices...");
  accelgyro.initialize();

  Serial.println("Testing device connections...");
  Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
}

void loop() {
  accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

  Serial.print("a/g:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);
  delay(200);
}

変更したのは以下の通りです

  • 不要なコメントの削除
  • LED を点灯させるための GPIO 制御を削除
  • delay(200) を追加

自分がハマったのは 3 つ目でこれを追加しないとシリアルモニタに転送する速度が早すぎてうまくデバッグできませんでした

スケッチの書き込み

これも結構ハマりました

配線後にスケッチを書き込もうとすると「error: espcomm_upload_mem failed」というエラーが発生しうまく書き込みができませんでした
WROOM の Vout と GND を外して、MPU6050 側に電源を送らないようにするとうまく書き込めます
原因はさっぱりわからないのですが、解消しないので自分は以下のように対応しました

一旦 MPU6050 を外して書き込みを実施、書き込みが始まったら MPU6050 を接続

という完全に裏ワザぽいことをしました
一応これで書き込めて WROOM も MPU6050 を認識し動作したので自分はとりあえずこの方法で対応しています

シリアルモニタを開くと以下のようにジャイロと加速度センサの値が流れると思います
wroom_with_mpu6050_serial.png

最後に

紹介は以上です
全体的に結構ハマりました
最終的には動作したのですが、たぶん正しいやり方ではないと思うのであまり参考にしないほうがいいかもしれないです、すいません、、、
センサの値を見ても何か正しい値が取れているような取れていないような、、、
とりあえず動いたからその辺は気にしない

参考サイト

0 件のコメント:

コメントを投稿