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