

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

# Espressif ESP32-S2 の開始方法
<a name="getting_started_esp32-s2"></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/)を参照してください。

このチュートリアルでは、Espressif ESP32-S2 SoC と [Esp32-s2-saola-1](https://devices.amazonaws.com/detail/a3G0h00000AkFngEAF/ESP32-S2-Saola-1) 開発ボードを開始する方法を示します。

## 概要
<a name="getting_started_esp32-s2-overview"></a>

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

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

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

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

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

1. シリアル接続を使用して、実行中のアプリケーションを監視およびデバッグします。

## 前提条件
<a name="setup-esp32-s2-prereqs"></a>

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

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

の使用を開始するには AWS、 が必要です AWS アカウント。の作成の詳細については AWS アカウント、 *AWS アカウント管理 リファレンスガイド*[の「 の開始方法 AWS アカウント](https://docs.aws.amazon.com//accounts/latest/reference/getting-started.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-esp32-s2-idf42"></a>

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

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

   ESP32-S2 開発ボードハードウェアの設定の詳細については、[ESP32-S2-Saola-1 入門ガイド](https://docs.espressif.com/projects/esp-idf/en/release-v4.2/esp32s2/hw-reference/esp32s2/user-guide-saola-1-v1.2.html)を参照してください。
**重要**  
Espressif ガイドの**開始方法**セクションに到達したらそこで止まり、このページの手順に戻ります。

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/esp32s2/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/esp32s2/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-DevKitC の間にシリアル接続を確立するには、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-esp32-s2-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` にあります。) 

1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、「ESP-IDF 4.x CMD」アプリ (ESP-IDF ツールチェーンのインストール時にこのオプションを含めた場合) または「コマンドプロンプト」アプリ (オプションを含めなかった場合) を開きます。

1. Python3 がインストールされていることを確認するには、次のコマンドを実行します。

   ```
   python --version
   ```

   インストールされているバージョンが表示されます。Python 3.0.1 以降がインストールされていない場合は、[Python](https://www.python.org/downloads/) ウェブサイトからインストールできます。

1.  AWS IoT コマンドを実行するには AWS 、 コマンドラインインターフェイス (CLI) が必要です。Windows を実行している場合は、 `easy_install awscli` コマンドを使用して AWS 、「Command」または「ESP-IDF 4.x CMD」アプリに CLI をインストールします。

   macOS または Linux を実行している場合は、「 [AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)」を参照してください。

1. 実行

   ```
   aws configure
   ```

   アクセスキー ID AWS 、シークレット AWS アクセスキー、デフォルト AWS リージョンを使用して CLI を設定します。詳細については、[AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)を参照してください。

1. 次のコマンドを使用して AWS SDK for Python (boto3) をインストールします。
   + Windows の場合、「コマンド」または「ESP-IDF 4.x CMD」アプリで、以下を実行します。

     ```
     easy_install boto3
     ```
   + macOS または Linux の場合、以下を実行します。

     ```
     pip install tornado nose --user
     ```

     続いて以下を実行します。

     ```
     pip install boto3 --user
     ```

FreeRTOS には、 AWS IoTに接続するための Espressif ボードのセットアップを容易にする `SetupAWS.py` スクリプトが含まれています。

**設定スクリプトを実行するには**

1. このスクリプトを設定するには、`{{freertos}}/tools/aws_config_quick_start/configure.json` を開いて以下の属性を設定します。  
**`afr_source_dir`**  
コンピュータの `{{freertos}}` ディレクトリへの完全なパス。このパスの指定にスラッシュを使用していることを確認します。  
**`thing_name`**  
ボードを表す AWS IoT モノに割り当てる名前。  
**`wifi_ssid`**  
Wi-Fi ネットワークの SSID。  
**`wifi_password`**  
Wi-Fi ネットワークのパスワード。  
**`wifi_security`**  
Wi-Fi ネットワークのセキュリティタイプ。次のセキュリティタイプが有効です。  
   + `eWiFiSecurityOpen` (オープン、セキュリティなし)
   + `eWiFiSecurityWEP` (WEP セキュリティ)
   + `eWiFiSecurityWPA` (WPA セキュリティ)
   + `eWiFiSecurityWPA2` (WPA2 セキュリティ)

1. macOS または Linux を実行している場合、ターミナルプロンプトを開きます。Windows を実行している場合は、「ESP-IDF 4.x CMD」アプリまたは「コマンド」アプリを開きます。

1. `{{freertos}}/tools/aws_config_quick_start` ディレクトリに移動して、以下を実行します。

   ```
   python SetupAWS.py setup
   ```

    スクリプトは、次を実行します。
   +  AWS IoT モノ、証明書、ポリシーを作成します。
   +  AWS IoT ポリシーを証明書にアタッチし、証明書を AWS IoT モノにアタッチします。
   + `aws_clientcredential.h` エンドポイント、Wi-Fi SSID、および認証情報を AWS IoT ファイルに追加します。
   + 証明書とプライベートキーをフォーマットして `aws_clientcredential_keys.h` ヘッダーファイルに書き込みます。
**注記**  
証明書はデモ目的でのみハードコードされています。本番稼動レベルのアプリケーションでは、これらのファイルを安全な場所に保存する必要があります。

   `SetupAWS.py` の詳細については、`{{freertos}}/tools/aws_config_quick_start` ディレクトリにある「`README.md`」を参照してください。

### AWS クラウドでの MQTT メッセージのモニタリング
<a name="gsg-esp32-s2-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]** (トピックへのサブスクライブ) を選択します。

デバイス上でデモプロジェクトが正常に実行されると、「Hello World\!」が 購読しているトピックに複数回送信されたことを確認できます。

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

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

#### Windows、Linux、macOS で FreeRTOS を構築してフラッシュする (ESP-IDF v4.2)
<a name="build-esp32-s2-idf42"></a>

`idf.py` スクリプトを使用して、プロジェクトを構築し、デバイスにバイナリをフラッシュします。

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

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

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

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=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 build
   ```

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

   ```
   Executing action: all (aliases: build)
      Running cmake in directory /path/to/hello_world/build
      Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -DCCACHE_ENABLE=0 /path/to/hello_world"...
      -- The C compiler identification is GNU 8.4.0
      -- The CXX compiler identification is GNU 8.4.0
      -- The ASM compiler identification is GNU
   
      ... (more lines of build system output)
   
      [1628/1628] Generating binary image from built executable
      esptool.py v3.0
      Generated /path/to/hello_world/build/aws_demos.bin
   
      Project build complete. To flash, run this command:
      esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32s2  write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x16000 build/ota_data_initial.bin 0x20000 build/aws_demos.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-esp32-s2-cmake-idf42"></a>

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

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

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

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

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

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

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

     ```
     cmake -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -S . -B ./{{YOUR_BUILD_DIRECTORY}} -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0
     ```
   + Ninja を使用

     ```
     cmake -DVENDOR=espressif -DBOARD=esp32s2_saola_1 -DCOMPILER=xtensa-esp32s2 -S . -B ./{{YOUR_BUILD_DIRECTORY}} -DAFR_ENABLE_ALL_MODULES=1 -DAFR_ENABLE_TESTS=0 -GNinja
     ```

1. プロジェクトをビルドします。
   + Unix Makefiles を使用

     ```
     make -C ./{{YOUR_BUILD_DIRECTORY}} -j8
     ```
   + Ninja を使用

     ```
     ninja -C ./{{YOUR_BUILD_DIRECTORY}} -j8
     ```

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_esp32-s2-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)