MacでESP32のLチカ(ESP-IDF版)

  • 10
    Like
  • 0
    Comment

MacでESP32のLチカ、Arduino IDE版から続いて、ESP-IDFでのやり方です。

開発環境を作ります

ツールチェインを設定

これまた本家Espressif Systemsのgithubページの解説が丁寧。
"Set up of Toolchain for Mac OS"

githubのREAD.MEでも良いし、
https://github.com/espressif/esp-idf/blob/master/docs/macos-setup.rst

それが収容されているesp-idfのページでも良し。
http://esp-idf.readthedocs.io/en/latest/macos-setup.html

シリアル通信ツール(Python)をインストール

sudo easy_install pip
sudo pip install pyserial

ツールの置き場所を作って、ダウンロード、展開

mkdir -p ~/esp
cd ~/esp
wget https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-61-gab8375a-5.2.0.tar.gz

パスを通します。

~/.bash_profile を編集して以下の行を追加。

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin

ESP-IDFをゲット

cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

設定ツールを起動、設定

make menuconfig

いろいろ設定する項目がありますが、とりあえず、 Serial flasher config のみで、オッケー。うろうろすると、Bluetoothまだ無いよとか、OTA用のパーティションを切る設定、OpenSSL設定、CPU速度240MHzとか、わかります。

Default serial port/dev/cu.SLAB_USBtoUART に設定。設定文字列の確認は以下のコマンドで。

ls /dev/tty.*

マイアプリを作ります

Lチカのテンプレートをゲット

cd ~/esp
git clone https://github.com/espressif/esp-idf-template.git myapp

LEDのGPIO番号を変更

プラグラム本体は、 ~/esp/myapp/main/main.c です。
編集して、 GPIO_NUM_4GPIO_NUM_2 に変えます。

ビルドして、書き込み!

前もって書き込みモードにしてあげないとエラーになる時があります。また、Arduino IDEが起動中だとポートが占有されていますというエラーになる時もあります。

cd ~/esp/myapp
export IDF_PATH=~/esp/esp-idf
make flash

export IDF_PATH=~/esp/esp-idf~/.bash_profile に書いておくと良いですね。

以降は、main.c の編集、make flash の繰り返し(地獄 or 天国)。

書き込み成功パターン

server:myapp tsuji$ make flash
Flashing binaries to serial port /dev/cu.SLAB_USBtoUART (app at offset 0x10000)...
esptool.py v2.0-beta1
Connecting......
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Attaching SPI flash...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x022f
Compressed 9504 bytes to 5656...
Wrote 9504 bytes (5656 compressed) at 0x00001000 in 0.1 seconds (effective 887.3 kbit/s)...
Hash of data verified.
Compressed 488048 bytes to 247504...
Wrote 488048 bytes (247504 compressed) at 0x00010000 in 5.1 seconds (effective 758.3 kbit/s)...
Hash of data verified.

書き込み失敗パターン

書き込みモードになっていない時。

server:myapp tsuji$ make flash
CC main.o
AR libmain.a
LD app-template.elf
esptool.py v2.0-beta1
Flashing binaries to serial port /dev/cu.SLAB_USBtoUART (app at offset 0x10000)...
esptool.py v2.0-beta1
Connecting...........................................

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
make: *** [flash] Error 2

追記:ESP32でLチカシリーズ、第3弾はこちら。ESP32 ROM BASICでhello world & Lチカ