4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5Stack&さくらのモノプラットフォームの検証にPlatformIO for VSCodeを使ってみる

Last updated at Posted at 2022-05-11

記事の趣旨

さくらのモノプラットフォームで提供されている開発キットにはM5Stack向け変換基板が含まれており、M5Stackベースでの検証が可能です。
そのM5Stackの統合開発ツールとして「ArduinoIDE」が挙げられることが多いと思います。

ただ、ArduinoIDEはコンパイルに時間を要しストレスが溜まりますし、ArduinoIDEの高速化の記事はいくつか散見されますがpreferenceの変更や別途ツールの導入が必要だったりと手間がかかります。
例えばハンズオンなどのコンテンツを検討する場合においても、手順がシンプルかつ多くの人に馴染みがあるツールで実施できることが好ましいと考えています。

もう少し手早く修正のサイクルを回せるようにするため、代替ツールとして話題の「PlatformIO」をエンジニアの方にも馴染み深いであろうVSCode上で使用し、さくらのモノプラットフォームで提供されるM5Stack変換基板を用いたサンプルプログラムを書き込めるようになるまでを説明します。

さくらのモノプラットフォームってなんや?

さくらのモノプラットフォーム(以下、モノプラ)は2022年3月24日にリリースされた、さくらインターネットが提供するIoTプラットフォームサービスです。

実態として利用するのはクラウド上に用意されたプラットフォーム部分であり、所定のエンドポイントに所定のデータフォーマットでアクセスします。
また、デバイス側は基板の電子回路から標準ファームウェアと呼ばれる組込みソフトウェアまでを例として公開しており、MITライセンスの下で自由に使うことができます。

これにより、デバイス側は任意のハードウェアや任意のファームウェア/プログラムで構成することができるため、昨今問題になっている半導体不足において、特定の部品等の依存度を下げることができます。
※現時点ではデバイス⇔プラットフォーム間の通信はさくらのセキュアモバイルコネクト(以下、セキュモバ)による4GLTE通信に限定されていますが、今後LTE回線以外からのプラットフォーム利用も受け入れ予定です

なお、公開されている基板は数量の制限はありますが 開発キット として無料で入手することもできるので、比較的簡単に利用できるようになっています。

記事の前提条件

本記事では以下の部分は実施済みとして省略しています。

  • ご利用の流れおよびサンプル基板取扱説明書をもとに、ArduinoIDE環境で動作確認できている
    • M5Stack向け変換基板に部品が実装され、正常に動作することが確認できている
    • 会員IDの取得が完了し、さくらのクラウドコントロールパネルにログインできる
    • セキュモバSIMおよびモノプラの各種リソース作成が完了している
  • こちらの記事等をもとに、VSCodeのインストールが完了している

開発環境の作り方

以下から、実際にPlatform for VSCodeを用いてM5Stack向け変換基板のプログラム例を書き込めるようになるまでの手順を説明していきます。

PlatformIOのインストール

VS Codeを起動し、拡張機能から PlatformIO を検索し、インストールをクリックします。
インストールにはしばらく時間がかかります。
qiita01.png
qiita02.png

インストールが完了したらVSCodeを再起動します。
再起動すると左側にPlatformIOのアイコンが登場します。
qiita03.png

Projectの作成

PlatformIOではまずProjectを作成します。
PIO Home > Open > New Project をクリックします。
qiita04.png
qiita05.png

Project作成ウィザード以下の項目を指定します。
LocationはProjectの保存場所なので、チェックを外してデフォルトではない場所に保存しても問題ありません。

Name:任意のプロジェクトの名前
Board:M5Stack Core ESP32
Framework:Arduino Framework
Location:Use default location

Projectの作成が完了するとエクスプローラーに以下のようなフォルダが構成されます。
qiita06.png

Projectの設定

PlatformIOでは使用するライブラリをProjectごとに指定できます。
今回はM5Stackのライブラリを使用するので、そちらの推奨Ver.を参照するようProjectに設定情報を書き込みます。

PIO Home > Libraries から、今回使用する M5Stack by M5Stack のライブラリを検索します。
qiita07.png

対象のライブラリをクリックし、Installationを開くとplatform.iniファイルにどのような指定をすべきかが記載されています。
qiita08.png

該当の内容をコピーし、Project内のplatform.iniにペーストします。
qiita09.png

サンプルプログラムの取り込み

次に、さくらインターネットで公開されているM5Stack用のサンプルプログラムをプロジェクト内に取り込みます。

上記URLから Code > Download Zip をクリックし、ソースコードをダウンロードします。
qiita10.png

ダウンロードしたZipファイルを解凍し、sipf-std-m5stackフォルダ内の全ファイルをVSCodeのsrcフォルダ内にコピーします。
qiita11.png

元々srcフォルダ内にあったmain.cppファイルを削除します。最終的なsrc内のファイル構成は以下のようになります。
qiita12.png

ビルドの検証

PlatformIOに取り込んだプログラムをビルドしてみます。
本来inoファイルはArduinoIDEで扱うためのファイル形式ですが、PlatformIO側でいい感じに変換してくれるので名前や拡張子の変更は不要です。

PlatformIOアイコンをクリックし、PROJECT TASKS > Default > General > Build もしくは左下のチェックマークをクリックすると作成したProjectのビルドが始まります。
いくつか黄字でWarningのメッセージも見受けられますが、とりあえず止まることなくビルドは進行します。
qiita13.png

ビルドが完了すると成功したことを示すログと完了までに要した秒数が表示されます。
性能の違いもありますが、このPCでは2~3分でビルドが完了しました。
qiita14.png

もう一度ビルドを実行し、完了時間の違いを確認します。何も変更していない状態では10秒足らずで完了しました。
その他、一箇所で定数をいじった場合でも20秒ちょっとで完了するようになりました。
qiita15.png

まとめ

開発環境は情報が多く存在するかも重要ですが、日々の開発において素早く修正→確認のサイクルを回せるようにすることも開発意欲維持の観点で重要です。
PlatformIOを多くのエンジニアにも親しまれているVSCodeの拡張機能として利用できるようになったことで、時間短縮だけでなくその他の拡張機能と組み合わせた開発もできるようになります。

開発するものによっては必ずしも早くなるものでもないと思いますが、ぜひ開発手法のひとつとして検討されてみてはいかがでしょうか?

※Warningをなくすための方法や、よりスムーズな開発を行うために検討すべき設定などがあればご意見いただけると幸いです:relaxed:

参考URL

M5Stackの開発環境を整える - PlatformIO IDE編
【M5Stack】Arduino IDEでの書き込みが絶望的に遅いのでPlatform IOを試してみた
(その2)M5StackをVSCODEとPlatformIOで開発する場合にはまったこと(LDF)

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?