vscode用のArduino CLI拡張機能を作った

概要

Arduino IDEだとバージョン番号の固定ができず、PlatformIOだとちょっと標準と違うのでArduinoプロジェクトの管理が面倒だったのですが、Arduino CLIの欠点であるコマンドラインが面倒なのをvscode用の拡張機能を作って低減してみました。

Arduino CLIとは?

Arduino IDEの内部で利用されているビルドシステムです。Arduino IDEのエディタ部分から呼び出されており、Arduino IDEでできることはほぼArduino CLIで実行されています。

Arduino CLIを使うことで、好きなエディタを利用してもArdiuno IDEと同じビルド環境を利用することができます。そしてArduino IDEは利用していない機能がArduino CLIにはたくさんあり、その機能を使いやすくするvscode用の拡張機能を作ってみました。

Arduino CLIの内部動作

FQBN(Fully Qualified Board Name)指定

arduino:avr:unoなどのボード名を指定して動くモードであり、Arduino IDEと同じ動きをします。ライブラリなどはすべてのプロジェクトで共通であり、基本的には最新バージョンを使うこととなります。

このFQBN指定の場合にはArduino IDEと同じですので、好きなエディタを利用できる程度の利点しかありません。他のエディタで編集してArduino IDEでビルドするのとあまり変わらない動作となります。

Sketch profile指定

プロファイルという、ボードの他にプラットホームと利用するライブラリのバージョンなどを指定して動くモードです。

このモードの場合にはグローバルのライブラリ設定とは切り離され、指定したバージョンのプラットホームとライブラリのみ利用できます。

動作的にはPlatformIOに近いのですが、ビルド環境自体はArduino IDEと同じで、バージョン指定や追加オプションなどを指定できるのが利点になります。

PlatformIOとの違い

PlatformIOは良くも悪くもArduino以外の環境を含めて、簡単に環境を構築できるためのツールとなります。そのためArduinoに特化しているわけではなく、PlatformIO側の共通設定が必要であり、Arduino IDEとはかなり動きが違うところがあります。

とくにボードの設定が違いが出やすく、ボード定義自体がまったく違うことと、Ardiuno IDEの場合にはデフォルトで有効化されている設定がPlatformIOでは無効になっていることが多いです。

ESP32-S3の場合にはUSB CDCなどがArdiuno IDEはデフォルトで有効なのですが、PlatformIOでは対応するdefineを自分で指定する必要があります。

あとPlatformIOはライブラリのバージョンは指定できるのですが、ライブラリ自体をPlatformIOが管理しており、古いバージョンはキャッシュから消されて利用できないなどの弊害もあります。

とくにESP32はPlatformIOの公式サポートからはずされ、pioarduinoを使うことになったので少し不安感があります。

PlatformIOのコードはArdiuno IDEではビルドできないこともあって、私はあまり使っていませんでした。

作成したvscode用拡張機能

Arduino CLI Wrapper - Visual Studio Marketplace
Extension for Visual Studio Code - Run Arduino CLI commands from VS Code

上記の拡張機能となります。基本的にはArduino CLIのラッパーであり、vscode上からコマンド実行をするだけのものになります。

ただし、それだけでは使いにくいので手で管理することが面倒なプロファイル周りのヘルパーなどを整理しています。

利用例

Arduino CLIのセットアップ

Windowsの場合には上記が最新なのでセットアップしておきます。Arduino IDEの中にもArduino CLIが入っているのですが、若干古いので最新バージョンをおすすめします。

WinGetでもインストールできるのですが、少しバージョンが古いことがあるのでArduino公式的には非推奨みたいです。

公式のセットアップ方法は上記になります。

適当なプロジェクトフォルダを作る

  • “C:\Tmp\cli-test”

どこでもよいのですが、まっさらなフォルダとして上記を作ってみました。このフォルダからvscodeを呼び出してみます。

すでに日本語化されている状態でまっさらなフォルダになります。ここから拡張機能のインストールをします。

「arduino cli」で検索すると一番上にでた緑色のアイコンになります。これをインストールしていきます。

インストールしました。左パネルに「ARDUINO CLI」が追加されていますが、いまはまだ何もありませんが、後ほどバージョン確認などのコマンドショットカットを追加しておくはずです。

arduino-cliの確認

