2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

本記事にお立ち寄りいただきありがとうございます。
「M5stickC Plusで取得した振動データで予兆検知AIを作る」まずは環境構築編です。
今回はM5stickC Plusへスケッチが書き込めるようになるまでの環境構築について、
手順と自分が詰まった点を書いていこうと思います。


自分の環境について
使用機器 : M5stickC Plus
OS : Windows
IDE : Arduino IDE

Arduino IDEの環境構築

インストーラは下記になります。
https://www.arduino.cc/en/software
image.png


寄付を行うかそのままダウンロードするかを選びます。
image.png


インストーラを起動しインストール後ソフトを立ち上げ、ファイル→基本設定より言語を日本語に変更します。また、追加のボードマネージャーのURLに下記を入力します。
https://dl.espressif.com/dl/package_esp32_index.json
image.png


続いて、ツール→ボード→ボードマネージャーより
esp32 by Espressifをインストールします。
image.png
同じくツール→ライブラリ管理より
M5StickCPlusをインストールします。
image.png


M5StickCPlusをUSBでPCに接続後、ボードとポートの設定を確認します。
ポートについては環境によりますが、
デバイスマネージャーからどのポートを使用しているか確認できます。
image.png


ここまで終えれば、M5StickCPlusにスケッチを書き込めるようになります。
試しに振動を可視化する下記のスケッチを書き込みます。

#include <M5StickCPlus.h>

#define GRAPH_HEIGHT 80
#define GRAPH_WIDTH 160
#define SAMPLE_RATE 10  // サンプリングレート (ミリ秒単位)
#define THRESHOLD 5.0    // しきい値

void setup() {
  M5.begin();
  M5.IMU.Init();
  M5.Lcd.setRotation(1);
  M5.Lcd.fillScreen(TFT_BLACK);
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(0, 0);
  M5.Lcd.println("Vibration Data");
}

void loop() {
  // 加速度データを取得
  float accX, accY, accZ;
  M5.IMU.getAccelData(&accX, &accY, &accZ);

  // 加速度の大きさを計算
  float magnitude = sqrt(accX * accX + accY * accY + accZ * accZ);

  // グラフに描画
  drawGraph(magnitude);

  // しきい値を超えたらブザーを鳴らす
  if (magnitude > THRESHOLD) {
    M5.Beep.beep();
  } else {
    M5.Beep.mute(); // しきい値以下の場合はブザーを止める
  }

  // サンプリングレートに合わせて待機
  delay(SAMPLE_RATE);
}

void drawGraph(float value) {
  static int16_t lastX = 0;
  static int16_t lastY = GRAPH_HEIGHT;
  int16_t x = lastX + 1;
  int16_t y = GRAPH_HEIGHT - (value * 10); // 値に基づいて高さを調整

  // xが画面幅を超えたらリセット
  if (x >= GRAPH_WIDTH) {
    x = 0;
    lastX = 0;
    // リセット時にグラフ全体を消去
    M5.Lcd.fillRect(0, 20, GRAPH_WIDTH, GRAPH_HEIGHT, TFT_BLACK); // グラフを消去
    // しきい値のリファレンスラインを再描画
    int16_t threshold_y = GRAPH_HEIGHT - (THRESHOLD * 10); // しきい値に基づいて高さを調整
    M5.Lcd.drawLine(0, threshold_y, GRAPH_WIDTH, threshold_y, TFT_RED); // リファレンスラインを描画
  }

  // 線を描画
  M5.Lcd.drawLine(lastX, lastY, x, y, TFT_GREEN);

  lastX = x;
  lastY = y;
}

警告
書き込み時にM5StickCPlusは書き込みモードになりますが、稀にうまくモード切替が行えない場合があります。
エラー文:「ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode. 」
この場合はM5StickCPlusのGNDとG0をジャンパー線で繋ぐと強制的に書き込みモードで起動できます。


実際に動かしている動画です。 このスケッチでは閾値以上の振動を検知するとブザー音が鳴るように設定してあります。

次回は取得したデータをMQTTを用いてPC上で確認し可視化するところまでを行いたいと思います。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?