小型万能マイコン「M5Stack」の野良アプリを色々試してみる方法(VS Code + Platform IO)

M5Stackを買い増ししました

 早速ですが、最近個人的に一番熱いなと思っているマイコンモジュール「M5Stack」を買い増ししたことをここにご報告いたします。理由は、スイッチが壊れてしまったからです。これ、結構壊れやすいと思うので扱いには注意を…


 左が無残に壊れたM5Stack。スイッチ以外は無事なので、表示用として使います

 買い増しは、以前売り切れで買えなかった9軸ジャイロ搭載のM5Stack Grayにしました。

[asin:B07BW4KVWM:detail]

 今回は、M5Stack公式サンプル以外のネットで無料で公開されているアプリを色々試してみました。「Arduinoベースだし、コピペしてビルド、アップロードのクリック2回で動くだろガハハ!」と思っていたら、意外にそうでもないといういつものアレだったので、メモがわりに書いておきます。

M5Stackのアプリを試す

 基本的な環境設定は、以下記事を参考にセットアップして下さい。M5Stackをスマートウォッチにするの部分は省略してOKです。

 以下は上記のセットアップが完了した前提での説明です。

Platform IO(+ Visual Studio Code)のセットアップ

 Arduino IDEで後述する顔表示のアプリをビルドしようとしたら、fatal error: utility/In_eSPI.h: No such file or directory compilation terminated.というエラーがでて検索してもよく分からなかったので、今回Arduino IDEの他にPlatform IOという開発環境を試しましたのでそのセットアップ方法を説明します(Arduino IDEと共存可能です)。なお、Platform IOはCUIでも使えるのですが、VS Codeというエディタのプラグインという形式でも提供されています。VS Codeのプラグイン形式で使うと、IDE環境っぽく使えてコーディングからビルド、ボードへの書き込みまでシームレスにできて良いかなと思い、今回はこちらを選択しました。

 Arduino IDE以外は使いたくない!って人は、ここと顔表示のアプリを飛ばして下さい。顔表示もひょっとしたら、環境によっては(Windowsとか)Arduino IDEでもうまくいくかもしれません。

 以下の記事が、Platform IOから、M5Stack-Avatarの導入まで非常に丁寧に書いてあって参考になりました。

 Macのケースでポイントだけ書くと、VS Codeというエディタをインストールします。Homebrewを使えば以下コマンドで一発です。

$ brew cask install visual-studio-code

 Homebrewに関しては以下記事参照下さい。

 あとは、拡張機能で「PlatformIO IDE」をイントール

 Platform IO IDEから、M5Stack-Avatarをインストール

 あとは、勘でゴニョゴニョやればビルドと基板の書き込みができます(笑)。上記のQiita記事が詳しいですね。

 ちなみに私の環境だと、一回プロジェクトを作成してからそのままビルドできなかったので、VS Codeを再起動してから作成したプロジェクトを開くという謎儀式が必要でした。そのうちバージョンアップで直ると思いますが参考まで。

 M5Stack-Avatarは複数のサンプルあって、表情を色々変えて遊べたりします。オリジナルの顔も面白そうですね。

M5Stack Avatarようやく動いた。可愛いね

karaageさん(@karaage)がシェアした投稿 -

 ちなみに顔表示以外のアプリはPlatform IOを使わなくてもArduino IDEだけでできますが、Platform IOでインポートしてもOKです。

顔表示(M5Stack-Avatar)

 よく見る顔を表示するやつです。私はArduino IDEでうまくいかなかったので、上記のPlatform IOを使ってセットアップしました。

 Arduino IDEの場合は、以下記事を参照するのが良さそうです。Windowsならうまくいくかも、多分。

倉庫番

 M5Stackで倉庫番ができます。

 以下GitHubからダウンロードします。

 ダウンロード方法は、上記のサイトの右のほうの「Clone or download」をクリックして「Download ZIP」をクリックするだけです(以下の図を参照)。

 ダウンロードしたファイルを解凍して、フォルダを実際に使用するArduinoのファイル「M5Stack_Sokoban.ino」に合わせて「M5Stack_sokoban」に変更して下さい。あとは「M5Stack_Sokoban.ino」をダブルクリックしてArduino IDEで開いて、Arduino IDEでビルド、書き込みを行って下さい。

 なお、GitHubが何か知りたいって人は以下参照下さい(知らなくてもアプリを使うことは可能ですので、アプリの開発やバージョン管理に興味ある人のみでOKです)。

 ボタンが3つのため、同時押しを駆使する必要があるため、プレイは正直かなり厳しいです(笑)

