以前作成したタイマー関係のプログラムをコンパイルするとコンパイルエラーが発生した為、調べると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.0 | 2.0系で最も安定した最新版を使いたい場合 |
| v2.0.5 | platform = espressif32 @ 5.2.0 | 過去の特定の2.0系ライブラリとの互換性重視 |
| v2.0.2 | platform = espressif32 @ 3.5.0 | 2.0系の初期バージョン |
| v3.0.x (参考:最新の3.0系) | platform = espressif32 @ 2024.x または @ 7.x以降 | ※2.0系より新しいメジャーアップデート |
設定を変更した後の注意点
platformio.iniを保存した後、PlatformIOが自動的に指定されたバージョンのツールチェーンをバックグラウンドでダウンロードします。ダウンロードには時間がかかる場合がありますので、完了するまでお待ちください。- 確実に古いバージョン(以前ビルドした際キャッシュ)の影響を無くすため、設定変更後は一度 「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のバージョンは、以下の表のとおりです。ここからの情報です。
| Chip | v4.2 | v4.3 | v4.4 | v5.0 | v5.1 | v5.2 | v5.3 | v5.5.2 | v6.0 |
|---|---|---|---|---|---|---|---|---|---|
| ESP32 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
| ESP32-S2 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
| ESP32-C3 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | |
| ESP32-S3 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ||
| ESP32-C2 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | |||
| ESP32-C6 | ◯ | ◯ | ◯ | ◯ | ◯ | ||||
| ESP32-H2 | ◯ | ◯ | ◯ | ◯ | ◯ | ||||
| ESP32-P4 | ◯ | ◯ | ◯ | ||||||
| ESP32-C5 | ◯ | ◯ | |||||||
| ESP32-C61 | ◯ | ◯ | |||||||
| ESP32-H4 | ◯ |
参考URL
以下、参考URLです。






