2020年6月のATOM Echoの発売でMatrixLiteEchoの3タイプに増えた超小型の開発モジュール「ATOMシリーズ」のプログラミング環境(UI Flow/BlocklyとArduino IDE)についてまとめます。

ATOMシリーズ

ATOMシリーズ

ATOMシリーズは原稿執筆時点でMatrixLiteEchoの3タイプがあります。縦横の大きさは3タイプ共通で24mm x 24mm、高さはMatrix: 14mm、Lite: 10mm、Echo: 17mmです。それぞれのスペックは次のようになっています。

ATOMシリーズスペック

3タイプともMPUはESP32-PICO-D4を搭載していて、Wi−Fi、Bluetoothで通信できます。Matrixには5 x 5 のRGBマトリックスLEDと6軸加速度・ジャイロセンサが搭載され、Liteは1個のRGB LEDが、Echoには1個のRGB LEDとスピーカー、マイクが搭載されているのがそれぞれの特徴です。

ATOMシリーズも他のM5Stack、M5StickC製品と同様に、UI FlowのBlocklyとMicroPython、Arduino IDEでプログラムが作れます。

UI Flow/Blockly

UI FlowはM5Stack用のプログラミング環境です。ブロックプログラミングのBlocklyとMicroPythonでプログラミングできます。

UI Flowを使うには、まずM5BurnerというツールでファームウェアをATOMに書き込みます。M5StackのWebサイトのソフトウェアダウンロードページにいき、お使いのパソコン用の「M5Burner」をダウンロードしてインストールします。

M5Burner

M5Burnerを立ち上げて、左側のメニューのATOMをクリックすると、ダウンロード可能なファームウェアとしてUIFlowとEchoSTTが表示されます。UIFlowがUI Flow用、EchoSTTがATOM Echoの音声認識(Speech to Text)用のファームウェアです。

UI Flowはパネル右上のプルダウンメニューにダウンロード可能なバージョンが表示され、原稿執筆時点の最新版はMatrix用、Lite用ともにv1.6.1です。公式にはUI FlowではATOM Echoはサポートされておらず、Echo用は表示されません。

ATOM MatrixやLiteをUSBケーブルでパソコンに接続し、M5Burner左上の「COM」欄でATOMを接続したUSBのCOM番号(MacOSならデバイス名)を選びます。M5BurnerでSSIDとパスワードを設定できるので、ATOMをWi-Fiに接続するなら、それぞれの欄に値を設定します。上の図のようにUIFlowのパネルの右下が「Download」になっていたら、クリックしてファームウェアをクラウドからパソコンにダウンロードします。ダウンロードが完成すると、ボタンが「Remove」と「Burn」に変わるので、「Burn」をクリックしてファームウェアをATOMに書き込みます。

UI FlowでプログラミングするにはデバイスのApi Keyが必要になります。M5StackやM5StickCにはLCDがあり、ファームウェアを書き込むとLCDにApi Keyが表示されます。ATOMシリーズにはLCDがないので、M5Burnerで「COM Monitor」をクリックして、ATOMをリセットすると、次の図のようにApi Keyが表示されます。

Api Key

ブラウザでUI Flowにアクセスし、右上のSettingメニューからApi Keyを入力し、DeviceとしてAtom-MatrixかAtom-Liteを選択します。ここでもATOM Echoは表示されません。

Settingを終えると、左側のUI画面にはATOMが表示され、「ハードウェア」メニューにはRGBカラーと加速度&ジャイロが現れます。RGBカラーを見ると、5 x 5 のマトリックスLEDを制御するためのブロックが表示されます。

UI Flow画面

あとは好きなブロックを選んで組み合わせることで、ATOMを動かすことができます。例えば次のプログラムはATOM MatrixのボタンをクリックするごとにLEDの色が赤→緑→青と変化するプログラムです。

プログラム例

