✏️
ESP-IDFでTab5の環境構築
Tab5の開発環境として、VSCode拡張機能のEspressif IDFを使用しました。
本記事では、環境構築の手順のポイントを共有します。
ESP-IDF環境を選択した理由
インターネットで調べると、情報量としてはPlatformIOのArduino環境でやっている人の方が多いと感じます。
私もメジャーな方法で開発したいと考えていましたが、以下の理由により、ESP-IDF環境を選択しました。
-
公式デモアプリとの互換性
- Tab5の公式デモアプリがESP-IDFで開発されており、そのコードやライブラリを最大限活用できるため。
- Arduino環境に移植する場合、多くのコード修正や再実装が必要になるため。
-
MIPI-CSIカメラのサポート
- これが最大の理由です。
- Arduino環境ではMIPI-CSIカメラのサポートが提供されていないため、Tab5のカメラ(SC2356)を活用できませんでした。
動作確認環境
- OS: Windows 11
-
IDE:
- Visual Studio Code v1.96.2
- Cursor v0.50.4
- ESP-IDF: v5.4.1
- デバイス: M5Stack Tab5
開発環境の準備
Note: この手順はCursorで確認済みです。VSCodeでも同じ手順で動作可能と判断しています。
- VSCodeにEspressif IDF拡張機能をインストールします。
-
こちらの手順に従い、必要なツールをインストールします。
- バージョンはデモアプリと同じ、v5.4.1を選択してください。
-
こちらの手順に従い、プロジェクトを作成してください。
- Choose ESP-IDF Target(IDF_TARGET)はESP32-P4を選択してください。
公式デモアプリのclone
Tab5用のライブラリがまだ整っていないので、公式デモアプリケーションのコードを流用します。
よって、ローカルにgit cloneしておきます。
公式デモアプリの流用
外部ライブラリ
- 一般的に外部ライブラリを使用する場合は、idf_component.ymlのdependenciesに追記し、ダウンロードします。
- m5stack系なら一通りあるのですが、Tab5はまだライブラリが公開されていません😭
- 公式デモアプリを確認したところ、
components
ディレクトリに必要なライブラリが格納されていそうでした。 - 今回は
components
ディレクトリをそのままコピーして利用します。
2025/05/15の時点ではRegistoryに登録されていないようでした。
LVGLの設定ファイル
- Tab5用に設定されている
lv_conf.h
をそのまま流用します。
パーティション設定ファイル
- 上記と同様に、Tab5用に設定されている
partitions.csv
を流用します。
I2Cドライバーのエラー対応(必要であれば)
I2Cドライバーの競合エラー(CONFLICT! driver_ng is not allowed to be used with this old driver
)が発生した場合は、以下の設定変更が必要です。
- menuconfig(拡張機能のSDK Configuration Editorでも可能)を開きます。
- 以下の設定を変更します。
- 設定箇所: Component config -> Audio Code Device Configuration
- 設定項目: "Enable backward compatibility for the I2c driver"
- disableに設定。
この設定は、esp_codec_dev
コンポーネントが古いI2Cドライバーを使用することによる問題を防ぐために重要です。
問題が発生していない環境では、この設定変更は不要です。
簡単なアプリの実装
環境が整ったので、とりあえず簡単なアプリを作ってみました。
まとめ
VSCode + Espressif IDF拡張機能を使用し、Tab5の開発環境を構築できました。
デモアプリのcomponentsの活用とmenuconfigの適切な設定が、開発環境を正しく機能させるためのポイントです。
今後はセンサを活用してアプリ開発をしていきます!
Discussion