M1 MacでAtom Matrixを使う(M5Stack,esp32)


M1 MacでM5stackの小さい版のAtom Matrixを使うためのメモ。結論としてはM1 MacでArduinoは使えるが、esp32系のM5StackやAtom Matrixはpython 関連のコマンドを実行する一手間が必要。

環境

M1 MacBookAir
Atom Matrix
Type-Cケーブル接続

手順

環境設定>セキュリティ>一般
「App Storeと確認済みの開発元からのアプリケーションを許可」にチェック

ATOM MatrixのUSBドライバをDLして、インストール
https://docs.m5stack.com/#/en/arduino/arduino_development
CP210x_VCP_MacOS.zipをDLし、
SiLabsUSBDriverDisk.dmgを解凍し、
Silicon Labs VCP Driver.pkgを実行
なんか失敗したと出る。もう一回インストールするが、もう出ない。なんだったのか?
↓これかもしれないが、気にせず進めて問題なかった。
https://support.apple.com/ja-jp/guide/mac-help/mchl768f7291/mac

Arduino(1.8.13)をDLしてインストール

Arduino>Preferenceで「追加のボードマネージャのURL」欄に
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
を追加する

ボードマネージャの設定

ツール>ボード>ボードマネージャで「追加のボード」で「ATOM」を検索し、M5Stack(1.0.7)をインストール
ツール>ボード>M5Stack Arduino>M5Stack ATOMを選ぶ
ツール>UploadSpeed>115200を選ぶ
※古そうな資料には、M5StickCかESP32 Pico KITを選択(ただし、ESP Picoの場合、レートは115200を使うこと)とあるので、115200を使った方がいいかもしれないが、1500000でも問題なく動くし、転送時間もグッと短くなる。
ツール>シリアルポート>/dev/cu.usbserial-9156002393(数字は環境によって変わる)

ライブラリマネージャの設定

ライブラリマネージャで「M5Atom」を検索し、M5Atom(0.0.1)をインストール
ライブラリマネージャで「FastLED」を検索し、FastLED(3.4.0)をインストール

※M5Stackの場合は「M5Stack」を検索し、M5Stack(0.3.1)をインストール

このままでは、ビルドに失敗する。原因はMacOS11にあるようで、OS的にはpython3がデフォルトになっているのに、Arduinoはpython2を求めるから、失敗するらしい。解決するには、ターミナルから、下記コマンドを実行しパスワードを入力。

sudo pip3 install --target /Library/Python/2.7/site-packages pyserial

WARNINGが出るが、とりあえず問題なさそう。

試しに
ファイル>スケッチ例>M5Atom>Basics>Buttomをビルドし、書き込む。
SPIとかFastLEDの赤い文字がたくさん出るが、それ自体は問題ない。
いつもの「何バイトになった」という白いレポートが表示されればOK。
その後、また赤い字で、何%という転送の様子が徐々に表示される。

サンプルコード

加速度データを取得し、シリアルプロッタで表示するコードを示す。
シリアルプロッタは115200に設定しないと、文字化けして見れない。

atomAcc.ino
#include "M5Atom.h"

float accX, accY, accZ;
float gyroX, gyroY, gyroZ;
float temp;

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

void loop() {
  M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);
  M5.IMU.getAccelData(&accX, &accY, &accZ);
  M5.IMU.getTempData(&temp);

  Serial.printf("accX:%.2f,accY:%.2f,accZ:%.2f,temp:%.2f\r\n",accX,accY,accZ,temp);

  delay(20);
  M5.update();
}

スピーカが欲しい
この温度の30はなんだろうか?
室温は多分10度ぐらいだし、握っていると、じわじわと上昇して40以上にはなる。ICの熱か?とにかく、気温を測ることには使えない。おそらく、ICが熱で壊れないように、チェックするためのものだろう。