AtomS3 に PlatformIO IDE を使ってプログラムを実行させる
M5Stack は提供されるファームウェアだけでなく、自分で作ったコードを動かすことも比較的簡単です。今回は AtomS3 を使って、コードをビルドして実際にデバイス上で実行するまでをやってみます。
使用する環境
Windows11 の WSL に環境を用意します。コンテナを使うとリセットが容易なのですが、作成したコードを転送する際にシリアルで通信する必要があります。特にデバッグなどでは機器の再起動も発生しますが、コンテナ内だと再起動時にシリアルポートを見失ってしまい、コンテナを立ち上げなおす必要があるなど不便です。
とはいえ、Windows11 に直接環境を作ってしまうと、何かあったときに面倒なことになるので、PlatformIO 実行用に WSL のディストリビューションを使う形にします。
使用するディストリビューションはなんでもいいのですが、ひとつ前の Ubuntu あたりが無難かと考えて Ubuntu 22.04 を選びました。
準備
Ubuntu
まずは普通に WSL で Ubuntu 22.04 をインストールします。Windows11 で PowerShell を開き、以下のコマンドを実行します。
wsl --install Ubuntu-22.04
ユーザー名とパスワードを設定すれば、いつも通りのプロンプトが起動します。次に、必要なパッケージをインストールします。
sudo apt update
sudo apt upgrade -y
sudo apt install -y python3-venv git
VScode
Windows11 で VScode を起動します。リモート エクスプローラー > WSL ターゲット > Ubuntu-22.04 と選択し、接続します。
左下に「WSL:Ubuntu-22.04」と表示されていることを確認し、拡張機能を開き検索欄から「platform」を検索します。以下の画面のように「PlatformIO IDE」が見つかると思うので、これをインストールします。
ライブラリのダウンロードもあるので、少し待ちます。拡張機能のインストールが終わると、確か VScode の再起動を求められるので、再起動すると以下のように PlatformIO IDE のアイコンが追加されます。
プロジェクト作成
本来は PlatformIO IDE の画面からプロジェクトを作成したりできるのですが、今回は Windows11 で起動した VScode で Ubuntu 側の PlatformIO IDE を操作するため、パス区切りに不具合があるなどすんなりとはいきません。そのため、CLI を使ってプロジェクトの作成を行います。
まず、PlatformIO IDE 拡張の「PlatformIO Core CLI」を開きます。
開いたコンソールで適当なディレクトリを作成し、その中で pio init
コマンドを実行してプロジェクトを初期化します。
※--borad
に渡す引数の確認方法は後ほど記載します
このように Project has been successfully initialized!
と表示されれば OK です。
VScode のファイルエクスプローラーより、フォルダーを開くで先ほど初期化したフォルダーを開けば、自動的に PlatformIO IDE が認識してプロジェクトを開いてくれます。ウインドウ下部に PlatformIO IDE のコントロールアイコンが並んでいるのがわかります。
board の引数
pio init
コマンドのオプションで --board
がありましたが、ここで対象のデバイスを指定する必要があります。pio init
を実行する CLI で、
pio boards
と実行すると、--board
で利用可能な引数の一覧がでますが、数が多いので探すのが大変です。その場合は、
pio boards atom
と検索することができます。この場合だと「M5Stack AtomS3」と「M5Stack-ATOM」が出てきたので、今回は AtomS3 を使います。
Hello World
今回使用する AtomS3 にはディスプレイがあるので、そこに「Hello World」と表示してみましょう。まず、ディスプレイに出力するために必要なライブラリを定義するため、以下の行をプロジェクトのルートディレクトリに作成された「platformio.ini」ファイルに追記します。
lib_deps = m5stack/M5Unified@^0.1.16
platformio.ini ファイルを保存すると、自動的にライブラリのロードが行われます。そのうえで、プロジェクトのルートディレクトリにある src
の中に main.cpp
というテキストファイルを作成し、以下の内容を記述します。
#include <M5Unified.h>
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
M5.Display.setTextSize(3);
M5.Display.print("Hello World!!");
}
void loop() {
}
ファイルを保存したら、VScode のウインドウ下部にある「PlatformIO: Build」のボタンをクリックしてビルドをします。
ビルドが正常に終わると「SUCCESS」と表示されます。
あとはデバイスにアップロードします。AtomS3 を USB で PC に接続し、usbipd コマンドを使って WSL にデバイスを接続します (前回の記事の「補足 (WSL の Ubuntu に USB デバイスを接続する)」 が参考になります)。
そのうえで、VScode のウインドウ下部にある「PlatformIO: Upload」のボタンをクリックします。
アップロードが行われ、こちらも「SUCCESS」と表示されれば OK です。
この状態で AtomS3 の画面には、「Hello World」と表示されているはずです。