M5Stack AtomS3 が届きました

注文してあった M5Stack AtomS3 が届きました。
半田付けなどの細かい作業は見えくいし、実際の運用では、不具合はモジュール(アッセン)で交換したいので、初めから M5Stack を使うことにしました。
びっくりするほど小さかったです。

M5Stack AtomS3は、薪の選別を機械学習による画像認識で行うためのソーターの開発に使います。
光学識別を RaspberryPi 5 で行い、その計算結果に基づき、親機の AtomS3 が子機の AtomS3 と ESP-NOW を使った無線通信を行い、子機がモータやシリンダを駆動して、コンベア状を流れる対象物をソートするという構造です。

すんなりいくとは思えないのですが、ぼちぼち進めていこうと思います。

Mac に USB-C ケーブルで繋いだらすんなり認識されました。

% ls /dev/cu.usbmodem*
/dev/cu.usbmodem1101

まず、PlatformIO をインストール

% brew install platformio

インストールに結構時間がかかり、固まっているのかと思いました。

次に作業用のディレクトリを作成し、初期化します。

mkdir -p ~/wood_sorter/atom_s3
cd ~/wood_sorter/atom_s3

pio project init –board m5stack-atoms3

以下のディレクトリ構造が自動生成されます。

  • platformio.ini: 設定ファイル(重要)
  • src/: プログラム本体(ここに .cpp を置く)
  • lib/: ライブラリを入れる場所

まずは、Atom S3のライブラリを使えるように platformio.ini を編集します。

[env:m5stack-atoms3]
platform = espressif32
board = m5stack-atoms3
framework = arduino
lib_deps =
m5stack/M5AtomS3 @ ^1.0.0
m5stack/M5Unified @ ^0.2.2
fastled/FastLED @ ^3.9.4
monitor_speed = 115200
upload_port = /dev/cu.usbmodem1101

液晶画面を制御するプログラムを作成します。

#include <M5AtomS3.h>

void setup() {
auto cfg = M5.config();
M5.begin(cfg);
M5.Lcd.setRotation(1); // 画面の向きを調整
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(10, 10);
M5.Lcd.print("ATOM READY");
}

void loop() {
M5.update();
// 画面ボタン(スイッチ)を押すと色が変わる
if (M5.BtnA.wasPressed()) {
M5.Lcd.fillScreen(RED);
M5.Lcd.setCursor(10, 10);
M5.Lcd.print("SORTING!");
}
if (M5.BtnA.wasReleased()) {
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(10, 10);
M5.Lcd.print("WAITING...");
}
}

以下のコマンドでコンパイルして、Atom S3 に書き込みます。

pio run -t upload

  • pio run コンパイルのみ実行します。文法エラーがないかチェックする時に使います。|
  • pio run -t upload コンパイル + 書き込みを実行します。|
  • pio run -t clean 以前のコンパイル結果を削除します。何か動作がおかしい時に使います。|

次にシリアル通信のテストをしたんですが。。。割愛します。

最後に画面にお陸様(6 號)の写真を表示するテストです。

まだモータ等は届いていないので、以降は届いてから試そうと思います。