M5Stack

【M5Stack】ジャイロセンサの使い方を分かりやすく解説!【MPU6886】

m5stack-mpu6886-gyro-sensor.png

<この記事について>

  • 「M5Stackに搭載されているジャイロセンサの使い方がよく分からない…」と悩んでいる人のために書きました。
  • この記事を読むことで、M5Stack(MPU6886)でジャイロセンサを使う方法が分かります。
  • 結論としては、何かライブラリをインストールしたり特別な設定することなく、プログラムを書いて実行するだけでOKです。

こんにちは!こんばんは!

ちゃとらです(・ω・)/

M5StackにはIMU(慣性計測ユニット)が搭載されているので、加速度やジャイロなどが測定可能です。

少し前のM5Stackに搭載されていたMPU9250というIMUとはプログラムの書き方が異なります。MPU6886の方が書き方が簡単です。

ちゃとら

M5Stackに搭載されているMPU6886(IMU)でジャイロセンサを使う方法を分かりやすく解説していきます!

m5stack-mpu6886-acceleration-sensor.png
【M5Stack】加速度センサの使い方を分かりやすく解説!【MPU6886】この記事では、M5Stackに搭載されているMPU6886で加速度センサを使う方法について解説しています。何かライブラリをインストールしたり特別な設定することなく、プログラムを書いて実行するだけで加速度センサを使用することができます。...
m5stack-mpu6886-thermometer.png
【M5Stack】温度センサの使い方を分かりやすく解説!【MPU6886】この記事では、M5Stackに搭載されているMPU6886で温度センサを使う方法について解説しています。特別な設定は必要なく、プログラムを書いて実行するだけで温度センサを使用することができます。...

今回扱うM5Stack

M5Stackの種類M5Stack FIRE(V2.6)
値段49.90ドル(税別)
(販売価格は7700円程 更新日現在)
生産国中国
サイズ5.4 x 5.4 x 3.05 cm

僕は8000円ぐらいでM5Stack FIREを通販で購入しました。

M5Stackは機種によって搭載されているセンサが異なります。2021年の11月頃からV2.6となり、ほとんど物にはMPU6886が搭載され地磁気センサのBMM150が非搭載になっています。

ちなみに、MPU6886では加速度・ひねり(ジャイロ)・温度が測定可能ですが、磁力は測定できません。

ジャイロセンサについて

余談となってしまいますが、ジャイロセンサについて少し解説していきます。

ジャイロセンサーは別名「角速度センサー」とも呼ばれ、単位時間当たりの回転角度の変化を検出できます。これにより、回転方向や回転角度、振動などを検知することが可能になります。スマートフォンやデジタルカメラ、ゲーム機、カーナビゲーションシステム、ロボットや産業機器などさまざまな機器や装置に搭載され、振動の検出や手ブレの補正、姿勢制御などに活用されています。

引用元:エプソン|ジャイロセンサー技術

少し話が難しいですが、要はジャイロセンサとはどのくらい回転角度が変化したのかを測定する機器のことです。

身近な例ですと、ロボットの姿勢制御やデジカメの手ぶれ補正、ロケットの位置計測などに使用されています。

とあるモブ

んじゃ、ジャイロセンサのどんな仕組みで計測してんの?

ちゃとら

…………。

詳細は自分で調べて、どうぞ。

とあるモブ

えぇ…(困惑)

ジャイロセンサの仕組みなんて知らん、というか調べるのがめんどくせぇ

ジャイロセンサの仕組みについて説明すると、数式とか図とかたくさん使うのでかなり長くなってしまいます…

なので、気になる人は個人で調べてみてください。

ちゃとら

伝えることを諦めたわけじゃなねぇぞ!!

M5Stackに搭載されているMPU6886は以下の図のように角速度を測定します。

M5Stackの角速度測定図

MPU6886では、それぞれの軸の角速度を単位をdeg/sとして測定します。

ちなみに、pitch(ピッチ)は傾斜や勾配、roll(ロール)は転がる、yaw(ヨー)は向きを変えるという意味から名付けられたそうです。

