

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Espressif ESP32-WROOM-32SE の開始方法
<a name="getting_started_esp32wroom-32se"></a>

**重要**  <a name="deprecation-message"></a>
このリファレンス統合は、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、[ここから始める](freertos-getting-started-modular.md)ことをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「[Amazon FreeRTOS Github リポジトリ移行ガイド](github-repo-migration.md)」を参照してください。

**注記**  
独自の Espressif IDF プロジェクト内で FreeRTOS モジュラーライブラリとデモを統合する方法の詳細については、[ESP32-C3 プラットフォーム向けの注目のリファレンス統合](https://www.freertos.org/featured-freertos-iot-integration-targeting-an-espressif-esp32-c3-risc-v-mcu/)を参照してください。
現在、ESP32-WROOM-32SE の FreeRTOS ポートは、対称型マルチプロセッシング (SMP) 機能をサポートしていません。

このチュートリアルでは、Espressif ESP32-WROOM-32SE の使用を開始する方法について説明します。パートナーデバイスカタログで AWS パートナーから購入するには、「[ESP32-WROOM-32SE](https://devices.amazonaws.com/detail/a3G0h0000077nRtEAI/ESP32-WROOM-32SE)」を参照してください。

## 概要:
<a name="getting_started_esp32wroom-32se-overview"></a>

このチュートリアルでは次のステップを説明します。

1. ボードをホストマシンに接続します。

1. ホストマシンにソフトウェアをインストールし、マイクロコントローラーボード用の組み込みアプリケーションを開発およびデバッグします。

1. FreeRTOS デモアプリケーションをバイナリイメージにクロスコンパイルします。

1. アプリケーションバイナリイメージをボードにロードし、アプリケーションを実行します。

1. シリアル接続を使用することによって、実行中のアプリケーションをモニタリングおよびデバッグします。

## 前提条件
<a name="setup-esp32wroom-32se-prereqs"></a>

Espressif ボードで FreeRTOS の使用を開始する前に、 AWS アカウントとアクセス許可を設定する必要があります。

### にサインアップする AWS アカウント
<a name="sign-up-for-aws"></a>

がない場合は AWS アカウント、次の手順を実行して作成します。

**にサインアップするには AWS アカウント**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup) を開きます。

1. オンラインの手順に従います。

   サインアップ手順の一環として、電話またはテキストメッセージを受け取り、電話キーパッドで検証コードを入力します。

   にサインアップすると AWS アカウント、 *AWS アカウントのルートユーザー* が作成されます。ルートユーザーには、アカウントのすべての AWS のサービス とリソースへのアクセス権があります。セキュリティベストプラクティスとして、ユーザーに管理アクセス権を割り当て、[ルートユーザーアクセスが必要なタスク](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)の実行にはルートユーザーのみを使用するようにしてください。

AWS サインアッププロセスが完了すると、 から確認メールが送信されます。[https://aws.amazon.com/](https://aws.amazon.com/) の **[マイアカウント]** をクリックして、いつでもアカウントの現在のアクティビティを表示し、アカウントを管理することができます。

### 管理アクセスを持つユーザーを作成する
<a name="create-an-admin"></a>

にサインアップしたら AWS アカウント、日常的なタスクにルートユーザーを使用しないように AWS アカウントのルートユーザー、 を保護し AWS IAM アイデンティティセンター、 を有効にして管理ユーザーを作成します。

**を保護する AWS アカウントのルートユーザー**

1.  **ルートユーザー**を選択し、 AWS アカウント E メールアドレスを入力して、アカウント所有者[AWS マネジメントコンソール](https://console.aws.amazon.com/)として にサインインします。次のページでパスワードを入力します。

   ルートユーザーを使用してサインインする方法については、「*AWS サインイン ユーザーガイド*」の「[ルートユーザーとしてサインインする](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)」を参照してください。

1. ルートユーザーの多要素認証 (MFA) を有効にします。

   手順については、*IAM* [ユーザーガイドの AWS アカウント 「ルートユーザー (コンソール) の仮想 MFA デバイス](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)を有効にする」を参照してください。

**管理アクセスを持つユーザーを作成する**

1. IAM アイデンティティセンターを有効にします。

   手順については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[AWS IAM アイデンティティセンターの有効化](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)」を参照してください。

1. IAM アイデンティティセンターで、ユーザーに管理アクセスを付与します。

   を ID ソース IAM アイデンティティセンターディレクトリ として使用する方法のチュートリアルについては、*AWS IAM アイデンティティセンター 「 ユーザーガイド*」の[「デフォルトを使用してユーザーアクセスを設定する IAM アイデンティティセンターディレクトリ](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)」を参照してください。

**管理アクセス権を持つユーザーとしてサインインする**
+ IAM アイデンティティセンターのユーザーとしてサインインするには、IAM アイデンティティセンターのユーザーの作成時に E メールアドレスに送信されたサインイン URL を使用します。

  IAM Identity Center ユーザーを使用してサインインする方法については、*AWS サインイン 「 ユーザーガイド*[」の AWS 「 アクセスポータルにサインイン](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)する」を参照してください。

**追加のユーザーにアクセス権を割り当てる**

1. IAM アイデンティティセンターで、最小特権のアクセス許可を適用するというベストプラクティスに従ったアクセス許可セットを作成します。

   手順については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)」を参照してください。

1. グループにユーザーを割り当て、そのグループにシングルサインオンアクセス権を割り当てます。

   手順については、「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[グループを追加する](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)」を参照してください。

アクセスを提供するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
+ 以下のユーザーとグループ AWS IAM アイデンティティセンター:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。
+ IAM ユーザー:
  + ユーザーが担当できるロールを作成します。手順については *IAM ユーザーガイド* の [IAM ユーザーのロールの作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) を参照してください。
  + (お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。*IAM ユーザーガイド* の [ユーザー (コンソール) へのアクセス許可の追加](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) の指示に従います。

## はじめに
<a name="setup-esp32wroom-32s-idf42"></a>

**注記**  
このチュートリアルの Linux コマンドでは、Bash シェルを使用する必要があります。

1. **Espressif ハードウェアを設定します。**

   ESP32-WROOM-32SE 開発ボードハードウェアの設定の詳細については、[ESP32-DevKitC V4 入門ガイド](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/index.html#installation-step-by-step)を参照してください。
**重要**  
ガイドの「**Installation Step by Step**」セクションまで進んだら、ステップ 4 (環境変数の設定) まで実行します。ステップ 4 を完了したら停止し、残りのステップをここで実行します。

1. [GitHub](https://github.com/aws/amazon-freertos) から Amazon FreeRTOS をダウンロードします。(手順については、[README.md](https://github.com/aws/amazon-freertos/blob/main/README.md) ファイルを参照してください。)

1. **開発環境をセットアップします。**

   ボードと通信するには、ツールチェーンをインストールする必要があります。Espressif には、ボード用のソフトウェアを開発するための ESP-IDF が用意されています。ESP-IDF には独自のバージョンの FreeRTOS カーネルがコンポーネントとして統合されているため、Amazon FreeRTOS には、FreeRTOS カーネルが除去された、カスタムバージョンの ESP-IDF v4.2 が含まれています。これにより、コンパイル時にファイルが重複する問題が修正されます。Amazon FreeRTOS に含まれているカスタムバージョンの ESP-IDF v4.2 を使用するには、ホストマシンのオペレーティングシステムに応じて以下の手順を実行します。

   **Windows**

   1. ESP-IDF の Windows 用の[汎用オンラインインストーラ](https://dl.espressif.com/dl/esp-idf/?idf=4.2)をダウンロードします。

   1. **汎用オンラインインストーラ**を実行します。

   1. **ESP-IDF をダウンロードまたは使用する**手順に進んだら、**[既存の ESP-IDF ディレクトリを使用]** を選択し、**[既存の ESP-IDF ディレクトリを選択]** を `freertos/vendors/espressif/esp-idf` に設定します。

   1. インストールを完了します。

   **macOS**

   1. 「[Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for macOS](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/macos-setup.html)」の手順を実行します。
**重要**  
**次のステップ**の下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。

   1. コマンドラインウィンドウを開きます。

   1. FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の espressif ツールチェーンをダウンロードしてインストールします。

      ```
      vendors/espressif/esp-idf/install.sh
      ```

   1. 次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。

      ```
      source vendors/espressif/esp-idf/export.sh
      ```

   **Linux**

   1. 「[Standard Setup of Toolchain prerequisites (ESP-IDF v4.2) for Linux](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/linux-setup.html)」の手順を実行します。
**重要**  
**次のステップ**の下にある「ESP-IDF の取得」の手順に到達したらそこで止まり、このページの手順に戻ります。

   1. コマンドラインウィンドウを開きます。

   1. FreeRTOS ダウンロードディレクトリに移動し、次のスクリプトを実行して、お使いのプラットフォーム用の espressif ツールチェーンをダウンロードしてインストールします。

      ```
      vendors/espressif/esp-idf/install.sh
      ```

   1. 次のコマンドを使用して、ESP-IDF ツールチェーンツールをターミナルのパスに追加します。

      ```
      source vendors/espressif/esp-idf/export.sh
      ```

1. **シリアル接続を確立します。**

   1. ホストマシンと ESP32-WROOM-32SE の間にシリアル接続を確立するには、CP210x USB を UART Bridge VCP ドライバーにインストールする必要があります。これらのドライバーは [Silicon Labs](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) からダウンロードできます。

   1. [ESP32 でシリアル接続を確立](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32/get-started/establish-serial-connection.html)する手順に従います。

   1. シリアル接続を確立したら、ボードとの接続用のシリアルポートをメモしておきます。デモをフラッシュするにはこれが必要です。

### FreeRTOS デモアプリケーションを設定する
<a name="configure-demos-esp32wroom-32s-idf42"></a>

このチュートリアルでは、FreeRTOS 設定ファイルは `freertos/vendors/espressif/boards/board-name/aws_demos/config_files/FreeRTOSConfig.h` にあります。(例えば、`AFR_BOARD espressif.esp32_devkitc` を選択した場合、設定ファイルは `freertos/vendors/espressif/boards/esp32/aws_demos/config_files/FreeRTOSConfig.h` にあります。) 

**重要**  
ATECC608A デバイスには、プロジェクトが初めて実行されるとき (`C_InitToken` 呼び出し時) にデバイスにロックされる 1 回だけの初期化があります。ただし、FreeRTOS デモプロジェクトおよびテストプロジェクトには別の設定があります。デモプロジェクトの設定中にデバイスがロックされた場合、テストプロジェクトの一部のテストが成功しません。

1. [FreeRTOS デモを設定する](freertos-prereqs.md#freertos-configure) の手順に従って、FreeRTOS デモプロジェクトを設定します。最後のステップに進むと、** AWS IoT 認証情報をフォーマットするには**、 を停止し、次の手順を実行します。

1. Microchip から、ATECC608A 部品のセットアップに役立ついくつかのスクリプトツールが提供されています。`freertos/vendors/microchip/example_trust_chain_tool` ディレクトリに移動し、`README.md` ファイルを開きます。

1. `README.md` ファイルの手順に従って、デバイスをプロビジョニングします。このステップには、以下が含まれます。

   1. 認証機関を作成して登録します AWS。

   1. ATECC608A でキーを生成し、パブリックキーとデバイスのシリアル番号をエクスポートする。

   1. デバイスの証明書を生成し、その証明書を に登録します AWS。

1. [開発者モードのキーのプロビジョニング](dev-mode-key-provisioning.md) の手順に従って、CA 認定とデバイス証明書をデバイスにロードします。

### AWS クラウドでの MQTT メッセージのモニタリング
<a name="gsg-esp32wroom-32se-monitor-mqtt"></a>

FreeRTOS デモプロジェクトを実行する前に、 AWS IoT コンソールで MQTT クライアントを設定して、デバイスが AWS クラウドに送信するメッセージをモニタリングできます。

**MQTT クライアントで AWS IoT MQTT トピックをサブスクライブするには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iotv2/) にサインインします。

1. ナビゲーションペインで、**[テスト]** を選択し、次に **[MQTT テストクライアント]** を選択します。

1. **[Subscription topic]** (トピックのサブスクリプション) で `your-thing-name/example/topic` と入力し、**[Subscribe to topic]** (トピックへのサブスクライブ) を選択します。

### idf.py スクリプトを使用して FreeRTOS デモプロジェクトを構築、フラッシュ、実行する
<a name="build-and-run-example-esp32wroom-32se-idf42"></a>

Espressif の IDF ユーティリティ (`idf.py`) を使用してビルドファイルを生成し、アプリケーションバイナリを構築し、バイナリをデバイスにフラッシュできます。

**注記**  
一部のセットアップでは、次の例のように、`idf.py` でポートオプション「`-p port-name`」を使用して正しいポートを指定する必要があります。  

```
idf.py -p /dev/cu.usbserial-00101301B flash
```

**Windows、Linux、macOS で FreeRTOS を構築してフラッシュする (ESP-IDF v4.2)**

1. FreeRTOS ダウンロードディレクトリのルートに移動します。

1. コマンドラインウィンドウで次のコマンドを入力して、ESP-IDF ツールをターミナルのパスに追加します。  
**Windows (「コマンド」アプリ)**  

   ```
   vendors\espressif\esp-idf\export.bat
   ```  
**Windows (「ESP-IDF 4.x CMD」アプリ)**  
(これはアプリを開いた時点で既に完了しています。)  
**Linux/macOS**  

   ```
   source vendors/espressif/esp-idf/export.sh
   ```

1. 次のコマンドを使用して `build` ディレクトリで CMake を設定し、ファームウェアイメージを構築します。

   ```
   idf.py -DVENDOR=espressif -DBOARD=esp32_ecc608a_devkitc -DCOMPILER=xtensa-esp32 build
   ```

   次の例のような出力が表示されます。

   ```
      Running cmake in directory /path/to/hello_world/build
      Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"...
      Warn about uninitialized values.
      -- Found Git: /usr/bin/git (found version "2.17.0")
      -- Building empty aws_iot component due to configuration
      -- Component names: ...
      -- Component paths: ...
   
      ... (more lines of build system output)
   
      [527/527] Generating hello-world.bin
      esptool.py v2.3.1
   
      Project build complete. To flash, run this command:
      ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin  build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin
      or run 'idf.py -p PORT flash'
   ```

   エラーが起きなければ、構築によってファームウェアバイナリの .bin ファイルが生成されます。

1. 次のコマンドを使用して、開発ボードのフラッシュメモリを消去します。

   ```
   idf.py erase_flash
   ```

1. `idf.py` スクリプトを使用して、アプリケーションバイナリをボードにフラッシュします。

   ```
   idf.py flash
   ```

1. 次のコマンドを使用して、ボードのシリアルポートからの出力をモニタリングします。

   ```
   idf.py monitor
   ```
**注記**  
次の例のようにこれらのポリシーを組み合わせることができます。  

     ```
     idf.py erase_flash flash monitor
     ```
特定のホストマシンのセットアップでは、次の例のように、ボードをフラッシュするときにポートを指定する必要があります。  

     ```
     idf.py erase_flash flash monitor -p /dev/ttyUSB1
     ```

### CMake で FreeRTOS を構築してフラッシュする
<a name="flash-esp32wroom-32se-cmake-idf42"></a>

IDF SDK が提供する `idf.py` スクリプトを使ってコードを構築および実行できるほか、CMake を使用してプロジェクトを構築することもできます。現在、Unix Makefile と Ninja ビルドシステムをサポートしています。

**プロジェクトを構築してフラッシュするには**

1. コマンドラインウィンドウで、FreeRTOS ダウンロードディレクトリのルートに移動します。

1. 次のスクリプトを実行して、ESP-IDF ツールをシェルのパスに追加します。  
**Server **  

   ```
   vendors\espressif\esp-idf\export.bat
   ```  
**Linux/macOS**  

   ```
   source vendors/espressif/esp-idf/export.sh
   ```

1. 次のコマンドを入力して、ビルドファイルを生成します。  
**Unix Makefiles を使用**  

   ```
   cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
   ```  
**Ninja を使用**  

   ```
   cmake -DVENDOR=espressif -DBOARD=esp32_plus_ecc608a_devkitc -DCOMPILER=xtensa-esp32 -S . -B ./YOUR_BUILD_DIRECTORY -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
   ```

1. フラッシュを消去してから、ボードをフラッシュします。  
**Unix Makefiles を使用**  

   ```
   make -C ./YOUR_BUILD_DIRECTORY erase_flash
   ```

   ```
   make -C ./YOUR_BUILD_DIRECTORY flash
   ```  
**Ninja を使用**  

   ```
   ninja -C ./YOUR_BUILD_DIRECTORY erase_flash
   ```

   ```
   ninja -C ./YOUR_BUILD_DIRECTORY flash
   ```

## 追加情報
<a name="getting_started_esp32wroom-32se-additional"></a>

Espressif ESP32 ボードの使用とトラブルシューティングの詳細については、以下のトピックを参照してください。
+ [ESP32 用の独自の CMake プロジェクトで FreeRTOS を使用する](getting_started_espressif.md#getting_started_espressif_cmake_project)
+ [トラブルシューティング](getting_started_espressif.md#getting_started_espressif_troubleshooting)
+ [デバッグ](getting_started_espressif.md#getting_started_espressif_debugging)