Ctrl+Ship+Pなどでコマンドパレットを開き、「Ardino CLIのShow Version」を選択します。

ターミナルにarduino-cliのバージョンが表示されたら実行できる環境です。ここでエラーが出る場合にはarduino-cliの再セットアップか、すでにあるAruino IDEの中にあるarduino-cliのPathを指定します。

新規スケッチ作成

「New Sketch」を選択して、その後にスケッチ名をいれます。

今回は「test」にしてみました。

testというスケッチが作成されました。実行したコマンドは青の「arduino-cli sketch new c:\Tmp\cli-test\test」になります。

「C:\Tmp\cli-test\test\test.ino」というファイルが作成されました。Arduino IDEなどの成約として、スケッチ名と同じフォルダにいれる必要があり、自動的にフォルダも作成されます。

inoファイルができると下のステータスバーにアイコンが表示されます。

プロファイル作成

「sketch.yaml Helper」を呼び出します。

上記の自作したプロファイル作成用のヘルパー画面が表示されます。今回はATOM Liteで作ってみたいと思います。

atomとフィルターにいれて絞り込んだ状態です。M5Atomはよく見ると2つあります。FQBNの先頭がesp32とm5stackがあり、esp32が標準環境のボードマネージャーで、m5stackがM5Stack社のボードマネージャーになります。

通常はどちらをつかっても構わないのですが新しいボードはEPS32公式に追加されるのには時間がかかるので、M5Stack版が作成されたように思えます。一番下のM5AtomS3RはM5stack社版にしか存在していません。

今回は「m5stack:esp32:m5stack_atom」を選択してみました。ボードが1つに確定をすると細かいオプションを指定するモードになります。テキストエリア部分がプロファイルの指定で、プラットホームのバージョン指定と利用するライブラリの指定をしています。

少しスクロールするとArduino IDEのメニューから選択可能な部分があります。

Core Debug LebelをNoneからVerboseに変更しました。

この状態で上までスクロールで戻るとFQBNが「m5stack:esp32:m5stack_atom:DebugLevel=verbose」に変更されています。

このようにArduino CLIの内部ではここにオプションを指定するのですが、手で管理するのはちょっとつらいのでヘルパーになっています。

そしてもっと下にはライブラリの一覧があります。

たくさんありすぎるので、「Only selected」でチェックが付いているものだけ表示しました。デフォルトでこの2つはm5stackが入っているFQBNの場合には追加しています。ATOMだと実際はいらないのですが、ほかはあったほうが楽だと思います。

上に戻って「sketch.yaml」に反映ボタンを押します。

先程の内容で「sketch.yaml」が作成されました。左下のパネルにグローバルのコマンドとtestスケッチへのコマンドが追加されました。

バージョン情報の確認

わざとバージョンを0.0.0に変更してからヘルパーを開いてみます。

そうすると最新バージョンと違うバージョン指定の場合には更新するボタンがでます。通常は最新を使っておけばいいのですが、変更されると困る場合には手で管理してください。

最新に更新ボタンを押すとテキストエリアが更新されるので再度反映ボタンで実際のプロファイルに反映させます。

別のプロファイルを追加

再度ヘルパーを起動します。

一番上のフィルターを「m5stick」に変更しました。

「esp32:esp32:m5stack_stickc_plus2」を選択してみました。

この状態で反映をするとプロファイル名が違うので追加されます。この状態ではどちらのプロファイルが使われるかわかりにくいです。

一番下にある場所がプロファイルの指定なのでクリックすると、上にプロファイルの選択がでます。

「m5stack_stickc_plus2」を選ぶと下も変わり、プロファイルのデフォルトも「m5stack_stickc_plus2」になっています。

このように複数のプロファイルを利用することも可能です。

ポート指定

画面下のポートをクリックすると、上に利用できるポートが選択できます。今回はCOM6にATOMが接続されています。

COM6を選択しました。これで以降はCOM6に対しての処理になります。

スケッチの編集

とりあえずシリアルに出力するコードを書きます。

void setup()
{
    Serial.begin(115200);
}

void loop()
{
    Serial.println("Hello, World!");
    delay(1000);
}

上記のシンプルなものです。ここで重要なのはSerialとdelayが赤波線がついています。

問題を見ると定義されていませんとなっています。この状態ではArduinoのPathが設定されていませんのでエラーとなります。

