これまでESP-32のプログラミングはArduino−IDEで行っていました。Arduino−IDEで不自由を感じていないのですが、最近ESP-32関係のソフトを検索するとESP-IDFで書かれた物を多く見るようになりました。そしてその中の幾つかは動かしてみたいプログラムが有り思い切ってESP-IDFをインストールする事にしました。
インストール環境
現在使用しているNote-PCの環境は以下の通り。
項目 | 詳細 |
CPU | Core i5 |
Memory | 8G |
SSD | 120G |
OS | Ubuntus 20.04 LTS |
現在開発関係のソフトはArduino-IDEとMPLAB-X-IDEがインストールされています。これに今回ESP-IDFをインストールして行きます。
インストール自体は簡単
OSがUbuntuの場合は、Standard Toolchain Setup for Linux and macOS からスタートします。このインストラクションに沿ってインストールからサンプルプログラムの実行まで簡単に行えます。
- Step 1. Install Prerequisites:インストールの為の前準備
- 端末で下記のコマンドを実行。必要は追加プログラムのインストール。
- sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
- 端末で下記のコマンドを実行。必要は追加プログラムのインストール。
- Step 2. Get ESP-IDF:ESP-IDFの取得
- ターミナルを開いて下記を実行。ESP-IDF が
~/esp/esp-idf
にダウンロードされます。- mkdir -p ~/esp
- cd ~/esp
- git clone –recursive https://github.com/espressif/esp-idf.git
- ターミナルを開いて下記を実行。ESP-IDF が
- Step 3. Set up the tools:ツールの取得とインストール。
- ターミナルを開いて下記を実行。ツールがインストールされます。
- cd ~/esp/esp-idf
- ./install.sh esp32
- ターミナルを開いて下記を実行。ツールがインストールされます。
- Step 4. Set up the environment variables:環境変数の設定。パスを通す。
- ターミナルを開く度に下記を実行。最初のピリオドに注意。これでそのターミナルでパスの設定が出来ます。
- . $HOME/esp/esp-idf/export.sh
- パスが設定されていないとIDF起動時に、”IDFが見つかりません” とエラーが出ます。
- 起動時にパスを設置する方法が説明されていますが、お勧めでは無いようです
- ターミナルを開く度に下記を実行。最初のピリオドに注意。これでそのターミナルでパスの設定が出来ます。
- Step 5. First Steps on ESP-IDF:ここからはサンプルプログラムのコンパイルと実行の説明
- Start a Project:サンプルプログラムの読み込み
- ターミナルを開いて下記を実行。これで~/espの下にhello_worldというフォルダーがコピーされます。
- cd ~/esp
- cp -r $IDF_PATH/examples/get-started/hello_world .
- ターミナルを開いて下記を実行。これで~/espの下にhello_worldというフォルダーがコピーされます。
- Connect Your Device:シリアルデバイスへの接続とポート名の確認。
- ESP-32をつながないで、ターミナルから、”ls /dev/tty*”を実行。
- 次につないで同じコマンドを実行。
- 新しくして表示されたものがESP-32のポート名です。
- このポート名はプログラムの書き込み時に使用します。
- Configure your Project:ESP32の詳細設定
- ターミナルを開いて下記を実行。
- cd ~/esp/hello_world
- サンプルプログラムのフォルダーに移動
- idf.py set-target esp32
- 使用するCPUを設定。今回はESP32を指定。
- これは最初の一回のみ設定すれば良い
- idf.py menuconfig
- このコマンドを実行すると、ESP32詳細設定用の画面が表示される
- cd ~/esp/hello_world
- 以下は表示された画面。今回は何も設定しないで、”ESC”を押して抜ける
- ターミナルを開いて下記を実行。
- Build the Project:プログラムのコンパイル
- プロジェクトフォルダー(今回は、hello_world)でモニターを開き idf.py build 実行
- コンパイルが始まり、モニターに下記の様なコメントが表示されます。
- Flash onto the Device:プログラムの書き込み
- プロジェクトフォルダーでモニターを開き、idf.py -p PORT [-b BAUD] flash を実行
- PORT:先程調べたポート名。
- [-b BAUD]:ボーレイトです。
- 今回は、ポート、ボーレイトを指定すること無く単に idf.py flash で書き込む事が出来ました。
- 実行後モニターは以下の様になります。
- 正常に終了すればプログラムは実行される様ですが、念の為リセットボタンを押して再起動させます。
- プロジェクトフォルダーでモニターを開き、idf.py -p PORT [-b BAUD] flash を実行
- Monitor the Output:モニターへの出力
- モニター画面で、
idf.py monitor を実行すれば
プログラムのPrintf関数がモニターに表示されます。
- モニター画面で、
- Start a Project:サンプルプログラムの読み込み
問題無く実行出来ました。
次回は
言われるままに操作したので問題無くインストール出来ました。意外とキモになるのはPythonのバージョンです。どうも各IDFのバージョンで要求されるPythonのバージョンが違う様です。動いたのですが、Artuino と違い操作がCUI(ターミナル操作)です。これかなり抵抗が有ります。次回はその辺も含めて、ESP-IDSの使い方をもう少し見て行きます。