ESP-IDF の Raspberry Pi へのセットアップ

解説

ESP-IDF の Raspberry Pi へのセットアップの手順についてまとめます。

ESP32-WROOM-32は、Arduino IDE を用いてプログラム開発が可能ですが、ESP32の開発元である Espressif Systems が提供する Espressif Iot Development Framework (ESP-IDF) を用いてプログラム開発を行うこともできます。

ESP-IDF は、Windows や Linux (Ubuntu、Debian、CentOS) や macOS へのセットアップが可能です。

Raspberry Pi の標準的なOSである、「Raspberry Pi OS」 は、Linux の Debian がベースとなっています。
本項のセットアップの手順は、ESP-IDFの公式のプログラミングガイドの「Get Started » Standard Toolchain Setup for Linux and macOS」に従います。

以下の手順のRaspberry Pi の操作は、Windowsパソコンを使用し、SSH接続し操作しています。

今回使用したRaspberry Pi のOSは、Raspberry Pi OS Lite (64-bit)です。ベースLinuxは、Debian 12 (bookworm) です。

最新のパッケージリストの取得

最新のパッケージリストを取得しなおしておきます。

以下のコマンドを実行します。

ESP-IDFのために必要なソフトウェアのインストール

ESP-IDFのために必要なソフトウェアをインストールします。

以下のコマンドを実行します。

完了するまで、しばらく待ちます。

ESP-IDFの取得

ESP-IDF用のディレクトリを作成し、作成したディレクトリに移動します。

以下のコマンドを実行します。



取得するESP-IDFのバージョンを調べます。

ESP-IDFのバージョンの情報」のページにアクセスします。



ページ右上のプルダウンの、上段を「ESP32」を選択します。
下段のプルダウンメニューをクリックし、バージョンのリストを表示します。

2024年1月現在、安定版の最新バージョンは、「v5.1.2」です。

以下のコマンドを実行し、「v5.1.2」のESP-IDFを取得します。



参考)
「v5.1.2」以外のESP-IDFを取得する場合は、上記コマンドの「v5.1.2」を「取得するバージョン名」にします。開発版の最新バージョンをダウンロードする場合は、「master」にします。

完了するまで、しばらく待ちます。

関連ツールのインストール

ESP-IDF とは別に、ESP32 をサポートするプロジェクト用のコンパイラ、デバッガ、Python パッケージなど、ESP-IDF で使用されるツールもインストールする必要があります。

以下のコマンドを実行し、関連ツールをインストールします。



完了するまで、しばらく待ちます。

環境変数の設定

インストールしたESP-IDF関連ツールはまだパスが通っておらず、ESP-IDF関連ツールのパスを通す必要があります。
ESP-IDFには、ESP-IDF関連ツールのパスを通すスクリプトが用意されており、このスクリプトを実行します。

以下のコマンドを実行し、関連ツールのパスを通します。(先頭のドットとパスの間には、半角スペースが一つあります)



補足)
関連ツールのパスを通すスクリプトの実行は、起動したターミナルごとに、行う必要があります。
起動したターミナルで、一度スクリプトを実行したならば、そのターミナル上では、どのディレクトリからでもESP-IDFが使用できます。

はじめてのプロジェクト

ここまでの手順で、ESP-IDF の Raspberry Pi へのセットアップは完了し、ESP32-WROOM-32のプログラム開発をESP-IDFを用いて行う環境が整いました。

ESP-IDFのサンプルディレクトリの「Hello World」プロジェクトを流用して、プロジェクト作成、ビルド、フラッシュしていきます。

プロジェクト作成

以下のコマンドを実行し、ESP-IDFのサンプルディレクトリの「Hello World」プロジェクトを、「esp」ディレクトリにコピーします。



「esp」ディレクトリ下に、「hello_world」ディレクトリができます。

デバイスの接続と、シリアル通信デバイス名の確認

デバイスの接続と、シリアルポートパスの確認を行います。

Raspberry Pi に、ESP32-WROOM-32 を接続している場合は、一度、接続を抜きます。

以下のコマンドを実行し、シリアル通信デバイスをリスト表示します。



出力例:ESP32-WROOM-32 を接続していないとき


USBケーブルを用いて、Raspberry Pi に、ESP32-WROOM-32 を接続し、再度、シリアル通信デバイスをリスト表示するコマンドを実行します。

出力例:ESP32-WROOM-32 を接続しているとき


新しく表示されたシリアル通信デバイス名が、ESP-WROOM-32のシリアル通信デバイス名です。
出力例の場合のESP32-WROOM-32 のシリアル通信デバイス名は、「/dev/ttyUSB0」です。

プロジェクトの設定

以下のコマンドを実行し、プロジェクトのディレクトリに移動します。



以下のコマンドを実行し、プロジェクトのターゲットを設定します。



以下のコマンドを実行し、プロジェクトの各種設定を行うmenuconfigを起動します。



menuconfigの画面例


今回は何も設定変更を行わないので、「ESC」キーを押下し、menuconfigを抜けます。

ビルド

以下のコマンドを実行し、プロジェクトのプログラムをビルドします。



完了するまで、しばらく待ちます。

フラッシュ

ビルド結果を、マイコンに書き込むフラッシュのコマンドは以下の書式です。



シリアル通信デバイス名が「/dev/ttyUSB0」の場合は、以下のコマンドを実行します。



完了するまで、しばらく待ちます。

モニタリング

以下のコマンドを実行すると、IDF-Monitor が起動します。IDF-Monitorには、プログラムのprintf関数の出力が表示されます。



シリアル通信デバイス名が「/dev/ttyUSB0」の場合は、以下のコマンドを実行します。



IDF-Monitorの出力例


IDF-Monitor を終了するには、「 Ctrl + ] 」を押下します。

参考)hello_world_main.c