一度ビルドする

左下のビルドを選択するとビルドがはじまります。初回は結構時間がかかるはずです。このときにボードマネージャーがインストールされていない場合にはプロファイルに従って自動ダウンロードされます。特にバージョン指定しているので、Arduino IDEとは違うバージョンが利用可能になっています。

一度ビルドを実行するとc_cpp_properties.jsonが作成されて、ビルド中のincludePathを大量に登録してくれます。その結果問題がなくなりました。

アップロードする

左下のアップロードボタンを押すとアップロードがはじまります。

シリアルモニター

ステータスバーからモニターを選択するとターミナル部分にモニターが表示されます。うまく表示されない場合にはボードの電源を入れ直すか、モニターボタンを再度押すと表示されるはずです。

スケッチの反映

スケッチのテキストを少し更新します。

反映させるために再度アップロードを行います。このときモニターが開いていたら自動的に閉じてくれるはずです。

転送が終わるとモニターが開き直されるはずです。動きがおかしい場合にはもう一度モニターボタンを押してください。

SPIFFS/LittleFSデータ転送機能

細かい機能は調整中なのですが、dataフォルダを作成してファイルをいれて、一度ビルドをすることでパーティション情報などを取得して、その後にUpdate Dataでデータを転送することができます。

#include <Arduino.h>
#include "FS.h"
#include "LittleFS.h"

void listDir(fs::FS &fs, const char *dirname, uint8_t levels)
{
  Serial.printf("Listing directory: %s\n", dirname);

  File root = fs.open(dirname);
  if (!root)
  {
    Serial.println("- failed to open directory");
    return;
  }
  if (!root.isDirectory())
  {
    Serial.println("- not a directory");
    return;
  }

  File file = root.openNextFile();
  while (file)
  {
    if (file.isDirectory())
    {
      Serial.printf("  DIR : %s\n", file.name());
      if (levels)
      {
        String path = String(dirname) + "/" + file.name();
        listDir(fs, path.c_str(), levels - 1);
      }
    }
    else
    {
      Serial.printf("  FILE: %s  SIZE: %u bytes\n", file.name(), (unsigned)file.size());
    }
    file = root.openNextFile();
  }
}

void setup()
{
  Serial.begin(115200);
  delay(200);

  if (!LittleFS.begin(true))
  { // 第1引数trueで初回は自動フォーマット
    Serial.println("LittleFS Mount Failed");
    return;
  }

  // test.txt を書き込みモードで開く
  File file = LittleFS.open("/test.txt", FILE_WRITE);
  if (!file)
  {
    Serial.println("Failed to open file for writing");
    return;
  }

  // データを書き込み
  if (file.println("Hello, this is a test file."))
  {
    Serial.println("File written successfully");
  }
  else
  {
    Serial.println("Write failed");
  }
  file.close();

  listDir(LittleFS, "/", 3); // ルートから3階層まで再帰表示
}

void loop()
{
}

上記はLittleFSを利用してtest.txtを作成し、その後にファイル一覧を出力するプログラムです。

File written successfully
Listing directory: /
  FILE: test.txt  SIZE: 29 bytes

EraseしてからUpdateしたところ、上記の表示になりました。この状態から「Update Data」を実行するとmklittlefsでdataフォルダの中身を転送用のバイナリファイルに変換し、esptoolを使って転送する処理が走ります。

File written successfully
Listing directory: /
  FILE: show-properties.txt  SIZE: 38865 bytes
  FILE: sketch.yaml  SIZE: 483 bytes
  FILE: test.txt  SIZE: 29 bytes

その結果dataフォルダにあったファイルが追加されているのがわかります。

まとめ

まだまだ作ったばかりで手を入れているので細かい動きが変わるところがあると思います。ESP32の使いそうな機能から実装しているので、ちょっと動きがおかしいところがあるかと思いますが、手でプロファイルの管理をするよりは楽だと思います。

一度プロファイルまわりを整備してしまえば上記で紹介しているコマンドでも問題ないと思います。逆に環境整備がない状態でバッチファイルを起動するだけでArduino CLIをダウンロードしてビルドまで一気に整備してくれるようなものを作ることが可能です。

