BabyIoT

BabyTechよりもただのDIY

Arduino IDEからPlatformIO IDE for VS Codeにお引越し

f:id:babyjiji:20220122070532j:plain

VS Code環境でESP32を開発

前回の記事では、Arduino IDEを使ってESP32のソース作成・ビルド・書き込みを行いましたが、個人的には見やすくて使い慣れているVS Codeで開発したい。。。

というわけで、VS Code用に前回のコードを移植していきます。

VS Code Extension

VS CodeでESP32を開発する方法としては、VS Code用のExtensionをインストールすることになるのですが、主に

の2つの選択肢があるようです。

とりあえず両方トライしてみたのですが、リリースが新しいESP32公式のEspressif IDFよりも、PlatformIO IDFの方が使いやすさ、情報量の豊富さともに優れていそうですので、今回はPlatformIO IDFを使って環境の移動を行いたいと思います。

環境構築

前提環境

  • OS : Windows 10 Home
  • VS Code
    • 拡張 : C/C++ v1.7.1 (必須ではないが、ある方が便利だと思う) ※Espressif IDF for VS codeが導入済みだと、PlatformIO IDEインストール後の挙動が少し変でしたので、これはDisableにしておいた方がよさそうです

PlatformIO IDEのインストール

サイドバーの拡張機能から、PlatformIO IDEを検索してインストールするだけです、やっぱりVS CODEはこの辺の手軽さ含めて神ツールです。

f:id:babyjiji:20220122070532j:plain

ソースの移植

Arduinoからの移植

どうやら、PlatformIO IDEでは、Arduino IDEの環境をそのまま使う機能があるようです。

f:id:babyjiji:20220122070534j:plain

左下のホームアイコンからホーム画面を開いて、Import Arduino Projectを選択。

f:id:babyjiji:20220122073624j:plain

  • バイスEsressid ESP32 Dev Moduleに選択
  • Use libraries installed by Arduino IDEにチェック
  • Arduinoで作ったプロジェクトのフォルダを開く

で、Importを押したらOK

初回プロジェクト作成時は少しLoadingに時間がかかるようですが、これだけで完了。超簡単。

プロジェクトの設定

ソースの設定が完了したら、ビルド・・・と行きたいのですが、いくつか設定しておくことがあります。

プロジェクトに含まれているplatformio.iniを設定することで、動作環境等の編集が可能です。

ボーレートの設定

monitor_speed = 115200

上記を追記すると、シリアルで正常にモニタリングできます。

Partitionの設定

前回の記事でもハマったように、ビルド時のPartitionの設定をアプリケーションに応じて正しくしておかないと、容量不足のエラーが出ます。 f:id:babyjiji:20220122070540j:plain

公式のGithubにある、PatritionのCSVファイルをダウンロードして、platformio.iniと同じ位置に置いておきます。

board_build.partitions = no_ota.csv

こんな感じでダウンロードしたCSVファイルを追記すると、Partitionの設定が反映されます(前回と同じPartition設定のNO_OTAを使います)

ビルド・書き込み

ビルド

f:id:babyjiji:20220122080759j:plain

上記画像の①のチェックマークでコンパイル・ビルドが行われます。

書き込み

②の→マークで書き込みが行われます。

共にSUCCESSが表示されていれば成功です。

まとめ

結構簡単にVS-CODE環境に移動することができました。

VS-CODEに移動したかった理由の1つはUIやInteliSenseの有効化なので、これで解決できました。

しかしながら、よりシンプル且つ機能を増やしていくことを考えると、ESP-IDFフレームワークを使った形に移植するところまで持っていきたいところです。

SwitchBotHomeの自作からだいぶ脱線してきましたが、機能モリモリにしようとすると、アプリケーションのスリム化やソースの可読性も重要になってくるので、もう少しこの辺を深堀した上で進めようと思います。 - ESP-IDFフレームワークでの開発時の違い - Arduinoフレームワーク用ライブラリの移植方法