M5Stack Core 2登場

 9月1日にM5Stack Core 2が発売されました。公式Twitterでは前々からどのようなものなのか告知されていたので心待ちにしていた人も多いかもしれません。日本ではSwitch Scienceなどから購入することができます。

・M5STACK Official Webサイト
https://m5stack.com/collections/all/products/m5stack-core2-esp32-iot-development-kit
・Switch Science
https://www.switch-science.com/catalog/6530/

 今回はM5Stack Core 2でUIFlowを使ってみます。なお、ここで掲載しているのは2020年9月3日時点でのものになります。α版およびβ版ですので、ここで説明した内容は変わってしまう可能性があります。というより間違いなく変わりますので、その点留意してお読み下さい。

ファームウェアの書き換え

 購入時のM5Stack Core 2にはCore2 Factory Testのファームウェアが書き込まれています。この状態ではUIFlowを使ってプログラムを作る事ができません。そこでM5Burnerを使ってUIFlowが使えるファームウェアに書き換えます。M5Burnerは以下の公式サイトからダウンロードしてください。また、必要であればUSBドライバーもインストールしてください。

https://m5stack.com/pages/download
 パソコンとM5Stack Core 2をUSBケーブルで接続します。接続したらM5Burnerを起動します。起動すると図のような画面になります。

 最初にUIFlowのファームウェアデータをダウンロードします。M5Stack Core 2の場合は、Alpha-core2のファームウェアを選択します(注意:9月7日時点ではBeta1-core2となっていますので、これを選択してください)。選択したら右下の[DOWNLOAD]ボタンをクリックします。クリックするとダウンロードが始まります。

 ダウンロードが完了したらファームウェアを書き込みます。M5Stack Core 2を接続しているUSBポートを選択します。

 [Burn]のボタンをクリックします。もし、Wi-Fi設定のダイアログが出るようであればSSIDとパスワードを入力してください。

 書き込みが開始されます。

書き込みに成功すると図のような画面になります。[Close]ボタンをクリックします。

M5Stack Core 2の設定

 UIFlowのファームウェアが書き込まれたら今度はM5Stack Core 2側の設定を行います。  起動すると図のような画面になるので[Setup]のボタンをタッチします。画面下の○をタッチしても構いません。反応が鈍い場合はしっかりと軽く押し込むようにタッチしてください。

 次にWi-Fiの設定を行います。自動的に接続できるWi-Fiがポップアップに表示されます。接続したいWi-Fiを選択し[Start]ボタンをタッチします。

 すると図のような画面になります。

 次にM5-7144の名前(SSID)のルーター(M5Stack Core 2です)に接続します。パスワード等はありません。

 接続したらブラウザで192.168.4.1にアクセスします。M5Stack Core 2を接続するWi-FiのSSIDとパスワードを入力します。入力したら[Configure]のボタンをクリック(タッチ)します。

 接続に成功すると図のようになります。

 M5Stack Core 2が再起動し画面にAPIキーが表示されます。これでUIFlowを使う準備は完了です。

UIFlow側の設定

 次にUIFlow側の設定を行います。  まず、https://flow.m5stack.com/にアクセスします。最初にどちらのバージョンのUIFlowを使うか選択します。今回はM5Stack Core 2なのでBeta版を選択します。なお、後からバージョンを切り替えることもできます。バージョンを切り替えたい場合は画面右上にある[VER]ボタンをクリックしてください。

 UIFlowが起動したらAPIキーを設定します。画面左下のApi keyの右側の番号をクリックします。

 設定ダイアログが表示されるのでApi KeyにM5Stack Core 2の画面に表示されているキーを入力します。言語は日本語にします(β版のためすべてが日本語に翻訳されているわけではありません)。DeviceはCore2を選択します。あとは[OK]ボタンをクリックすれば設定は完了です。

設定が完了したらM5Stack Core 2が接続されているか確認します。画面の左下に[接続済み]と表示されていればOKです。接続されていない場合は画面左下のversion:Aplhaの右側にあるリロードボタンをクリックしてください。それでも駄目な場合はM5Stack Core 2の電源を入れ直してください。起動したらリロードボタンをクリックしてください。

UIFlowでタイマーを作る

 今回はM5StickCでRTCを使ったタイマーを作る予定でしたが、せっかくなので最新のM5Stack Core 2でタイマーを作ってみます。ただ、UIFlowのファームウェアがα版でUIFlowがβ版のため、安定版のバージョン1.4.5と同じように作ることができません。仕方ないので1秒ごとカウントアップするだけという超シンプルなタイマーを作成します。

 まず、タイマーの数値となるラベルを配置します。左上にある[Label]のアイコンをドラッグしてM5Stack Core 2画面にドロップします。

 配置した文字(Textと表示されています)をクリックします。すると設定ウィンドウが表示されるのでフォントや文字の内容などを指定します。

 次にタイマーの値(秒数)をカウントする変数を作成します。ここではcounterという名前の変数を作成します。図のように作成します。

 次にイベントのカテゴリにある「タイマー[Please create the timer firest] を[100] [ミリ秒]間隔[PERIODIC]モードで開始」ブロックを配置します。ブロックは[Setup]ブロックの下に連結します。

 同様にイベントのカテゴリから「タイマー[timer1]が呼び出されたとき」ブロックを配置します。

 次に最初に配置したブロックの[Please create the timer firest]の部分をクリックします。すると[timer1]のポップアップが表示されるのでクリックして選択します。

 あとは前回までのようにラベルに変数値を表示するようにブロックを配置します。今回は図のように配置しています。

 なお、Pythonコードで表示すると以下のようになります。

from m5stack import *
from m5stack_ui import *
from uiflow import *

screen = M5Screen()
screen.clean_screen()
screen.set_screen_bg_color(0xFFFFFF)

label0 = M5Label('0', x=12, y=11, color=0x000, font=FONT_MONT_48, parent=None)

from numbers import Number

counter = None

@timerSch.event('timer1')
def ttimer1():
  global counter
  label0.set_text(str(counter))
  counter = (counter if isinstance(counter, Number) else 0) + 1
  pass

counter = 0
timerSch.run('timer1', 1000, 0x00)

 あとは実行ボタンをクリックするとM5Stack Core 2にプログラムが転送され実行されます。

 1秒ごとに数値が増えていきます。1日以上稼働させてみましたが止まることなく動作しました。

 M5Stack Core 2のUIFlowファームウェアもα版でUIFlowもβ版なので、制約はありますが、それでも多くの機能をUIFlowで使うことができます。M5Stack Core 2を入手したらいろいろ作ってみるとよいでしょう。

著者 古籏一浩
プログラミングをベースにして面白そうなものはとりあえずやってみるというスタンス。複雑なものよりシンプルで楽しめるものが好み。最近は30年前に移植したゲーム(mz-700版 SPACE HARRIER)の話などを書いたりしています。
著者サイト:http://www.openspc2.org/