ESP32での開発はArduinoを使って行うかESP-IDFを使って行うかのどちらかである。Arduinoの方が開発が簡単であると言われるし、私もそんな印象である。が、より高度なことがしたくなった時にESP-IDFが必要になるのだそうだ。ということで、、まずはお決まりのHello Worldをやってみよう。
私の環境など
- OS: macOS 10.15 Catalina
- ボード: ESP32-DevKitC
- ESP-IDF: Version 4.1 (masterブランチの最新)
環境の構築
多くのサイトで書かれているので、この記事ではmacOSとLinuxのコマンドラインだけを記載する。下記コマンドを実行する前に必要なソフトをインストールしておくことをお忘れなく。詳しくは本家のチュートリアル
を参考にされたい。
$ pwd
/Users/seiken
$ git clone --recursive http://github.com/espressif/esp-idf.git
$ export IDF_PATH=$HOME/esp-idf
$ cd esp-idf
$ ./install.sh
$ . ./export.sh
最初のプロジェクト
チュートリアルには、最初のプロジェクトとしてサンプルにあるhello_worldをコピーしてきて使う例が示されている。が、このディレクトリを見るといくつかのファイルが入っていて、すべてのファイルが必要なのか、完全な白紙のプロジェクトを作るためにはなにが必要なのかがわかりにくい。ということで、最低限必要なファイルはなにかを確認してみた。で、必要なのは下記二つのファイルだ。
- CMakeLists.txt
- main/CMakeLists.txt
上記二つのファイルのほかにソースコードが必要だ。mainディレクトリ以下にソースコードを置く。この例ではmain.cというファイルを置いたという想定で記述する。
ではやってみよう。
$ mkdir ~/src/FirstProject
$ cd ~/src/FirstProject
$ emacs CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(FirstProject)
$ mkdir main
$ cd main
$ emacs CMakeLists.txt
idf_component_register(SRCS "main.c"
INCLUDE_DIRS "")
$ emacs main.c
# include <stdio.h>
int app_main()
{
printf("Hello ESP32 World!\n");
return 0;
}
ビルドとボードへの書き込み
いよいよプロジェクトをビルドしてみる。プロジェクトのトップディレクトリに戻って以下を実行する。
$ idf.py build
$ idf.py flash
これが最低限必要な作業だ。
そのほか
チュートリアルには、プロジェクトの設定を行うmenuconfigが紹介されている。おそらくほとんどのプロジェクトではソースコードを記述していく前にこのコマンドを実行することになるとは思う。
$ idf.py menuconfig
以前のバージョンを使われていた方ならばcmakeとかmakeを直接呼び出す方法に慣れていらっしゃるかもしれない。ESP-IDFのV3.xからビルド手順が上記方法に変更になったようだ。細かいチューニングが必要ならばidf.pyのソースコードを読むコとになる。
おまけ
間違いとかわかりにくいとか誤字とか脱字とか発見された方はぜひぜひお知らせください。