M5Stack社の「M5Stamp S3」を購入しました。
M5Stamp S3(Yahoo!ショッピング)「M5Stamp S3」は、Espressif社の新世代MCUである「ESP32-S3」を搭載したマイコンボードです。
「ESP32-S3」にはUSB通信機能が内蔵されているため、「M5Stamp S3」にはUSBポートが付いています。このため「M5Stamp Pico」とほぼ同じサイズでありながら、Picoのように別途ダウンローダーを準備する必要はなく、直接プログラムの書き込みができます。
「M5Stamp Pico」はシンプルな上に低電力でとても便利なデバイスですが、プログラムの書き込みが面倒な点だけが不満でした。もしも「M5Stamp S3」がPicoと同じぐらい低電力であれば、私にとっては欠点のない、とても良いデバイスの選択肢となりそうです。
そんな訳で、今回は「M5Stamp S3」の使い方(スケッチを書き込むまで)を確認してみたいと思います。
こちら のページに記載されているとおりに環境構築を行います。
「MacBook Pro 13-inch, M1, 2020, macOS Ventura 13.1」に対して環境をつくります。
Arduino IDEは既にインストール済みです。
使用しているバージョンは、Arduino IDEダウンロードページ(こちら)に「Legacy IDE」として公開されている「1.8.19」です。
「Arduino」>「Settings…」で環境構築画面を開き、「追加のボードマネージャのURL」に「https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json」を追記し、「OK」をクリックします。
「ツール」>「ボード:」>「ボードマネージャ…」でボードマネージャを開き、「M5Stack」で検索、表示された「M5Stack by M5Stack official」で「Install」をクリックします。
今回は「2.0.7」をインストールしました。なお、「M5Stamp S3」を利用するためには「2.0.6」以降のバージョンをインストールする必要があるとのことです。
インストールしたら、「ツール」>「ボード:」>「M5Stack Arduino」>「STAMP-S3」を選択しておきます。
「M5Stamp S3」にはフルカラーLEDが搭載されているので、「FastLED」ライブラリをインストールしておきます。「ツール」>「ライブラリを管理…」でライブラリマネージャを開き、「FastLED」で検索、表示された「FastLED by Daniel Garcia」で「インストール」をクリックします。今回は「3.5.0」をインストールしました。
「M5Stamp S3」のボタンを押しながら、USBケーブルでパソコンとつなぎ、「ツール」>「シリアルポート」で接続先を選択します。
Macの場合は、ポート名の末尾が「(ESP32S3 Dev Module)」となっていました。
以下のスケッチを入力します。
#include <Arduino.h>
#include <FastLED.h>
#define PIN_BUTTON 0
#define PIN_LED 21
#define NUM_LEDS 1
CRGB leds[NUM_LEDS];
uint8_t led_ih = 0;
uint8_t led_status = 0;
String led_status_string[] = {"Rainbow", "Red", "Green", "Blue"};
void setup() {
USBSerial.begin(115200);
USBSerial.println("StampS3 demo!");
pinMode(PIN_BUTTON, INPUT);
FastLED.addLeds<WS2812, PIN_LED, GRB>(leds, NUM_LEDS);
}
void loop() {
switch (led_status) {
case 0:
leds[0] = CHSV(led_ih, 255, 255);
break;
case 1:
leds[0] = CRGB::Red;
break;
case 2:
leds[0] = CRGB::Green;
break;
case 3:
leds[0] = CRGB::Blue;
break;
default:
break;
}
FastLED.show();
led_ih++;
delay(15);
if (!digitalRead(PIN_BUTTON)) {
delay(5);
if (!digitalRead(PIN_BUTTON)) {
led_status++;
if (led_status > 3) led_status = 0;
while (!digitalRead(PIN_BUTTON))
;
USBSerial.print("LED status updated: ");
USBSerial.println(led_status_string[led_status]);
}
}
}
このスケッチは、こちら に掲載されている「M5Stamp S3」用のサンプルスケッチです。
「→(マイコンボードに書き込む)」をクリックします。書き込みが完了すると「M5Stamp S3」のLEDが点灯します。
「M5Stamp S3」のボタンを押すたびに、LEDの色が「赤」→「緑」→「青」→「虹色」の順に変わります。「虹色」では、LEDの点灯色がなめらかにさまざまな色に変化します。
これで、問題なく環境構築できたことが確認できました。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。