2025/05/25 電子書籍「Markdown記法大全+Pandoc変換マスター: 初心者から脱却!HTML・PDF・電子書籍を自在に出力する方法」を出版

Arduino Core for ESP32の3.0系について

ESP32

以前作成したタイマー関係のプログラムをコンパイルするとコンパイルエラーが発生した為、調べると2.0系と3.0系でタイマー関係の関数の仕様が変更されていました。

Arduino Core for ESP32の3.0系では、内部のベースとなる開発環境(ESP-IDF)がv4.4系からv5.1系へと大幅にアップデートされたため、多くの互換性のない変更が含まれているようです。

変更内容は、espressif社の以下のMigration from 2.x to 3.0を参考ください。

また、各ライブラリの関数仕様は、以下のLibrariesを参照ください。

2.0系から3.0系への主な変更点と注意点は以下の通りです。

2.0系から3.0系への主な変更点と注意点は以下の通りです。

  • ベースシステムの刷新
    • 3.0系では ESP-IDF v5.1 が採用され、新しいチップ(ESP32-C6やESP32-H2など)への対応やパフォーマンス・安全性が向上する一方で、古いコードがそのまま動かない原因となりました。
  • PWM(LEDC)関数の刷新
    • ledcSetup() や ledcAttachPin() といった個別関数が廃止され、3.0系ではシンプルに統合・変更されています。
  • タイマー割り込みの変更
    • ハードウェアタイマーのAPIや記述方法が刷新されています。
  • 命名規則の調整
    • 一部の周辺回路やシリアル、USB関連の定義や初期化方法が変更されています。
  • 既存コードへの影響
    • 2.0系向けに書かれた古いサンプルコードやライブラリは、3.0系環境でコンパイルエラーになることが多いため、公式の Migration Guide を参考にした書き換えが必要です。

Arduino Core for ESP32の2.0系を使用したいとき

platformio(or pioarduino)で、 Arduino Core for ESP32の2.0系を使用したいときは、platformio.ini内のplatformに以下の設定を行えば良いようです。

Arduino Core (ESP32) バージョンplatformio.ini での指定方法備考
v2.0.17 (2.0系最終付近)platform = espressif32 @ 6.9.02.0系で最も安定した最新版を使いたい場合
v2.0.5platform = espressif32 @ 5.2.0過去の特定の2.0系ライブラリとの互換性重視
v2.0.2platform = espressif32 @ 3.5.02.0系の初期バージョン
v3.0.x (参考:最新の3.0系)platform = espressif32 @ 2024.x または @ 7.x以降※2.0系より新しいメジャーアップデート
バージョンの指定方法

設定を変更した後の注意点

  1. platformio.ini を保存した後、PlatformIOが自動的に指定されたバージョンのツールチェーンをバックグラウンドでダウンロードします。ダウンロードには時間がかかる場合がありますので、完了するまでお待ちください。
  2. 確実に古いバージョン(以前ビルドした際キャッシュ)の影響を無くすため、設定変更後は一度 「Clean」を実行してから「Build」 を実行してください。

2.0系&3.0系への対応

2.0系と3.0系の両方のライブラリに対応するコードを記述するには、以下のように各バージョンに応じた処理を条件コンパイルで切り替えることで対応できます。

#if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0)
    // 3.0系のコードの記述
#else
    //  2.0系のコードの記述
#endif

チップの対応バージョン

各チップに対応しているのESP-IDFのバージョンは、以下の表のとおりです。ここからの情報です。

Chipv4.2v4.3v4.4v5.0v5.1v5.2v5.3v5.5.2v6.0
ESP32◯◯◯◯◯◯◯◯◯
ESP32-S2◯◯◯◯◯◯◯◯◯
ESP32-C3◯◯◯◯◯◯◯◯
ESP32-S3◯◯◯◯◯◯◯
ESP32-C2◯◯◯◯◯◯
ESP32-C6◯◯◯◯◯
ESP32-H2◯◯◯◯◯
ESP32-P4◯◯◯
ESP32-C5◯◯
ESP32-C61◯◯
ESP32-H4◯
ESP-IDFの対応バージョン

参考URL

以下、参考URLです。

タイトルとURLをコピーしました