注文してあった 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 號)の写真を表示するテストです。
まだモータ等は届いていないので、以降は届いてから試そうと思います。