ATOM Echoの音声認識ファームウェアEchoSTTの使い方は「M5Stackマンスリーアップデート 2020年6月【号外】」の「ATOM Echoで音声認識してみるをご覧ください。

Arduino IDE

次は、Arduinoでプログラミングする方法を見てみましょう。

まず、Arduino IDEを立ち上げて、「ツール」メニューから「ライブラリを管理…」を選んで、ライブラリマネージャを立ち上げます。検索窓に「atom」と入力して、「M5Atom」ライブラリをインストールします。原稿執筆時点での最新版は0.0.1です。

ATOMライブラリ

また、「M5Atom」ライブラリについてくるサンプルプログラムが、「FastLED」というライブラリを使っているので、これもライブラリマネージャでインストールしておきます。

「M5Atom」ライブラリをインストールすると、「ファイル」メニューの「スケッチ例」に「M5Atom」が追加されます。その中の「Buttom」と書かれたスケッチを選んでみます(Buttonのスペルミスだと思います)。

ビルドするには、最初にボードを選択しますが、原稿執筆時点では「M5ATOM」はありません。代わりに「M5StickC」を選びます。シリアルポートを選択して、ビルドボタンをクリックすると、サンプルプログラムが動き出します。ATOMのマトリックスLEDがスイッチになっていて、これを押すと、押すたびにLEDの色が赤、緑、青と変化します。

Arduinoのスケッチの書き方はM5StackやM5StickCとほぼ同じです。スケッチの先頭にM5Stackでは #include <M5Stack.h> 、M5StickCでは #include <M5StickC.h> と書きますが、ATOMでは #include <M5Atom.h> と書きます。

スケッチ例には「Button」の他に「LEDDisplay」「LEDSet」「MPU6886」があります。
「LEDSet」はマトリックスの左上のLEDだけの色を変えるサンプル、「MPU6886」は加速度とジャイロセンサの値をシリアルに出力するサンプル、「LEDDisplay」はマトリックスLEDに「ATOM」という文字をスクロールさせながら表示するサンプルです。

原稿執筆時点でM5ATOMライブラリにはバグがあり、そのままでは「LEDDisplay」は動きません。ArduinoのライブラリはArduino IDEの「環境設定」の「スケッチブックの保存場所」で指定しているフォルダの libraries にあり、バグのあった LED_DisPlay.cpp は以下の場所にあります。

/スケッチブックの保存場所/libraries/M5Atom/src/utility/LED_DisPlay.cpp

このファイルの103行目を次のように修正すると、バグが修正できます。

修正前

    xSemaphoreTake(_xSemaphore, portMAX_DELAY);

修正後

    xSemaphoreTake(_xSemaphore, 100);

EasyLoader

プログラムを作るためのツールではないのですが、M5Stackの各製品には EasyLoader というツールが提供されています。これは各製品のサンプルプログラムを書き込むツールで、簡単に動作確認ができます。

ATOM用の EasyLoader はそれぞれの製品ページからダウンロードできます。

対象製品 OS 機能
Matarix用 Windows ATOMという文字がスクロール表示される
Lite用 Windows ボタンをクリックするたびにLEDの色が変わる
Echo用 Windows/MacOS ATOM Echoをブルートゥーススピーカーにする

Matrix用のEasyLoaderをダウンロードして、起動すると、次のような画面が表示されます。

EasyLoader

MatrixをUSBケーブルでパソコンにつなぎ、USBポートのCOM番号を選択して「Burn」ボタンをクリックすると、サンプルプログラムがMatrixに書き込まれます。書き込みが終了すると「Ready」が「Successfully」に変わり、プログラムが動き始めます。

単機能ですが、製品の動作確認がしたい時などに使えるツールです。

マスターの一言

ATOMシリーズって、チロルチョコとほぼ同じ大きさで、UI FlowやArduino、MicroPythonのプログラムが動く賢いやつだ。チロルチョコにマイコンが入っていたら、何ができるか、と考えたが、食べられませんね。