WROOM-32の開発環境セットアップ ~ Lチカ
いろいろ使い勝手のよさそうなWROOM32を使っていこうと思います。
公式のセットアップで一部つまずきましたのでメモっておきます。
さっそくWROOM-32にプログラムを書く準備です。
今回は、ESP-IDFを使った方法でやりますので、手順は以下の公式の通りです。
http://esp-idf.readthedocs.io/en/latest/windows-setup.html
#Step 1: Quick Steps
MSYS32をDL (以下のリンクは20170401時点での最新ver)
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20170330.zip
Alternative - の方は飛ばします。
#Step 2: Getting the esp-idf repository from github
上記のzipをC直下に展開して、コマンドラインで以下を実行
C:\msys32\mingw32.exe
好みのディレクトリに移動して以下を実行。ここでは、/home/nemeにesp-idfディレクトリを作成しました。
mkdir /home/name/my-esp-idf
cd /home/name/my-esp-idf
git clone --recursive https://github.com/espressif/esp-idf.git
#Step 3: Starting a project
サンプルアプリをDLします。
ここでは/home/name/にespSampleAppというディレクトリを作成してそこにDLしました。
mkdir /home/name/espSampleApp
cd /home/name/espSampleApp
git clone https://github.com/espressif/esp-idf-template.git
サンプルアプリのコードはこんな感じです。
#include "freertos/FreeRTOS.h"
#include "esp_wifi.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_event_loop.h"
#include "nvs_flash.h"
#include "driver/gpio.h"
esp_err_t event_handler(void *ctx, system_event_t *event)
{
return ESP_OK;
}
void app_main(void)
{
nvs_flash_init();
tcpip_adapter_init();
ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) );
ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );
wifi_config_t sta_config = {
.sta = {
.ssid = "access_point_name",
.password = "password",
.bssid_set = false
}
};
ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &sta_config) );
ESP_ERROR_CHECK( esp_wifi_start() );
ESP_ERROR_CHECK( esp_wifi_connect() );
gpio_set_direction(GPIO_NUM_4, GPIO_MODE_OUTPUT);
int level = 0;
while (true) {
gpio_set_level(GPIO_NUM_4, level);
level = !level;
vTaskDelay(300 / portTICK_PERIOD_MS);
}
}
WiFiのアクセスとLチカですね。
ssidとpasswordを自分の環境にすれば動きそうです。
.ssid = "access_point_name",
.password = "password",
ハードウェアはLEDをGPIO_NUM_4に接続すれば良さそうですね。
仕様書を確認すると、pin番号26。
私の使ってるボードはDOIT製の開発ボードver.1ですので、D4のピンにpin番号26(GPIO4)がアサインされています。
ソースコードのGPIO_NUM_2に変更すると、開発ボード上の青色LEDが光ります。
#Step 4: Configuring the project
いよいよビルドです。
以下のコマンドでmsys32を起動します。
C:\msys32\msys2_shell.cmd
ここからはmsys32状での作業です。
idfのパスを通す
export IDF_PATH="C:/path/to/esp-idf
#今回の場合 export IDF_PATH="C:/msys32/home/name/my-esp-idf/esp-idf
公式に従って、サンプルアプリのディレクトリに移動してmake menuconfig
cd /home/name/espSampleApp/esp-idf-template
make menuconfig
Serial flasher config --->
(/dev/ttyUSB0) Default serial port
を選択し
/dev/ttyUSB0をCOM29
に変更。
Serial flasher config --->
Default baud rate (115200) --->
UARTの設定でボーレートが115200となっていますが、230400や931600にするとプログラムの転送速度が早くなります。(2MBaudはエラーになりました)
Exit
Exit
Save
ここから、makeと書いてあるのですが、実行すると以下のエラーがでました。
make
$ make
GENCONFIG
CC src/bootloader_random.o
CC src/flash_encrypt.o
CC src/esp_image_format.o
CC src/flash_partitions.o
CC src/secure_boot_signatures.o
CC src/secure_boot.o
CC src/bootloader_flash.o
AR libbootloader_support.a
CC log.o
AR liblog.a
CC flash_qio_mode.o
CC bootloader_start.o
AR libmain.a
LD bootloader.elf
/bin/sh: python: コマンドが見つかりません
make[1]: *** [/home/takaf/my-esp-idf/esp-idf/components/esptool_py/Makefile.projbuild:49: /home/takaf/espSampleApp/esp-idf-template/build/bootloader/bootloader.bin] エラー 127
make: *** [/home/takaf/my-esp-idf/esp-idf/components/bootloader/Makefile.projbuild:31: /home/takaf/espSampleApp/esp-idf-template/build/bootloader/bootloader.bin] エラー 2
pythonが見つかりません、とありますが、ツールチェーンへのパスが通っていないようです。
以下でパスを通します。ここを参考にさせていただきました。
私の環境だと、以下でパスが通りました。
export PATH="$PATH:/usr/bin:/mingw32/bin:/opt/xtensa-esp32-elf/bin"
再度
make
完了!!
続いて書き込み
make flash
ここまでの作業でWiFiの接続とLEDチカリを確認しました。
次はexamplesにある、UART(esp-idf/examples/peripherals/uart_echo)の接続を試したいと思います。
<補足情報>
私が使っている開発ボードはこれです。e-bayで頼みました。
香港から発送されてフィンランドを経由して来ましたので届くまで1ヵ月くらいかかりました(汗)
http://www.ebay.com/itm/351936749769?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
気づいたら開発ボードが秋月さんでも販売され始めてましたので、今後は簡単に入手ができていいですね。
http://akizukidenshi.com/catalog/g/gM-11819/
スイッチサイエンスさんからはピッチ変換ボードが出ています。
https://www.switch-science.com/catalog/3170/
20170411追記
export関係のコマンドですが、msys32を開くたびに設定するのが面倒なので、/etc/profile.dに、espdir.shを追加して、起動時に自動で叩くようにしました。
vim /etc/profile.d/espdir.sh
export IDF_PATH="C:/path/to/esp-idf
export PATH="$PATH:/usr/bin:/mingw32/bin:/opt/xtensa-esp32-elf/bin"