M5Stackには、様々なセンサが付いていますので、このセンサを使ってみましょう。
前提
・M5Stack本体
・Windows10 PC
M5Stackを、PCに接続してください。
M5Stackシリーズの最新機種は、Core2です。タッチ操作に対応しています。
リンク
センサ情報を取得して、シリアル通信で出力する方法
ArduinoIDEを起動して、以下のサンプルコードをコピーしてください。
サンプルコード
// 私のM5StackでIMUはMPU6886を使っているので、MPU6886を#defineする
#define M5STACK_MPU6886
//#define M5STACK_MPU9250
//#define M5STACK_MPU6050
// #define M5STACK_200Q
#include <M5Stack.h>
/////////////////////////////////////
void setup_serial(){
Serial.begin(115200);
while (!Serial);
}
void setup(){
// 初期化
M5.begin();
M5.Power.begin();
setup_serial();
M5.IMU.Init();
// 起動画面設定
M5.Lcd.fillScreen(TFT_NAVY);
M5.Lcd.setTextColor(TFT_WHITE);
M5.Lcd.setTextSize(2);
M5.Lcd.printf("START");
}
void loop() {
float accX, accY, accZ;
float gyroX, gyroY, gyroZ;
float pitch, roll, yaw;
float Temp;
// 画面初期化
M5.Lcd.fillScreen(TFT_NAVY);
// 角度センサ(ジャイロ)の取得
M5.IMU.getGyroData( &gyroX, &gyroY, &gyroZ );
// 画面表示
M5.Lcd.setCursor(0, 0);
M5.Lcd.printf("gyro=(%5.1f, %5.1f, %5.1f)", gyroX, gyroY, gyroZ);
// シリアル通信出力
Serial.printf("gyro=(%5.1f, %5.1f, %5.1f)", gyroX, gyroY, gyroZ);
Serial.println();
// 加速度センサの取得
M5.IMU.getAccelData( &accX, &accY, &accZ );
// 画面表示
M5.Lcd.setCursor(0, 50);
M5.Lcd.printf("acc=(%5.1f, %5.1f, %5.1f)", accX, accY, accZ);
// シリアル通信出力
Serial.printf("acc=(%5.1f, %5.1f, %5.1f)", accX, accY, accZ);
Serial.println();
// 姿勢角度センサの取得
M5.IMU.getAhrsData( &pitch, &roll, &yaw );
// 画面表示
M5.Lcd.setCursor(0, 100);
M5.Lcd.printf("PRY=(%5.1f, %5.1f, %5.1f)", pitch, roll, yaw);
// シリアル通信出力
Serial.printf("PRY=(%5.1f, %5.1f, %5.1f)", pitch, roll, yaw);
Serial.println();
// 温度センサの取得
M5.IMU.getTempData( &Temp );
// 画面表示
M5.Lcd.setCursor(0, 200);
M5.Lcd.printf("Temperature=%.2f C", Temp);
// シリアル通信出力
Serial.printf("Temp=(%.2f)", Temp);
Serial.println();
// 500ms待機
delay(500);
}
上のサンプルコードを動かすと、M5Stackの画面に、様々なセンサの取得結果が表示されると思います。
リンク
PCで、シリアル通信を見る
M5Stackは、画面表示の他に、シリアル通信で、取得結果を出力しています。
ArduinoIDEには、シリアルモニタがついていますので、M5Stackのシリアル通信出力結果を表示させることができます。
以下の画像の部分を押すと、シリアル通信モニタ画面が表示されます。
上記サンプルコードが動作しているなら、モニタ画面に、各種センサ結果が流れるように表示されているはずです。
センサ情報を取得して、シリアル通信で出力する方法(グラフに表示する)
M5Stackのセンサ値をPCのグラフに表示させる方法を紹介します。
グラフ表示は、ArduinoIDEに、シリアルプロッタという機能がありますので、これを利用します。
サンプルコード
このサンプルコードでは、一つのセンサ情報をシリアル通信するように変更しています。
ボタンAを押す毎に、ジャイロ→加速度→姿勢角度を順番に切り替えていきます。
#define M5STACK_MPU6886
#include <M5Stack.h>
float accX = 0.0F;
float accY = 0.0F;
float accZ = 0.0F;
float gyroX = 0.0F;
float gyroY = 0.0F;
float gyroZ = 0.0F;
float pitch = 0.0F;
float roll = 0.0F;
float yaw = 0.0F;
int mode = -1;
void setup() {
// 初期設定
M5.begin();
M5.Power.begin();
M5.IMU.Init();
// 起動画面設定
M5.Lcd.fillScreen(TFT_NAVY);
M5.Lcd.setTextColor(TFT_WHITE);
M5.Lcd.setTextSize(2);
M5.Lcd.printf("START");
}
void loop() {
M5.update();
// センサデータ取得
M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);
M5.IMU.getAccelData(&accX, &accY, &accZ);
M5.IMU.getAhrsData(&pitch, &roll, &yaw);
// ボタンA押下イベント
if ( mode == -1 || M5.BtnA.wasReleased() ) {
mode++;
mode = mode % 3;
// ボタンAを押す毎に、ジャイロ→加速度→姿勢角度を順番に切り替える
// プロッタ用のタイトル出力
if ( mode == 0 ) {
Serial.printf("gyroX,gyroY,gyroZ\n");
} else if ( mode == 1 ) {
Serial.printf("accX,accY,accZ\n");
} else if ( mode == 2 ) {
Serial.printf("pitch,roll,yaw\n");
}
}
// データ出力
if ( mode == 0 ) {
Serial.printf("%6.2f,%6.2f,%6.2f\n", gyroX, gyroY, gyroZ);
M5.Lcd.fillScreen(TFT_OLIVE);
M5.Lcd.setCursor(0, 100);
M5.Lcd.println("Gyro");
M5.Lcd.printf("gyro=(%5.1f, %5.1f, %5.1f)", gyroX, gyroY, gyroZ);
} else if ( mode == 1 ) {
Serial.printf("%5.2f,%5.2f,%5.2f\n", accX, accY, accZ);
M5.Lcd.fillScreen(TFT_GREEN);
M5.Lcd.setCursor(0, 100);
M5.Lcd.println("Acc");
M5.Lcd.printf("acc=(%5.1f, %5.1f, %5.1f)", accX, accY, accZ);
} else if ( mode == 2 ) {
Serial.printf("%5.2f,%5.2f,%5.2f\n", pitch, roll, yaw);
M5.Lcd.fillScreen(TFT_PINK);
M5.Lcd.setCursor(0, 100);
M5.Lcd.println("Ahrs");
M5.Lcd.printf("PRY=(%5.1f, %5.1f, %5.1f)", pitch, roll, yaw);
}
delay(200);
}
PCで、シリアルプロッタで、グラフを見る
ArduinoIDEで、以下の操作をすると、グラフが表示されます。
まとめ
今回は、M5Stackのセンサ値を取得して、シリアル通信で出力する方法を紹介しました。
リンク
参考
M5StickCの6軸IMU MPU6886を調べる
概要 M5StickCで使われているIMUをちゃんと調べてみました。 IMUとは? IMUとはInertial Measurement Unitの略で、加速度や角速度などの複数のセンサーを搭載したセンサーです。 加速度とは? 学研さんと「加
このサイトでは、M5Stackに関する様々な記事を用意していますので、こちらもご覧ください。
コメント