

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

# 低功耗藍牙示範應用程式
<a name="ble-demo"></a>

**重要**  <a name="deprecation-message-demo"></a>
此示範託管在已棄用的 Amazon-FreeRTOS 儲存庫上。我們建議您在建立新專案時從[這裡開始](freertos-getting-started-modular.md)。如果您已經有以現在已棄用的 Amazon-FreeRTOS 儲存庫為基礎的現有 FreeRTOS 專案，請參閱 [Amazon-FreeRTOS Github 儲存庫遷移指南](github-repo-migration.md)。 FreeRTOS 

## 概觀
<a name="ble-demo-overview"></a>

FreeRTOS 低功耗藍牙包含三個示範應用程式：
+ [透過低功耗藍牙執行的 MQTT](#ble-demo-mqtt) 示範 

  這個應用程式會示範如何透過低功耗藍牙服務使用 MQTT。
+ [Wi-Fi 佈建](#ble-demo-wifi) 示範

  這個應用程式會示範如何使用低功耗藍牙 Wi-Fi 佈建服務。
+ [一般屬性伺服器](#ble-demo-server) 示範

  此應用程式示範如何使用 FreeRTOS 低功耗藍牙中介軟體 APIs來建立簡單的 GATT 伺服器。

**注意**  
若要設定和執行 FreeRTOS 示範，請遵循中的步驟[FreeRTOS 入門](freertos-getting-started.md)。

## 先決條件
<a name="ble-demo-prereqs"></a>

若要遵循這些示範，您需要使用微型控制器搭配低功耗藍牙功能。您還需具備 [適用於 FreeRTOS 藍牙裝置的 iOS 開發套件](freertos-ble-mobile.md#freertos-ble-ios)或 [適用於 FreeRTOS 藍牙裝置的 Android 開發套件](freertos-ble-mobile.md#freertos-ble-android)。

### 設定 AWS IoT 和 Amazon Cognito for FreeRTOS 低功耗藍牙
<a name="set-up-ble-demo-aws"></a>

若要 AWS IoT 跨 MQTT 將裝置連線至 ，您需要設定 AWS IoT 和 Amazon Cognito。

**設定 AWS IoT**

1. 在 https：//[https://aws.amazon.com/](https://aws.amazon.com/) 上設定 AWS 帳戶。

1. 開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/)，然後從導覽窗格中，選擇 **Manage (管理)**，然後選擇 **Things (實物)**。

1. 選擇 **Create (建立)**，然後選擇 **Create a single thing (建立單一實物)**。

1. 輸入您裝置的名稱，然後選擇 **Next (下一步)**。

1. 如果您是透過行動裝置將微型控制器連接到雲端，請選擇 **Create thing without certificate (建立沒有憑證的物件)**。由於 Mobile SDKs 使用 Amazon Cognito 進行裝置身分驗證，因此您不需要為使用低功耗藍牙的示範建立裝置憑證。

   如果您是透過 Wi-Fi 直接將微型控制器連接到雲端，則請選擇 **Create certificate (建立憑證)**，再選擇 **Activate (啟動)**，然後下載物件的憑證、公開金鑰和私密金鑰。

1. 從已註冊的實物清單中選擇您剛建立的實物，然後從實物的頁面中選擇 **Interact (互動)**。請記下 AWS IoT REST API 端點。

如需設定的詳細資訊，請參閱 [入門 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html)。

**建立 Amazon Cognito 使用者集區**

1. 開啟 Amazon Cognito 主控台，然後選擇**管理使用者集區**。

1. 選擇 **Create a user pool (建立使用者集區)**。

1. 為使用者集區提供一個名稱，然後選擇 **Review defaults (檢閱預設值)**。

1. 從導覽窗格中選擇 **App clients (應用程式用戶端)**，然後選擇 **Add an app client (新增應用程式用戶端)**。

1. 輸入應用程式用戶端的名稱，然後選擇 **Create app client (建立應用程式用戶端)**。

1. 從導覽窗格中選擇 **Review (檢閱)**，然後選擇 **Create pool (建立集區)**。

   記下使用者集區之 **General Settings (一般設定)** 頁面上出現的集區 ID。

1. 從導覽窗格中選擇 **App clients (應用程式用戶端)**，然後選擇 **Show details (顯示詳細資訊)**。記下應用程式用戶端 ID 和應用程式用戶端密碼。

**建立 Amazon Cognito 身分集區**

1. 開啟 Amazon Cognito 主控台，然後選擇**管理身分集區**。

1. 輸入身分集區的名稱。

1. 展開 **Authentication providers (驗證供應商)**、選擇 **Cognito** 標籤，然後輸入您的使用者集區 ID 和應用程式用戶端 ID。

1. 選擇 **Create Pool** (建立集區)。

1. 展開 **View Details (檢視詳細資訊)**，並記下兩個 IAM 角色名稱。選擇**允許**為已驗證和未驗證的身分建立 IAM 角色，以存取 Amazon Cognito。

1. 選擇 **Edit identity pool (編輯身分集區)**。記下身分集區 ID。其格式應為 `us-west-2:12345678-1234-1234-1234-123456789012`。

如需設定 Amazon Cognito 的詳細資訊，請參閱 [Amazon Cognito 入門](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-getting-started.html)。

**建立 IAM 政策並將其連接至已驗證的身分**

1. 開啟 IAM 主控台，然後從導覽窗格中選擇**角色**。

1. 尋找並選擇您已驗證身分的角色、選擇 **Attach policies (連接政策)**，然後選擇 **Add inline policy (新增內嵌政策)**。

1. 選擇 **JSON** 標籤，並貼上下列 JSON：

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "iot:AttachPolicy",
               "iot:AttachPrincipalPolicy",
               "iot:Connect",
               "iot:Publish",
               "iot:Subscribe",
               "iot:Receive",
               "iot:GetThingShadow",
               "iot:UpdateThingShadow",
               "iot:DeleteThingShadow"
            ],
            "Resource":[
               "*"
            ]
         }
      ]
   }
   ```

------

1. 選擇 **Review policy (檢閱政策)**、輸入政策的名稱，然後選擇 **Create policy (建立政策)**。

將您的 AWS IoT 和 Amazon Cognito 資訊保留在手邊。您需要端點和 IDs才能透過 AWS 雲端驗證您的行動應用程式。

### 為低功耗藍牙設定 FreeRTOS 環境
<a name="ble-demo-set-up"></a>

若要設定您的環境，您需要在微型控制器[低功耗藍牙程式庫](freertos-ble-library.md)上使用 下載 FreeRTOS，並在行動裝置上下載並設定適用於 FreeRTOS 藍牙裝置的 Mobile SDK。

**使用 FreeRTOS 低功耗藍牙設定微型控制器的環境**

1. 從 [GitHub](https://github.com/aws/amazon-freertos) 下載或複製 FreeRTOS。如需說明，請參閱 [ README.md](https://github.com/aws/amazon-freertos/blob/main/README.md) 檔案。

1. 在微控制器上設定 FreeRTOS。

   如需有關在符合 FreeRTOS 資格的微控制器上開始使用 FreeRTOS 的資訊，請參閱 [ FreeRTOS 入門](https://docs.aws.amazon.com/freertos/latest/userguide/freertos-getting-started.html)中的主機板指南。
**注意**  
您可以使用 FreeRTOS 和移植的 FreeRTOS 低功耗藍牙程式庫，在任何啟用低功耗藍牙的微控制器上執行示範。目前，FreeRTOS [透過低功耗藍牙執行的 MQTT](#ble-demo-mqtt)示範專案已完全移植到下列低功耗藍牙裝置：  
[Espressif ESP32-DevKitC 和 ESP-WROVER-KIT](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html)
[Nordic nRF52840-DK](https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_nordic.html)

## 常見元件
<a name="ble-demo-common"></a>

FreeRTOS 示範應用程式有兩個常見元件：
+ Network Manager
+ 低功耗藍牙 Mobile SDK 示範應用程式

### Network Manager
<a name="ble-demo-network-manager"></a>

網路管理員可管理您的微型控制器的網路連線。它位於 FreeRTOS 目錄中的 `demos/network_manager/aws_iot_network_manager.c`。如果您已同時為 Wi-Fi 和低功耗藍牙啟用網路管理員，系統依預設會從低功耗藍牙開始執行示範。如果低功耗藍牙連線中斷，且主機板已啟用 Wi-Fi，則網路管理員會切換到可用的 Wi-Fi 連線，以防網路連線中斷。

若要使用網路管理員啟用網路連線類型，請將網路連線類型新增至 `vendors/vendor/boards/board/aws_demos/config_files/aws_iot_network_config.h` 中的 `configENABLED_NETWORKS` 參數 (其中 *vendor* 是廠商名稱，而 *board* 是您用來執行示範的主機板名稱)。

例如，如果您同時啟用了低功耗藍牙和 Wi-Fi，`aws_iot_network_config.h` 中開頭為 `#define configENABLED_NETWORKS` 的該行會顯示為：

