⌨️

ESP-IDFでESP32の開発(windows10で)

2022/10/04に公開

ESP32で開発することになったのに、日本語のwindowsの情報がなかなか見つからなかったので、書くことにしました。
英語が分かる方は、下記の公式ページを参考すればいいかと。
ESP32 Get Started

公式のhello worldプログラムを動かすまでを目標にします。

準備

  • EPS32のボード
  • micro USBケーブル
  • windows開発マシン
  • cmakeのインストール cmake公式
  • gitのインストール git公式
  • python3のインストール python公式

手順1 COMポートのドライバインストール

下記URLから、ダウンロードタブに遷移して、"CP210x Windows Drivers"をダウンロード。
https://jp.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
※CP210x Universal Windows Driverにはインストーラが含まれてなかったので選択してない。
ダウンロード → 解凍 → CP210xVCPInstaller_x64.exeをインストール

ESP32ボードをUSBケーブルで繋げて、COMポートの接続を確認する。
!
上記は、COM3で認識しているのでOK.

手順2 ESP-IDFとtoolsのインストール

下記サイトから、インストーラをダウンロード、インストールする。
https://dl.espressif.com/dl/esp-idf/?idf=4.3
ファイル名 : esp-idf-tools-setup-offline-2.12.exe

※諸事情があって(単にuser配下だと失敗しただけ)、Dドライブにインストールしました。
ESP-IDFのインストール先:
D:\esp32\esp\esp-idf
IDF tools(IDF_TOOLS_PATH)のインストール先:
D:\esp32\.espressif


しばらくしたら、上記の様に、セットアップが完了しました。

手順3 hello worldのビルド準備

セットアップが終わったので、hello worldをビルドしてみます。
下記のパスにhello_worldがあるので、作業しやすいフォルダにコピーします。
D:\esp32\esp\esp-idf\examples\get-started\hello_world

コピー元 : D:\esp32\esp\esp-idf\examples\get-started\hello_world
コピー先 : D:\esp32\hello_world

ちなみに、ソースコードの中身は以下の通り。

/* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void app_main(void)
{
    printf("Hello world!\n");

    /* Print chip information */
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
            CONFIG_IDF_TARGET,
            chip_info.cores,
            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    printf("silicon revision %d, ", chip_info.revision);

    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

    printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

    for (int i = 10; i >= 0; i--) {
        printf("Restarting in %d seconds...\n", i);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
    printf("Restarting now.\n");
    fflush(stdout);
    esp_restart();
}

手順4 プロジェクトの設定

下記コマンドを実行するだけ。

cd D:\esp32\hello_world
idf.py set-target esp32

手順5 プロジェクトの設定2

idf.py menuconfig

※"hello_world"では何もせず、"q"で抜けていい。

手順5 プロジェクトのビルド

下記コマンドを実行するだけ。

idf.py build

手順6 ESP32へ書き込む

手順1で、確認したCOMポートを使って書き込みます。
※今回はCOM3

idf.py -p COM3 flash

これで、できるはず。

動作確認

hello worldの実行結果を確認します。

idf.py -p COM3 monitor

下記ログが出力されるのが確認できました。
正常に動いているようです。

I (302) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Hello world!
This is esp32 chip with 2 CPU core(s), WiFi/BT/BLE, silicon revision 1, 2MB external flash
Minimum free heap size: 291400 bytes
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...

Discussion