

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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)。 FreeRTOS 

**注意**  
若要探索如何在您自己的 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 Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](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 shell。

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 4.2 版自訂版本，請遵循下列適用於主機機器作業系統的說明。

   **Windows**

   1. 下載 ESP-IDF 的 [ Universal Online Installer](https://dl.espressif.com/dl/esp-idf/?idf=4.2) for Windows。

   1. 執行 **Universal Online Installer**。

   1. 當您前往步驟**下載或使用 ESP-IDF** 時，請選取**使用現有的 ESP-IDF 目錄**，並將**選擇現有的 ESP-IDF 目錄**設定為 `{{freertos}}/vendors/espressif/esp-idf`。

   1. 完成安裝。

   **macOS **

   1. 請遵循 [ macOS 的工具鏈先決條件標準設定 (ESP-IDF v4.2) ](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. 請遵循適用於 [ Linux 的工具鏈先決條件標準設定 (ESP-IDF v4.2)](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 命令列界面 (CLI) 才能執行 AWS IoT 命令。如果您執行 Windows，請使用 AWS `easy_install awscli`命令在「命令」或「ESP-IDF 4.x CMD」應用程式中安裝 CLI。

   如果您正在執行 macOS 或 Linux，請參閱[安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)。

1. 執行

   ```
   aws configure
   ```

   並使用您的 AWS 存取金鑰 ID、私密存取金鑰和預設 AWS 區域來設定 AWS CLI。如需詳細資訊，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

1. 使用下列命令來安裝適用於 Python 的 AWS SDK (boto3)：
   + 在 Windows 的「命令」或「ESP-IDF 4.x CMD」應用程式中，執行

     ```
     easy_install boto3
     ```
   + 在 macOS 或 Linux 上執行

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

     然後執行

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

FreeRTOS 包含`SetupAWS.py`指令碼，可讓您更輕鬆地設定要連線的 Espressif 電路板 AWS IoT。

**執行組態指令碼**

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 IoT 、Wi-Fi SSID 和登入資料填入`aws_clientcredential.h`檔案。
   + 格式化您的憑證和私有金鑰，並將其寫入`aws_clientcredential_keys.h`標頭檔案。
**注意**  
憑證經過硬式編碼，僅供示範之用。生產層級應用程式必須將這些檔案存放在安全的位置。

   如需 的詳細資訊`SetupAWS.py`，請參閱 `README.md` `{{freertos}}/tools/aws_config_quick_start`目錄中的 。

### 在 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. 在**訂閱主題**中輸入 `{{your-thing-name}}/example/topic`，然後選擇**訂閱主題**。

當示範專案在您的裝置上成功執行時，您會看到「Hello World！」 多次傳送到您訂閱的主題。

### 使用 idf.py 指令碼建置、刷新和執行 FreeRTOS 示範專案
<a name="build-and-run-example-esp32-s2-idf42"></a>

您可以使用 Espressif 的 IDF 公用程式來產生建置檔案、建置應用程式二進位檔，以及刷新您的主機板。

#### 在 Windows、Linux 和 macOS (ESP-IDF v4.2) 上建置和刷新 FreeRTOS macOS
<a name="build-esp32-s2-idf42"></a>

使用 `idf.py`指令碼建置專案，並將二進位檔刷入您的裝置。

**注意**  
有些設定可能需要搭配 使用連接埠選項`-p port-name``idf.py`來指定正確的連接埠，如下列範例所示。  

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

**建置和刷新專案**

1. 導覽至 FreeRTOS 下載目錄的根目錄。

1. 在命令列視窗中，輸入下列命令，將 ESP-IDF 工具新增至終端機的 PATH：  
**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 建置和 Flash FreeRTOS
<a name="flash-esp32-s2-cmake-idf42"></a>

除了使用 IDF 開發套件提供的`idf.py`指令碼來建置和執行程式碼，您也可以使用 CMake 建置專案。目前支援 Unix Makefile 和 Ninja 組建系統。

**建置和刷新專案**

1. 在命令列視窗中，導覽至 FreeRTOS 下載目錄的根目錄。

1. 執行下列指令碼，將 ESP-IDF 工具新增至 shell 的 PATH。
   + 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)