テトリス

 M5Stackであのテトリスができます。ソフトは以下GitHubリポジトリで公開されています。

 ダウンロードとビルド、書き込みは倉庫番と同様です。フォルダ名は、Tetris.inoファイルに合わせてTetrisに修正して下さい。後から気づいたのですが、実はM5Stackのサンプルに同じものが入っていたりするので、Arduinoのスケッチ例から「M5Stack」-> 「Games」 -> 「Tetris」からでもOkです。

 操作方法や、背景画像の設定方法などは、以下サイト参照下さい。

TETRIS with M5STACK | macsbug

ライフゲーム

 ライフゲームです。以下GistのコードをArduino IDEにコピペして保存してから、ビルドして書き込めばOKです。

M5Stack_lifegame · GitHub

 M5Stackのサンプルにも「M5Stack」-> 「Advanced」 -> 「Cellar_Automator」にライフゲーム的なものはあるのですが、こちらの方がみやすくて良い感じです。

今後試して見たいアプリ

 今後試してみたいM5Stackのアプリ(応用例)へのリンクを羅列します。試したら詳細追記するかもしれません。

M5Stackに天気予報、スクロール時計、Yahooニュース、メッセージ表示させてみた | mgo-tec電子工作

M5stack(ESP32)で朝顔水やりロボットを作ってみた - OGIMOノート ~家族のためのモノづくり~

GitHub - robo8080/M5Stack_WebRadio_Avatar: M5StackでAvatar表示付きWebRadio

M5Stackでいろいろやってみた。 - Togetter

GitHub - nomolk/M5Stack_CrackScreen: Crack your M5Stack!!

M5Stack から Slack へ投稿できた編 | Moonmile Solutions Blog

【簡単IoT】ESP8266(+Amazon echo)で寝室からの呼び出しボタンを作ってみた - OGIMOノート ~家族のためのモノづくり~

GitHub - sandman72/Fauxmoesp: My Fauxmo port to the ESP32 platform *DEPRECATED*

ESP32からGoogleHomeをBluetoothスピーカとして使う – Watako-Lab.

MacでESP32の開発環境をセットアップする(ESP-IDF編) - Qiita

GitHub - lovyan03/M5DropMenuSample: M5Stack dropdown menu code sample

M5Stackによる「温湿度計+α」の製作 – スイッチサイエンス マガジン

PlatformIOトラブルシューティング

 USBシリアルがArduino IDEだとちゃんと認識するのに、PlatformIOでは何故か認識しないことがありました。Arduino IDEや、ターミナルで、$ ls /dev/cu*でUSBシリアル調べて、以下のようにシリアルポートを固定すればOKです。

upload_port = /dev/cu.usbserial-017D1A82
monitor_port = /dev/cu.usbserial-017D1A82

まとめ

 M5Stack、Arduinoベースだしアプリ試すのくらい簡単だろと思っていたのですが、意外にハマってしまいました。マイコン開発環境セットアップあるあるですね。今回、VS CodeにPlatform IOという開発環境の組み合わせを初めて使って見たのですが、コーディングからビルド、マイコンへの書き込みまでシームレスにできるのでなかなか良かったです。Platform IOはM5StackやArduinoの他、様々なマイコンボードに対応しているので、VS Code+Platform IOは、汎用的な開発環境として使えそうな可能性を感じました。

 また、M5Stackは、ESP32の機能を最大限に使おうとする場合は、ESP-IDFを使う必要があるとか色々深そうな気配がしてきました。お手軽マイコンという印象だったのですが、マイコン沼は深いですね…どんなことができそうかだいたいわかってきたので、今後はオリジナルのアプリやシステムも作ってみたいなと思っています。

[asin:B07BW4KVWM:detail]

関連記事

変更履歴

  • 2023/05/02 シリアルポートの固定に関して追記