M5Stamp S3でできること 〜M5Stamp S3の使い方

M5Stack社の「M5Stamp S3」を購入しました。

「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の使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。


このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。