使い方

MPU6886のジャイロセンサを使うためには、何かライブラリをインストールしたり特別な設定は必要ないです。プログラムを書き込むだけで使うことができます。

ここでは、M5Stackのセットアップ(Arduino IDE)は完了していること前提で解説していきます。

ちゃとら

M5Stackのセットアップ(Arduino IDE)がまだ完了していない人は以下の記事を参考にしてください!

m5stack-setup-arduino.png
【M5Stack】M5Stackのセットアップ(Arduino)を分かりやすく解説!【Arduino IDE】この記事では、M5Stackのセットアップ(Arduino IDE)について解説しています。手順としては、「USBドライバをインストール」→「ボードマネージャをインストール」→「ライブラリをインストール」→「プログラムを書いて実行する」となっています。...

プログラムを書いて実行

以下のプログラムをM5Stackに書き込んで動作させます。

// ↓の定義は#include <M5Stack.h>より前に!
#define M5STACK_MPU6886 

#include <M5Stack.h>

// 取得するそれぞれの軸のジャイロデータを初期化
float pitch = 0.0F;
float roll = 0.0F;
float yaw = 0.0F;

void setup() 
{
  M5.begin();
  M5.Power.begin();  // Powerモジュールを初期化

  M5.IMU.Init();     // IMUを初期化

  M5.Lcd.setTextSize(3);
}

void loop() 
{
  // ジャイロデータを取得
  M5.IMU.getAhrsData(&pitch, &roll, &yaw);

  // それぞれの軸のジャイロデータをシリアル通信で送信
  Serial.print("pitch(dps):");
  Serial.print(pitch);
  Serial.print(",");
  Serial.print("roll(dps):");
  Serial.print(roll);
  Serial.print(",");
  Serial.print("yaw(dps):");
  Serial.println(yaw);

  // それぞれの軸のジャイロデータをM5Stackに表示
  M5.Lcd.setCursor(0, 50);
  M5.Lcd.setTextColor(BLUE, BLACK);
  M5.Lcd.printf("pitch: %5.2f dps ", pitch);
  M5.Lcd.setCursor(0, 100);
  M5.Lcd.setTextColor(RED, BLACK);
  M5.Lcd.printf("roll: %5.2f dps ", roll);
  M5.Lcd.setCursor(0, 150);
  M5.Lcd.setTextColor(GREEN, BLACK);
  M5.Lcd.printf("yaw: %5.2f dps ", yaw);

  delay(100);
}

14行目では、M5Stackの電源関係の機能を初期化をしています。

ちょくちょく出てきている単位のdpsはdegree per secondの略で角速度を表しています。

プログラムを作成できたら、シリアルポートとボードの設定を忘れずに行いましょう。

「ツール」→「シリアルポート」でM5Stackが接続されているポート番号を選び、
「ツール」→「ボード」→「ESP32 Arduino」で「M5Stack-Core-ESP32」を選びましょう。

それぞれ設定ができたら、M5Stackにプログラムを書き込みます。

M5Stackに表示

こんな感じで表示されればOKです。また、シリアル通信でジャイロデータを送信しているのでM5Stackがパソコンと接続されていれば、シリアルプロッタでグラフ表示させることもできます。

ジャイロデータ

グラフ表示させるときは通信速度を115200bpsに設定します。

M5Stackを様々な方向に捻ることで値が変わります。なんか株式チャートみたいになってますね(笑)

M5StackのMPU6886についての詳細が気になる人は以下のリンクを参考にしてください。

まとめ

M5Stackに搭載されているMPU6886のジャイロセンサについて

  1. ジャイロセンサどのくらい回転角度が変化したのかを計測する機器のこと。ロボットやデジカメ等に組み込まれている。
  2. MPU6886のジャイロセンサを使うためには、何かライブラリをインストールしたり特別な設定は必要はない。プログラムを書き込むだけで使用可能。
ちゃとら

加速度センサもほぼ同じ手順で使用可能です!

今回はここまでです。

ちゃとら(・ω・)/

今回紹介した広告一覧