

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

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

**注意**  
若要探索如何在您自己的 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 Identity Center和建立管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[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 Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.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-esp32wroom-32s-idf42"></a>

**注意**  
本教學課程中的 Linux 命令要求您使用 Bash shell。

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)。
**重要**  
當您到達本指南的**逐步安裝**區段時，請遵循 ，直到您完成步驟 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 4.2 版自訂版本，請遵循下列適用於主機機器作業系統的說明。

   **Windows**

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

   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/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. 請遵循適用於 [ Linux 的工具鏈先決條件標準設定 (ESP-IDF v4.2)](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 to 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`。不過，FreeRTOS 示範專案和測試專案有不同的組態。如果裝置在示範專案組態期間鎖定，並非測試專案中的所有測試都會成功。

1. 依照中的步驟設定 FreeRTOS 示範專案[設定 FreeRTOS 示範](freertos-prereqs.md#freertos-configure)。當您進入最後一個步驟時 **若要格式化您的 AWS IoT 登入**資料，請停止並執行下列步驟。

1. 微晶片提供了多種指令碼工具，協助您設定 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)的指示，將憑證授權機構憑證和裝置憑證載入至裝置。

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

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

您可以使用 Espressif 的 IDF 公用程式 (`idf.py`) 來產生建置檔案、建置應用程式二進位檔，以及將二進位檔刷入您的裝置。

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

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

**在 Windows、Linux 和 macOS (ESP-IDF v4.2) 上建置和刷新 FreeRTOS macOS**

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=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 建置和 Flash FreeRTOS
<a name="flash-esp32wroom-32se-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=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)