M5StickCによるジェスチャ認識(1)~インストールから加速度取得まで


M5StickCによるジェスチャー認識

  • 今回M5StickCを購入(約2,000円)だったので、ジェスチャーなどを簡単に認識できるということで、やってみた。
  • [ここ]で購入できます。

M5StickC系のプログラム関連記事

  1. M5StickCによるジェスチャ認識(1)~インストールから加速度取得まで(この記事)
  2. M5StickCによるジェスチャ認識(2)~サンプルコードによるジェスチャ認識
  3. M5StickCによるジェスチャ認識(3)~Wi-Fi接続と学習データの生成
  4. M5StickCによるジェスチャ認識(4)~オリジナルデータによるジェスチャ認識
  5. M5StickCによる音声認識 ※現状の予定になります

開発環境・インストール

  • 開発環境:PlatformIO
  • OS: Windows10

PlatformIOのインストール

  • 詳細な手順については割愛しますが、[ここ]やここなどを参考にするといいかと思います。
  • VSCodeインストーラーを各自のOSに応じてダウンロードする
  • とくにインストールをする場合のフォルダの指定ですが、日本語が入らない様に注意してください。
  • VSCodeをインストールしたら、VSCodeを起動し、PlatformIOを入れます。


↑図の参照:https://dandydot.no-ip.biz/~dot/presen/advtech/seminars/iot_hands_on/install_platformio_ide/README.md.html

  • 一度、VSCodeを再起動する。すると、以下のように、PlatformIOのアイコンが出ていればOK

M5StickCで開発できるように

  • PlatformIOをインストールしたら、M5StickCで開発できるように設定する。
  • 「Platforms」から、「Espressif 32」を検索し、インストールする。
  • 次に「Libraries」から、「M5StickC」を検索し、インストールする

サンプルプログラム「Hello World」の作成

  • プログラム関係で、一番最初にやるHello Worldを作ってみましょう。
  • M5StickCにもともと入っていたものは上書きしますので注意

プロジェクトの作成

  • 「PIO Home」の「New Project」から作成する。Nameは適当に「Test01」など、Boardは「M5Stick-C (M5Stick)」を選択する。

プログラムの作成

  • プロジェクトが作成されれば、srcの中にあるmain.cppを編集する。基本的にここに書いていく(Arudinoなどで慣れている人は大体わかるはず)
  • setup():最初の1回だけ呼ばれるメソッド。初期化などの処理を書く
  • loop():継続的に処理をするメソッド。
main.cpp
#include <M5StickC.h>

void setup(){
  M5.begin();
  M5.Lcd.setRotation(3); //回転
  M5.Lcd.setCursor(0, 0, 4); //位置やサイズ
  M5.Lcd.print("Hello World"); //表示する文字
}

void loop() {
}

書き込み関連の設定

  • 次に、書き込みするための設定を変更する。「platformio.ini」を開いて「upload_speed = 1500000」を追加する。
platformio.ini
[env:m5stick-c]
platform = espressif32
board = m5stick-c
framework = arduino

upload_speed = 1500000

実行

  • M5StickCをパソコンとつなげておく
  • プログラムを書き終えたら「Build」を押して、ビルドする。エラーがなければ、そのまま「Upload」すると、Hello Worldが表示される。

  • もし書き込みがうまくいかない場合は、COMポートが自動で正しく検出されていませんので、明示的にすることで対応します。
platformio.ini
[env:m5stick-c]
platform = espressif32
board = m5stick-c
framework = arduino

upload_speed = 1500000

upload_port = COM[XX]
monitor_port = COM[XX]

加速度データの取得

  • まずは、加速度のデータが取れることを確認するために、プログラムを作成していきます。
  • 加速度のプログラムは様々な人が作成していますので、用途に応じて参考にするといいかと思います。

[1] https://rpubs.com/koyo/M5StickC_200101
[2] https://make-muda.net/2019/09/6932/
[3] https://pages.switch-science.com/letsiot/vibration/

  • 今回は、シンプルな[1]からサンプルプログラムを作成したいと思います
  • Switch Scienceのページから、M5StickCの加速度系は以下のようになっています

プログラムの作成

  • New Projectから新しいプログラムを作成する。名前は適当に
main.cpp
#include <M5StickC.h>

float accX = 0.0F;
float accY = 0.0F;
float accZ = 0.0F;

void setup() {
  M5.begin();
  M5.IMU.Init();
}

void loop() {
  M5.update();
  M5.Lcd.setRotation(3); //回転
  M5.Lcd.setCursor(0, 0, 2); //位置やサイズ

  // データ取得
  M5.IMU.getAccelData(&accX, &accY, &accZ);

  //ディスプレイに表示
  M5.Lcd.printf("%5.2f,%5.2f,%5.2f\n", accX, accY, accZ);

  delay(10);
}
  • プログラムを書き終えたら「Build」を押して、ビルドする。エラーがなければ、そのまま「Upload」すると、加速度がディスプレイに表示される。

  • 今のプログラムでは、特に明示していないが、ディスプレイだと煩わしい場合があるので、シリアル通信(USBを繋いでいる状態)で、明示的にデータを表示したい場合は、シリアル通信のコードを追加し、シリアルモニターを表示したい場合は「View」→「Command Palette」を押して「Serial Monitor」を入力するとシリアルモニターが表示される。同様に加速度がPlatformIOにも表示される。