```
#define  configENABLED_NETWORKS  ( AWSIOT_NETWORK_TYPE_BLE | AWSIOT_NETWORK_TYPE_WIFI )
```

若要取得目前支援的網路連線類型清單，請查看 `aws_iot_network.h` 中開頭為 `#define AWSIOT_NETWORK_TYPE` 的那幾行。

### FreeRTOS 低功耗藍牙行動 SDK 示範應用程式
<a name="ble-sdk-app"></a>

FreeRTOS 低功耗藍牙行動開發套件示範應用程式位於 GitHub at [Android SDK for FreeRTOS 藍牙裝置](https://github.com/aws/amazon-freertos-ble-android-sdk) 下`amazon-freertos-ble-android-sdk/app`，以及 [iOS SDK for FreeRTOS 藍牙裝置](https://github.com/aws/amazon-freertos-ble-ios-sdk) 下`amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo`。在本範例中，我們會使用 iOS 版示範行動應用程式的螢幕擷取畫面。

**注意**  
如果您使用 iOS 裝置，您需要 Xcode 來建置示範行動應用程式。如果您使用 Android 裝置，您可以使用 Android Studio 來建置示範行動應用程式。

**設定 iOS SDK 示範應用程式**

當您定義組態變數時，請使用組態檔案中提供之預留位置值的格式。

1. 確認已安裝 [適用於 FreeRTOS 藍牙裝置的 iOS 開發套件](freertos-ble-mobile.md#freertos-ble-ios)。

1. 從 `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/` 發出下列命令：

   ```
   $ pod install
   ```

1. 使用 Xcode 開啟 `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo.xcworkspace` 專案，並將簽署開發人員帳戶變更為您的帳戶。

1. 在區域中建立 AWS IoT 政策 （如果您尚未建立）。
**注意**  
此政策與為 Amazon Cognito 驗證身分建立的 IAM 政策不同。

   1. 開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/)。

   1. 在導覽窗格中，選擇**安全**，選擇**政策**，然後選擇**建立**。輸入可識別政策的名稱。在 **Add statements (新增陳述式)** 區段中，選擇 **Advanced mode (進階模式)**。將下列 JSON 複製並貼入政策編輯器視窗。將 *aws-region* 和 *aws-account* 取代為您的 AWS 區域和帳戶 ID。

   1. 選擇**建立**。

1. 開啟 `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Amazon/AmazonConstants.swift` 並重新定義以下變數：
   + `region`：您的 AWS 區域。
   + `iotPolicyName`：您的 AWS IoT 政策名稱。
   + `mqttCustomTopic`：您想要發佈至其中的 MQTT 主題。

1. 打開 `amazon-freertos-ble-ios-sdk/Example/AmazonFreeRTOSDemo/AmazonFreeRTOSDemo/Support/awsconfiguration.json`。

   在 `CognitoIdentity` 下，重新定義以下變數：
   + `PoolId`：您的 Amazon Cognito 身分集區 ID。
   + `Region`：您的 AWS 區域。

   在 `CognitoUserPool` 下，重新定義以下變數：
   + `PoolId`：您的 Amazon Cognito 使用者集區 ID。
   + `AppClientId`：您的應用程式用戶端 ID。
   + `AppClientSecret`：您的應用程式用戶端密碼。
   + `Region`：您的 AWS 區域。

**設定 Android SDK 示範應用程式**

當您定義組態變數時，請使用組態檔案中提供之預留位置值的格式。

1. 確認已安裝 [適用於 FreeRTOS 藍牙裝置的 Android 開發套件](freertos-ble-mobile.md#freertos-ble-android)。

1. 在區域中建立 AWS IoT 政策 （如果您尚未建立）。
**注意**  
此政策與為 Amazon Cognito 驗證身分建立的 IAM 政策不同。

   1. 開啟 [AWS IoT 主控台](https://console.aws.amazon.com/iot/)。

   1. 在導覽窗格中，選擇**安全**，選擇**政策**，然後選擇**建立**。輸入可識別政策的名稱。在 **Add statements (新增陳述式)** 區段中，選擇 **Advanced mode (進階模式)**。將下列 JSON 複製並貼入政策編輯器視窗。將 *aws-region* 和 *aws-account* 取代為您的 AWS 區域和帳戶 ID。

   1. 選擇**建立**。

1. 開啟 [ https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/java/software/amazon/freertos/demo/DemoConstants.java](https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/java/software/amazon/freertos/demo/DemoConstants.java) 並重新定義下列變數：
   + `AWS_IOT_POLICY_NAME`：您的 AWS IoT 政策名稱。
   + `AWS_IOT_REGION`：您的 AWS 區域。

1. 開啟 [ https：//https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/res/raw/awsconfiguration.json](https://github.com/aws/amazon-freertos-ble-android-sdk/blob/master/app/src/main/res/raw/awsconfiguration.json)。

   在 `CognitoIdentity` 下，重新定義以下變數：
   + `PoolId`：您的 Amazon Cognito 身分集區 ID。
   + `Region`：您的 AWS 區域。

   在 `CognitoUserPool` 下，重新定義以下變數：
   + `PoolId`：您的 Amazon Cognito 使用者集區 ID。
   + `AppClientId`：您的應用程式用戶端 ID。
   + `AppClientSecret`：您的應用程式用戶端密碼。
   + `Region`：您的 AWS 區域。

**透過低功耗藍牙探索並建立微型控制器的安全連線**

1. 為了安全地將您的微型控制器與行動裝置進行配對 (步驟 6)，您需要同時具有輸入和輸出功能的序列終端模擬器 (例如 TeraTerm)。依照[安裝終端機模擬器](gsg-troubleshooting.md#uart-term)中的指示，將終端機設定為透過序列連線連接到您的電路板。

1. 在微型控制器上執行低功耗藍牙示範專案。

1. 在行動裝置上執行低功耗藍牙 Mobile SDK示範應用程式。

   若要從命令列啟動 Android SDK 中的示範應用程式，請執行下列命令：

   ```
   $ ./gradlew installDebug
   ```

1. 確認低功耗藍牙 Mobile SDK 示範應用程式的 **Devices (裝置)** 底下有顯示您的微型控制器。  
![\[裝置管理頁面顯示 ESP32 裝置及其唯一識別符。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list1.png)
**注意**  
清單中會顯示具有 FreeRTOS 的所有裝置，以及範圍內的裝置資訊服務 (`freertos/.../device_information`)。

1. 從裝置清單選擇您的微型控制器。應用程式會與主機板建立連線，而所連線的裝置旁會出現綠色線條。  
![\[顯示 ESP32 裝置 ID。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list2.png)

   您可以將該行拖曳至左側，以中斷與微型控制器的連線。  
![\[裝置頁面顯示 ESP32 裝置 ID 和另一個裝置 ID。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list3.png)

1. 如果出現提示，請將您的微型控制器與行動裝置進行配對。  
![\[主控台輸出顯示 BLE 裝置中斷連線、MQTT 服務中斷連線、公告開始、遠端裝置的 BLE 連線，以及數值比較提示。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/pairing-board.png)  
![\[裝置 "ESP32" 的藍牙配對請求對話方塊顯示代碼 "465520"，以在 "ESP32" 上確認。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/pairing-mobile.png)

   如果兩個裝置上用來比較數字的程式碼相同，系統即會配對裝置。

**注意**  
低功耗藍牙行動開發套件示範應用程式使用 Amazon Cognito 進行使用者身分驗證。請確定您已設定 Amazon Cognito 使用者和身分集區，而且您已將 IAM 政策連接至已驗證的身分。

## 透過低功耗藍牙執行的 MQTT
<a name="ble-demo-mqtt"></a>

在 MQTT over Bluetooth 低功耗示範中，您的微型控制器會透過 MQTT 代理將訊息發佈至 AWS 雲端。

**訂閱示範 MQTT 主題**

1. 登入 AWS IoT 主控台。

1. 在導覽窗格中，選擇**測試**，然後選擇 **MQTT 測試用戶端**以開啟 MQTT 用戶端。

1. 在**訂閱主題**中輸入 ***thing-name*/example/topic1**，然後選擇**訂閱主題**。

如果您是使用低功耗藍牙來配對微型控制器與行動裝置，則系統會在行動裝置上透過低功耗藍牙 Mobile SDK 示範應用程式路由 MQTT 訊息。

**透過低功耗藍牙啟用示範**

1. 開啟 `vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`，然後定義 `CONFIG_MQTT_BLE_TRANSPORT_DEMO_ENABLED`。

1. 開啟 `demos/include/aws_clientcredential.h`，並使用`clientcredentialMQTT_BROKER_ENDPOINT` AWS IoT 中介裝置端點設定 。`clientcredentialIOT_THING_NAME` 使用 BLE 微型控制器裝置的物件名稱來設定 。您可以在左側導覽窗格中選擇**設定**，或透過執行 命令的 CLI，從 AWS IoT 主控台取得 AWS IoT 代理程式端點：`aws iot describe-endpoint --endpoint-type=iot:Data-ATS`。
**注意**  
 AWS IoT 中介裝置端點和物件名稱都必須位於設定 cognito 身分和使用者集區的相同區域中。

**執行示範**

1. 在微型控制器上建置和執行示範專案。

1. 確保已使用 [FreeRTOS 低功耗藍牙行動 SDK 示範應用程式](#ble-sdk-app) 將您的主機板與行動裝置配對。

1. 從示範行動應用程式中的 **Devices (裝置)** 清單選擇微型控制器，接著選擇 **MQTT Proxy** 以開啟 MQTT Proxy 設定。  
![\[三個 ESP32 裝置 IDs的清單，其中 MQTT Proxy、Network Config 和 Custom GATT MQTT 選項如下。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list4.png)

1. 啟用 MQTT Proxy 後，MQTT 訊息即會顯示在 `thing-name/example/topic1` 主題上，且系統會將資料列印到 UART 終端機。

## Wi-Fi 佈建
<a name="ble-demo-wifi"></a>

Wi-Fi 佈建是一項 FreeRTOS 低功耗藍牙服務，可讓您透過低功耗藍牙，安全地將 Wi-Fi 網路憑證從行動裝置傳送至微型控制器。您可以在 `freertos/.../wifi_provisioning` 中找到 Wi-Fi 佈建服務的原始程式碼。

**注意**  
目前在 Espressif ESP32-DevKitC 上支援 Wi-Fi 佈建示範。

**啟用示範**

1. 啟用 Wi-Fi 佈建服務。開啟 `vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h`，並將 `#define IOT_BLE_ENABLE_WIFI_PROVISIONING` 設定為 `1` (其中 *vendor* 是廠商名稱，而 *board* 是您用來執行示範的主機板名稱)。
**注意**  
在預設情況下，Wi-Fi 佈建服務會處於停用狀態。

1. 設定 [Network Manager](#ble-demo-network-manager)，即可同時啟用低功耗藍牙和 Wi-Fi。

**執行示範**

1. 在微型控制器上建置和執行示範專案。

1. 請確定您已使用 配對微控制器和行動裝置[FreeRTOS 低功耗藍牙行動 SDK 示範應用程式](#ble-sdk-app)。

1. 從示範行動應用程式的 **Devices (裝置)** 清單中選擇您的微型控制器，然後選擇 **Network Config (網路組態)** 以開啟網路組態設定。  
![\[三個 ESP32 裝置 IDs的清單，其中 MQTT Proxy、Network Config 和 Custom GATT MQTT 選項如下。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list4.png)

1. 選擇主機板的 **Network Config (網路組態)** 後，微型控制器會傳送鄰近的網路清單至行動裝置。可用的 Wi-Fi 網路會出現在 **Scanned Networks (掃描的網路)** 下的清單中。  
![\[ESP32 裝置管理介面未顯示任何已儲存的網路，兩個已掃描的開放式 wi-fi 網路，一個具有 WPA2 安全且 RSSI 為 -29，另一個具有開放式安全且 RSSI 為 -50。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-network-config1.png)

   從 **Scanned Networks (掃描的網路)** 清單中，選擇您的網路，然後輸入 SSID 和密碼 (如果必要)。  
![\[Wi-Fi 網路密碼項目對話方塊，其中包含空白密碼欄位、取消和儲存按鈕。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-wifi-password.png)

   微型控制器會連線至 並儲存網路。網路會出現在 **Saved Networks (儲存的網路)** 下。  
![\[網路界面顯示已儲存和掃描的 WiFi 網路，其中一個由 WPA2 保護，另一個是開啟，具有訊號強度指標。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-network-config2.png)

您可以將數個網路儲存在示範行動應用程式中。重新啟動應用程式和示範時，微型控制器會連接到第一個可用的已儲存網路，從 **Saved Networks (儲存的網路)** 清單的頂端開始。

若要變更網路優先順序或刪除網路，請在 **Network Configuration (網路組態)** 頁面上，選擇 **Editing Mode (編輯模式)**。若要變更網路的優先順序，請選擇您要重新設定優先順序的網路右側，並將網路往上或往下拖曳。若要刪除網路，請選擇您要刪除的網路左側的紅色按鈕。

![\[Wifi 網路設定畫面顯示已儲存的網路、編輯選項以刪除或變更優先順序，以及掃描的網路。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-network-editing.png)


## 一般屬性伺服器
<a name="ble-demo-server"></a>

在本範例中，微型控制器上的示範一般屬性 (GATT) 伺服器應用程式會傳送一個簡單的計數器值至 [FreeRTOS 低功耗藍牙行動 SDK 示範應用程式](#ble-sdk-app)。

透過低功耗藍牙 Mobile SDK，您可以為連接至微型控制器上 GATT 伺服器的行動裝置建立自己的 GATT 用戶端，並同時執行示範行動應用程式。

**啟用示範**

1. 啟用低功耗藍牙 GATT 示範。在 `vendors/vendor/boards/board/aws_demos/config_files/iot_ble_config.h` (其中 *vendor* 是廠商名稱，而 *board* 是您用來執行示範的主機板名稱) 中，將 `#define IOT_BLE_ADD_CUSTOM_SERVICES ( 1 )` 新增至 define 陳述式的清單。
**注意**  
在預設情況下，低功耗藍牙 GATT 示範會處於停用狀態。

1. 開啟 `freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h`、註解 `#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED`，然後定義 `CONFIG_BLE_GATT_SERVER_DEMO_ENABLED`。

**執行示範**

1. 在微型控制器上建置和執行示範專案。

1. 確保已使用 [FreeRTOS 低功耗藍牙行動 SDK 示範應用程式](#ble-sdk-app) 將您的主機板與行動裝置配對。

1. 從應用程式中的 **Devices (裝置)** 清單選擇主機板，然後選擇 **MQTT Proxy** 以開啟 MQTT Proxy 選項。  
![\[三個 ESP32 裝置 IDs的清單，其中 MQTT Proxy、Network Config 和 Custom GATT MQTT 選項如下。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/ble-device-list4.png)

1. 返回 **Devices (裝置)** 清單並選擇主機板，然後選擇 **Custom GATT MQTT (自訂 GATT MQTT)** 以開啟自訂 GATT 服務選項。

1. 選擇 **Start Counter (啟動計數器)**，即可開始發佈資料到 ***your-thing-name*/example/topic** MQTT 主題。

   啟用 MQTT Proxy 之後，Hello World 和遞增的計數器訊息會顯示在 `your-thing-name/example/topic` 主題上。