コメント

  1. hsenshu より:

    いつも、お世話になっております。

    さて、Arduino IDEの完成度に疑問を感じ、こちらで作成された Arduino CLI
    Helperを試しています。

    ボードにはM5StickCPlus2を使っていますが、「ボードを設定するところ」で
    VS Codeが応答なし(ハングアップ状態)になります。

    何度か試しましたがうまくいきません。M5StickCPlus2は選択肢が複数ある
    ためかとも思いましたが、他のボードでもうまくいきません。

    何か注意点はあるのでしょうか。

    なお、フォルダーには、XXX.yamlのようなファイルはありません。

  2. hsenshu より:

    やっとわかりました。

    arduino-cli board listall m5StickCPlus2

    のように入力し、board用の関連ツールを手動で入力したところ、必要な
    ツール類がインストールされ、動作しました。

    Arduino IDEで使用されるものとは別にインストールされるようです。

    この部分は、過去にArduino-CLIを単独で使っていれば不要かもしれ
    ませんが、私はそうした近い方をしておらず悩みました。

    【訂正】

    Arduino CLI helper ではなく、正しくはArduino CLI Wrapper でした。

    • たなかまさゆき より:

      よかったです
      どこで止まったか後で確認しておきます
      基本はsketch.yamlヘルパーからボード設定をするのがおすすめです
      その場合は初回コンパイル時に自動で追加されるはずです
      細かいオプション設定を手でするのは難しいので、ヘルパー経由で設定して反映ボタンでsketch.yamlに設定する流れがおすすめです

      逆にsketch.yaml使わないパターンはあまり作り込めてないので、どこかおかしいかましませんので確認します!

  3. hsenshu より:

    【訂正】ミスが多くてすみません。

    ☓ arduino-cli board listall m5StickCPlus2
    ◯ arduino-cli board install m5StickCPlus2

  4. hsenshu より:

    連投ですみません。

    sketch.yaml Helperを起動すると、「ウインドウから応答がありません」
    (ほぼ毎回)と表示され、VS Codeが終了します。

    重要な作業をしている時にこれが起きるのは非常に困ります。

    私だけの問題でしょうか。

    • たなかまさゆき より:

      調査中ですが、そこそこのサイズのファイルをダウンロードして、数時間はキャッシュする処理があります
      ただ環境のダウンロードはできているので、そこでは大丈夫な気がするんですよね

      あとはarduino-cliのバージョンが古いと起動まで少し時間かかるので、最新バージョンに更新してみると改善するかもしれません
      手元だとarduino-cli.exe 1.3.1でした
      もう少し調査してみます

  5. hsenshu より:

    調査していただき、感謝いたします。

    なお、私の環境は以下の通りで、1.3.1を使用しております。

    >WHERE arduino-cli
    C:\Program Files\Arduino CLI\arduino-cli.exe

    >arduino-cli version
    arduino-cli Version: 1.3.1 Commit: 08ff7e2b Date: 2025-08-28T13:51:38Z

    • たなかまさゆき より:

      確認ありがとうございます
      まっさらな状態でVSCODEのインストールからやってみましたが、New Sketchで新しいSketchを作成して、sketch.yamlヘルパーからボード定義して、コンパイルまではできました。

      なのでセキュリティーソフトとかでVSCODEの拡張機能からのダウンロードとかがブロックされているかもしれません
      該当部分はWebViewでブラウザを利用しているのでそのへんが原因かもしれません

      もうちょっと確認してみたいと思います!

  6. hsenshu より:

    わざわざまっさらな環境でお試しいただき、恐縮しています。

    私の現況をお知らせします。

    1. VS Codeで、CLI用のフォルダを開く
    2. New Sketch で新しいSketchを作成
    3. sketch.yamlヘルパーからボード定義(M5StickCPlus2のMstackh版を指定)

    この後で応答が無くなります。

    基本的な使い方は違っていないと思うのですが…

    • たなかまさゆき より:

      ありがとうございます!
      確認対象が絞れてきたのでもう少し探してみたいと思います

      WebViewでライブラリの一覧とかを取得している処理かもしれません
      ボードを選択すると、Upload速度の指定とかIDEのボード設定の他に、ライブラリを追加する機能があります

      そのへんを見直してみます!

      • たなかまさゆき より:

        このへんは大量のボードとライブラリのデータを読み込んで、毎回描画しているところがあったのでそこが原因かもしれません
        軽量化できるか試してみたいと思います

  7. hsenshu より:

    お手数をおかけしております。

    Arduino IDEでも同様ですが、時間のかかる処理が必要な場合もある
    と思います。

    その時に、一切の表示を停止するのではなく、内部の処理を表示して
    もらえませんか?

    そうすれば、利用者は待てますし、ウインドウが停止することも無い
    と思います。

    • たなかまさゆき より:

      新しいバージョンで表示件数を絞り込んでみました
      基本時間かかる処理はブロックしないようにしているのですが、ここは私の環境で1秒前後だったのでブロックになっていました

  8. hsenshu より:

    > sketch.yamlヘルパーからボード定義(M5StickCPlus2のMstackh版を指定)
    > この後で応答が無くなります。

    と報告してきましたが、試しに数分間待ってみました(数回「待つ」を
    クリック)。

    そうすると、大量のライブラリーを選択する画面が現れました。

    簡単には指定できませんが、これは正しい動作なのですね?
    (ヒントでもないと、数百個の中から選ぶのは困難です)

  9. hsenshu より:

    改定版のアップロードに感謝いたします。

    36分前に更新されたWapperを使ってみました。

    以前のようにブロックされることは無くなったように見えます。

    私の環境では、516のライブラリーがリストされますが、先頭にFilterが
    あることに気づきました。

    まだ思ったように使えておりませんが、また報告いたします。

  10. hsenshu より:

    Arduino CLI Wapper のテスト用に以下のプロジェクトを試してみました。

    https://github.com/ahmed4050/M5StickCPlus2_Template

    PlatformIO用に書かれていますが、Arduino CLI Wapper でコンパイルし
    動作も確認できました。

    もう少し使って、色々試してみたいと思います。

    “` sketch.yaml
    profiles:
    m5stack_stickc_plus2:
    fqbn: esp32:esp32:m5stack_stickc_plus2
    platforms:
    – platform: esp32:esp32 (3.3.2)
    platform_index_url: https://espressif.github.io/arduino-esp32/package_esp32_index.json
    libraries:
    – M5GFX (0.2.15)
    – M5Unified (0.2.10)
    – WiFiManager (2.0.17)
    “`

  11. hsenshu より:

    お世話になっております。

    Arduino CLI Wrapperでコンパイルすると、ライブラリーのコンパイル時の
    警告を受けることがないのはよいのですが、内部で何が起きているのかが
    不明でそれが不安になります(先のプロジェクトでは数分間)。

    コンパイルを行っている対象だけでも表示できないでしょうか。

    また、自分の作成したコードだけを修正して再コンパイルすると、ライブラ
    リーも再コンパイルされるようにみえますが、使い方のせいでしょうか。

    • たなかまさゆき より:

      下のステータスバーで表示の設定ができます
      デフォルトはワークスペースの警告だけ表示していますが+V付きの物を選ぶと経過が見えると思います

  12. hsenshu より:

    応答が遅いのが改善はWrapperが改良されたためだと思ますが、
    arduino cli Wrapperを使い始める前に、以下のコマンドを
    Power Shell上実行し、arduino cli の動作を事前に確認して
    おくと良さそうです。

    arduino-cli config init

    arduino-cli core update-index

    arduino-cli board listall

    • たなかまさゆき より:

      いまsketch.yaml使う前提なので、使わない時の処理も今後整理したいと思います

  13. hsenshu より:

    > デフォルトはワークスペースの警告だけ表示していますが+V付きの物を選ぶと
    > 経過が見えると思います

    この機能は知りませんでした。その機能を確認しました。

    沈黙で数分間待つのは苦痛ですが、頑張っているのがわかれば待つことができます。

    > いまsketch.yaml使う前提なので、使わない時の処理も今後整理したいと思います

    当初、sketch.yaml関係の処理がうまく行かないことがあり、arduino-cliの設定が
    関係しているのでは?と考えていました。

  14. hsenshu より:

    Arduino CLI Wrapperの改良、お疲れ様です。

    ver 1.6.2 では、インスペクター関係の機能が強化され、以前のような
    「ウインドウの反応無し」の不具合は収まりました。

    早速更新してみましたが、インスペクターは短いソースでも予想以上に時間が
    かかり、10分以上「別の分析が進行中です。完了までお待ちください。」と
    なりました。

    別のプロジェクトでは解析エラーになったので、プロジェクトを変更したのです
    が、それが影響したのでしょうか。

    ライブラリーをきめ細かく指定できるのはありがたいのですが、ZIPファイルの
    ライブラリーなども使っています。

    Arduino IDEやPlatformIOでビルドできたプロジェクトを、この開発環境で通す
    だけでも苦労しています。

  15. hsenshu より:

    インスペクターがあまりに長時間終了しないので、一度閉じて、再度試した
    ところ、数秒で表示されました。

    何かが影響していたようです。今までに見たこともなかった詳細情報が
    確認できます。

    これが使えるだけでも、このWrapperは魅力的に感じます。

    • たなかまさゆき より:

      インスペクターはビルド結果を独自に集計していますが、make clean相当の処理が入っているので少し重いはずです
      ただハングアップはしないようなのでなんでそう。。。

      ライブラリ系はarduino-cliは若干使いにくいところがあって、sketch.yamlを使うとデフォルトのライブラリフォルダは読みにいかなくなると思います。

      libraries:
      – dir: libs

      上記のようにdir: でPATH指定して追加することもできます。ライブラリマネージャーにないものはプロジェクトフォルダにlibsなどのフォルダを作成し、その中に展開したzipを入れとくのがおすすめの管理方法となります
      もしくは C:\Users\%USERNAME%\Documents\Arduino\libraries 相当のフォルダがIDEでのライブラリフォルダになりますので、こちらを指定する方法もあります

      ただプロジェクトごとにライブラリのバージョン指定ができなくなるので、非推奨です

  16. hsenshu より:

    インスペクターの理解が不十分でした。とても優れた機能だと思いますが、使用する
    には注意が必要でした。

    [inspector] $ & arduino-cli compile “–warnings=all” –json –clean –profile m5stack_stickc_plus2 g:\CLI-test\ex1

    インスペクターは↑のようにコンパイルを行って、生成された実行イメージを分析する
    ツールです。したがって、瞬時に解析できるわけではなく、(試したプロジェクトでは)
    約5分後に解析結果が表示されました。

    使っているPCの性能にもよるのでしょうが、分析ボタンを押して5分程度も待たされる
    のは何とかならないでしょうか(しかも進捗状況は不明です)。

    「数分は覚悟してください」といったメッセージでもあれば、間違えて押してしまう
    事は避けられる気がします。

    • たなかまさゆき より:

      –clean

      つけているのが遅い原因なのですが、変更した場所によっては–clean付きじゃないと反映しない場合があるので追加しています

      Windows上のビルドはかなり遅いですよね。。。
      私はVS CODEからWSL上のフォルダ上でビルドしています

      WSLでUbuntuなどの環境があるのであれば、ソースがあるフォルダからcmdを呼び出して、さらにwslに入って、code .でVS CODEを起動することでWSL上でビルドすることができます
      この場合転送はWindows側から呼び出すのでCOM3とかの指定が可能です

      ちょっと環境構築が面倒なので後日Blogなどでやり方まとめたいと思います

  17. hsenshu より:

    連日(朝晩?)の更新に感謝いたします。

    まだ使いこなせておりませんが、機能は確実に強化されております。

    • たなかまさゆき より:

      最低限のところを作ったので、いまは実際に他のプロジェクトをこれで開発してみて、使ってみて微調整をしているところです

      他のプロジェクトの開発で予想以上に手が取られているのですが、やっぱり使ってみないとわからないことがたくさんあります

  18. hsenshu より:

    本日も更新がありました。

    > Unreleased
    > (JA) ビルドチェック実行中に各プロファイルのコンパイルが長時間かか
    > る場合、右下の通知プログレスを表示するようにしました。進行中
    > の別コマンドがある場合は競合を避けるためビルドチェックを中断
    > します。

    実装はこれからのようですが、私の主に使っているPCでは分単位の時間が
    かかるので、こうした機能は大変助かります。

    無理は禁物ですが、大いに期待しております。

  19. hsenshu より:

    |スケッチ|プロファイル|結果|警告|エラー|プラットフォーム|ライブラリ|経過秒数|
    |—|—|–|–|–|–|–|–|
    |ex1/. |m5stack_stickc_plus2|成功|1|0| m5stack:esp32 @ 3.2.3||192|
    |||||||M5GFX @ 0.2.16||
    |||||||M5Unified @ 0.2.10||
    |||||||WiFiManager @ 2.0.17||
    |||||||WebServer @ 3.2.1||
    |||||||FS @ 3.2.1||
    |||||||Networking @ 3.2.1||
    |||||||WiFi @ 3.2.1||
    |||||||Update @ 3.2.1||
    |||||||DNSServer @ 3.2.1||
    |||||||ESP32 Async UDP @ 3.2.1 ||

    こんな感じです(3分程度を要しています)。

  20. hsenshu より:

    連日の機能追加、ありがとうございます。

    確認するだけでも大変なほどの機能追加に頭が下がります。

    > Changelog / 変更履歴
    >
    > Unreleased
    > (JA) コマンドセンターの各カードに実行される arduino-cli コマンドを
    > 表示し、実行前に内容を把握できるようにしました。
    >
    > 1.7.2
    > (JA) Build Check と sketch.yaml バージョンチェックの実行直前に
    > arduino-cli update を必ず走らせ、常に最新のコア/ライブラリイ
    > ンデックスで処理するようにしました。
    >
    > (JA) sketch.yaml バージョンチェックではボード/ライブラリ用メタデー
    > タ JSON を毎回強制的に再取得し、常に最新の定義を基に比較できる
    > ようにしました。
    >
    > (JA) arduino-cli cache clean を実行する “Arduino CLI: キャッシュを
    > クリア” コマンドを追加し、VS Code からキャッシュを手軽に削除で
    > きるようにしました。
    >
    > (JA) コマンドパレット/左ツリーから開ける Arduino CLI コマンドセン
    > ター Webview を追加し、全コマンドをローカライズされた解説と実
    > 行ボタン付きでタブ表示できるようにしました。
    >
    > (JA) コマンドセンターの設定タブで arduino-cli config dump の結果を
    > 表示し、board_manager.additional_urls の追加・削除・再読込を自
    > 動化しました。削除は二度押し確認に変更し、誤操作を防いでから一
    > 覧を再更新します。
    >
    > (JA) コマンドセンターにコアタブを追加し、arduino-cli update と core
    > search/core list の結果から既定バージョンとインストール状況を
    > 表示、絞り込みやバージョン選択付きでインストール・更新・アンイ
    > ンストールを行えるようにしました。
    >
    > (JA) コマンドセンターにライブラリタブを追加し、arduino-cli lib
    > search/list の情報を基に既定バージョンとインストール状況を表示、
    > sketch.yaml での指定を推奨する注意文やフィルター付きでインストー
    > ル・更新・アンインストールを操作できるようにしました。
    >
    > (JA) Command Center 側で代替できるため、左メニュー上部のグローバル
    > コマンドから「List Boards」「List All Boards」「Run Command」
    > を削除してシンプルな構成にしました。
    >
    > 1.7.1
    > (JA) 主要コマンドの実行前に前回から 24時間経過していれば arduino-cli
    > update を自動再実行し、セッションをまたいでもパッケージ情報を
    > 最新に保つようにしました。

    最近の改定で、「コマンドセンター」の機能が便利です。

    何ができるのかが確認できて、不安感が払拭できます。

  21. hsenshu より:

    ver 1.7.3が公開されましたが、Changelognには、1.7.3の変更点が見当たりません。

    Unreleasedのいくつかが実装されたのだと思いますが……。

    > Unreleased
    >
    > (JA) コマンドセンターの各カードに実行される arduino-cli コマン
    > ドを表示し、実行前に内容を把握できるようにしました。
    >
    > (JA) ステータスバーの冗長出力設定に関係なく arduino-cli upload
    > で必ず –verbose を付与し、アップロード処理の進行が常に確
    > 認できるようにしました。
    >
    > (JA) –export-binaries と –json を付与して build// に
    > 成果物を出力する “Arduino CLI: バイナリを出力” コマンドを
    > 追加しました。
    >
    > (JA) バイナリエクスポート時に tools.esptool_py.upload.
    > pattern_args を解析した manifest.json を同フォルダーへ出力
    > し、boot_app0.bin など不足しているバイナリを自動コピーしつ
    > つ、PartitionScheme=minimal のようなボードオプションを除い
    > た基本の vendor:arch:board 形式で FQBN を正規化するように
    > しました。
    >
    > (JA) Build Check と同様にワークスペース内の sketch.yaml 全プロ
    > ファイルでバイナリを出力し、実行前に build/ フォルダーを削
    > 除するコマンドを追加しました。

    • たなかまさゆき より:

      おっと、更新漏れですね。。。
      Unreleasedにあるのはすでに実装済みなので、リリースされたときには変更されているはずです!

      コンパイルとかはArduino IDEとまったく同じ動きのはずなので、最近のだとupdateを定期的に実行しているとかが影響しているかもしれません

  22. hsenshu より:

    Arduino CLI Wrapperで一週間ほど前にビルドに苦労していたプロジェクト
    も、以下のように問題なく通るようです。今考えると、何が原因だったのか
    思い出せません。コンパイルも、Arduiono IDEに比べて無駄なくコンパイル
    されているようです。

    :
    :
    最大3342336バイトのフラッシュメモリのうち、スケッチが1235950バイト(36%)を使っています。
    最大327680バイトのRAMのうち、グローバル変数が50016バイト(15%)を使っていて、ローカル変数で277664バイト使うことができます。

    Used library Version Path
    M5GFX 0.2.16 C:\Users\user\AppData\Local\Arduino15\internal\M5GFX_0.2.16_8c47ec3e13dfa33c\M5GFX
    M5Unified 0.2.10 C:\Users\user\AppData\Local\Arduino15\internal\M5Unified_0.2.10_c4fd53c722815442\M5Unified
    WiFiManager 2.0.17 C:\Users\user\AppData\Local\Arduino15\internal\WiFiManager_2.0.17_4a8c9b9ce9524651\WiFiManager
    WebServer 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\WebServer
    FS 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\FS
    Networking 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\Network
    WiFi 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\WiFi
    Update 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\Update
    DNSServer 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\DNSServer
    ESP32 Async UDP 3.2.1 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23\libraries\AsyncUDP

    Used platform Version Path
    m5stack:esp32 3.2.3 C:\Users\user\AppData\Local\Arduino15\internal\m5stack_esp32_3.2.3_0e3dff23eed54f23
    :

  23. hsenshu より:

    本日、Arduino IDE Wapperが更新されました。感謝申し上げます。

    私は、現時点ではPlatformIOを併用していて、sketch.yaml がない場合も
    あります。そうした環境では、今回の改定はとても有益です。

    > 1.7.4
    >
    > (JA) Refresh View で検出したスケッチに sketch.yaml が無い場合、最も
    > 近い親フォルダーのファイルを自動コピーするようにしました(既定
    > ON / arduino-cli-wrapper.autoCopySketchYaml で切り替え可能)。
    >
    > (JA) .ino ファイルが存在しない sketch.yaml フォルダーはビルドチェッ
    > クの対象から除外し、不完全なスケッチで Arduino CLI を実行しな
    > いようにしました。
    >
    > (JA) ビルドチェック対象のスケッチをケース非依存のソート順で処理し、
    > 実行ごとの順序が常に一定になるようにしました。
    >

  24. hsenshu より:

    Arduino IDE Wrapperに限ったことではないと思いますが、気づいた点を
    報告します。
    “`
    profiles:
    m5stack_stickc_plus2:
    fqbn: m5stack:esp32:m5stack_stickc_plus2
    platforms:
    – platform: m5stack:esp32 (3.2.3)
    platform_index_url: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
    “`
    Sketch.yamlをこのように設定しています、最新は 3.2.4らしくアップデートを指示する
    と更新を試みるようですが、残念ながらm5stack用にはエラーになり更新できません。

    こうした事象はよくあることなのでしょうか。

  25. hsenshu より:

    おはようございます。

    platform: m5stack:esp32 (3.2.4) の件ですが、ようやくアップデートに成功しました。

    今まで、10回程度アップデートに挑戦したのですが、ダウンロードが遅すぎて、すべて
    失敗していました。

    3.2.3と3.2.4を比較すると、ツール類は同じですが、ATOMなどのIO周りの定義が修正さ
    れています。こうしたデバイスを使用するなら新しいほうが無難ですね。

    でも、20MB程度のファイルのダウンロードに数分かかって、しかも10回以上も失敗する
    と、不安になりますね。