Share via


教學課程:連線 ESPRESSIF ESP32-Azure IoT Kit IoT 中樞

在本教學課程中,您會使用適用於FreeRTOS的 Azure IoT 中間件,將ESPRESSIF ESP32-Azure IoT 套件(從現在起,ESP32 DevKit)連線到 Azure IoT。

您要完成下列工作:

  • 安裝一組內嵌開發工具,以設計 ESP32 DevKit
  • 建置映像並將它快閃到 ESP32 DevKit
  • 使用 Azure CLI 建立和管理 ESP32 DevKit 所連線的 Azure IoT 中樞
  • 使用 Azure IoT Explorer 向 IoT 中樞註冊裝置、檢視裝置屬性、檢視裝置遙測,以及在裝置上呼叫直接命令

必要條件

準備開發環境

安裝工具

若要設定開發環境,請先安裝ESPRESSIF ESP-IDF 組建環境。 安裝程式包含複製、建置、快閃及監視裝置所需的所有工具。

若要安裝 ESP-IDF 工具:

  1. 下載並啟動 ESP-IDF v5.0 Offline-installer
  2. 當安裝程式列出要安裝的元件時,請選取所有元件並完成安裝。

複製存放庫

複製下列存放庫,以下載所有範例裝置程式代碼、設定腳本和 SDK 檔。 如果您先前複製此存放庫,就不需要再執行此存放庫。

若要複製存放庫,請執行下列命令:

git clone --recursive  https://github.com/Azure-Samples/iot-middleware-freertos-samples.git

針對 Windows 10 和 11,請確定已啟用長路徑。

  1. 若要啟用長路徑,請參閱 在 Windows 10 中啟用長路徑。

  2. 在 git 中,在具有系統管理員權限的終端機中執行下列命令:

    git config --system core.longpaths true
    

建立雲端元件

建立 IoT 中樞

您可以使用 Azure CLI 來建立 IoT 中樞,以處理裝置的事件和傳訊。

若要建立IoT中樞:

  1. 啟動 CLI 應用程式。 若要在此快速入門的其餘部分執行 CLI 命令,請複製命令語法、將其貼到 CLI 應用程式、編輯變數值,然後按 Enter 鍵。

    • 如果您使用 Cloud Shell,請以滑鼠右鍵按兩下 Cloud Shell 的連結,然後選取選項以在新索引卷標中開啟。
    • 如果您在本機使用 Azure CLI,請啟動 CLI 控制台應用程式並登入 Azure CLI。
  2. 執行 az extension add 以安裝或升級 azure-iot 擴充功能至目前的版本。

    az extension add --upgrade --name azure-iot
    
  3. 執行 az group create 命令以建立資源群組。 下列命令會在 centralus 區域中建立名為 MyResourceGroup的資源群組。

    注意

    您可以選擇性地設定替代 location的 。 若要查看可用的位置,請執行 az account list-locations

    az group create --name MyResourceGroup --location centralus
    
  4. 執行 az iot hub create 命令以建立IoT中樞。 建立IoT中樞可能需要幾分鐘的時間。

    YourIotHubName。 將程式代碼中的這個佔位元取代為您IoT中樞選擇的名稱。 IoT 中樞名稱在 Azure 中必須全域是唯一的。 本快速入門的其餘部分會使用此佔位符來代表您唯一的IoT中樞名稱。

    參數 --sku F1 會在免費層中建立IoT中樞。 免費層中樞具有有限的功能集,並用於概念證明應用程式。 如需 IoT 中樞 層、功能和定價的詳細資訊,請參閱 Azure IoT 中樞 定價

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
    
  5. 建立IoT中樞之後,請在控制台中檢視 JSON 輸出,並複製 hostName 值以在後續步驟中使用。 值 hostName 看起來像下列範例:

    {Your IoT hub name}.azure-devices.net

設定IoT總管

在本快速入門的其餘部分,您會使用IoT Explorer向IoT中樞註冊裝置、檢視裝置屬性和遙測,以及將命令傳送至您的裝置。 在本節中,您會將 IoT Explorer 設定為連線到您所建立的 IoT 中樞,以及從公用模型存放庫讀取隨插即用模型。

若要將連線新增至IoT中樞:

  1. 安裝 Azure IoT Explorer。 此工具是一種跨平臺公用程式,可用來監視和管理 Azure IoT 資源。

  2. 在您的 CLI 應用程式中,執行 az iot hub connection-string show 命令,以取得 IoT 中樞的 連接字串。

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. 複製不含周圍引號字元的 連接字串。

  4. 在 Azure IoT 總管中,選取 左側功能表上的 [IoT 中樞 ]。

  5. 選取 [+ Add connection] \(+ 新增連線\)。

  6. 將 連接字串 貼到 [連線 ion 字串] 方塊中。

  7. 選取 [儲存]。

    在 IoT Explorer 中新增連線的螢幕快照。

如果連線成功,IoT Explorer 會切換至 [ 裝置 ] 檢視。

若要新增公用模型存放庫:

  1. 在 [IoT 總管] 中,選取 [首頁 ] 以返回首頁檢視。

  2. 在左側功能表上,選取 [IoT 隨插即用 設定],然後從下拉功能表中選取 [+新增],然後選取 [公用存放庫]。

  3. 在的公用模型存放庫 https://devicemodels.azure.com會出現專案。

    在 IoT Explorer 中新增公用模型存放庫的螢幕快照。

  4. 選取 [儲存]。

註冊裝置

在本節中,您會建立新的裝置實例,並將其註冊為您建立的IoT中樞。 您會使用新註冊裝置的連線資訊,在稍後的章節中安全地連線您的實體裝置。

若要註冊裝置:

  1. 從IoT總管的主檢視中,選取 [IoT 中樞]。

  2. 您先前新增的連接應該會出現。 選取 連線屬性下方的 [檢視此中樞 中的裝置]。

  3. 選擇[+ 新增] 並輸入裝置的裝置識別碼;例如 mydevice。 讓所有其他屬性保持相同。

  4. 選取 建立

    Azure IoT Explorer 裝置身分識別的螢幕快照。

  5. 使用 [複製] 按鈕來複製 [裝置標識符] 和 [主鍵] 字段。

在繼續下一節之前,請將從先前步驟擷取的每個值儲存到安全的位置。 您會在下一節使用這些值來設定您的裝置。

  • hostName
  • deviceId
  • primaryKey

準備裝置

若要將 ESP32 DevKit 連線至 Azure,您可以修改組態設定、建置映射,並將映像快閃至裝置。

設定環境

若要啟動 ESP-IDF 環境:

  1. 選取 [Windows 開始],尋找 ESP-IDF 5.0 CMD 並加以執行。

  2. ESP-IDF 5.0 CMD 中,流覽至您先前複製的 iot-中間件-freertos-samples 目錄。

  3. 流覽至 ESP32-Azure IoT Kit 專案目錄 demos\projects\ESPRESSIF\aziotkit

  4. 執行下列命令以啟動組態選單:

    idf.py menuconfig
    

新增設定

若要新增無線網路組態:

  1. ESP-IDF 5.0 CMD 中,選取 [FreeRTOS 範例組態] --->的 [Azure IoT 中間件],然後按 Enter

  2. 使用您的局域網路認證來設定下列組態設定。

    設定
    WiFi SSID {您的 Wi-Fi SSID}
    WiFi 密碼 {您的 Wi-Fi 密碼}
  3. 選取 Esc 以返回上一個功能表。

若要新增組態以連線至 Azure IoT 中樞:

  1. 選取 [FreeRTOS 主要工作組態>] ---的 [Azure IoT 中間件],然後按 Enter

  2. 將下列 Azure IoT 組態設定設為您在建立 Azure 資源之後儲存的值。

    設定
    Azure IoT 中樞 FQDN {您的主機名}
    Azure IoT 裝置標識碼 {您的裝置標識符}
    Azure IoT 裝置對稱密鑰 {您的主鍵}

    注意

    在 [Azure IoT 驗證方法] 設定中,確認已選取 [對稱密鑰] 的預設值。

  3. 選取 Esc 以返回上一個功能表。

若要儲存組態:

  1. 選取 Shift+S 以開啟儲存選項。 此功能表可讓您將組態儲存至目前 .\aziotkit 目錄中名為 skconfig 的檔案。
  2. 選取 Enter 以儲存組態。
  3. 選取 Enter 以關閉通知訊息。
  4. 選取 [Q ] 以結束組態功能表。

建置並刷新映像

在本節中,您會使用 ESP-IDF 工具來建置、刷新及監視 ESP32 DevKit,因為它會連線到 Azure IoT。

注意

在本節中的下列命令中,使用根目錄附近的簡短組建輸出路徑。 在每個需要它的命令中,於 參數後面 -B 指定建置路徑。 簡短路徑有助於避免ESPRESSIF ESP-IDF工具中目前的問題,而可能導致建置路徑名稱很長的錯誤。 下列命令使用本機路徑 C:\espbuild 作為範例。

若要建置映像:

  1. ESP-IDF 5.0 CMD,從 iot-中間件-freertos-samples\demos\projects\ESPRESSIF\aziotkit 目錄執行下列命令來建置映射。

    idf.py --no-ccache -B "C:\espbuild" build 
    
  2. 建置完成之後,請確認已在您先前指定的組建路徑中建立二進位映射檔。

    C:\espbuild\azure_iot_freertos_esp32.bin

若要閃爍影像:

  1. 在 ESP32 DevKit 上,找出反白顯示的 Micro USB 連接埠,如下圖所示:

    ESP32-Azure IoT 套件面板的照片。

  2. 連線 Micro USB 纜線連接到 ESP32 DevKit 上的 Micro USB 連接埠,然後將它連線到您的電腦。

  3. 開啟 Windows 裝置管理員,並檢視 [埠] 以找出 ESP32 DevKit 連接的 COM 連接埠。

    Windows 裝置管理員 螢幕快照,其中顯示已連線裝置的 COM 埠。

  4. ESP-IDF 5.0 CMD 中,執行下列命令,將 Your-COM-port> 佔位符和括弧取代<為上一個步驟的正確 COM 連接埠。 例如,將佔位元取代為 COM3

    idf.py --no-ccache -B "C:\espbuild" -p <Your-COM-port> flash
    
  5. 確認輸出會以下列文字完成,以取得成功的快閃:

    Hash of data verified
    
    Leaving...
    Hard resetting via RTS pin...
    Done
    

若要確認裝置連線到 Azure IoT Central:

  1. ESP-IDF 5.0 CMD 中,執行下列命令以啟動監視工具。 如同您在上一個命令中所做的,請將Your-COM-port> 佔位符和括號取代<為裝置所連線的 COM 埠。

    idf.py -B "C:\espbuild" -p <Your-COM-port> monitor
    
  2. 檢查是否有類似下列範例的重複輸出區塊。 此輸出會確認裝置連線到 Azure IoT 並傳送遙測。

    I (50807) AZ IOT: Successfully sent telemetry message
    I (50807) AZ IOT: Attempt to receive publish message from IoT Hub.
    
    I (51057) MQTT: Packet received. ReceivedBytes=2.
    I (51057) MQTT: Ack packet deserialized with result: MQTTSuccess.
    I (51057) MQTT: State record updated. New state=MQTTPublishDone.
    I (51067) AZ IOT: Puback received for packet id: 0x00000008
    I (53067) AZ IOT: Keeping Connection Idle...
    

檢視裝置屬性

您可以使用 Azure IoT 總管來檢視和管理裝置的屬性。 在下列各節中,您會使用IoT Explorer中顯示的 隨插即用功能來管理 ESP32 DevKit 並與其互動。 這些功能依賴公用模型存放庫中針對 ESP32 DevKit 發佈的裝置模型。 您已將 IoT Explorer 設定為在本教學課程稍早搜尋此存放庫的裝置模型。 在許多情況下,您可以選取 [IoT 總管] 功能表選項來執行相同的動作,而不需使用隨插即用。 不過,使用隨插即用通常會提供增強的體驗。 IoT Explorer 可以讀取隨插即用裝置所指定的裝置型號,並顯示該裝置特有的資訊。

若要在IoT總管中存取裝置 IoT 隨插即用元件:

  1. 從IoT總管的主檢視中,選取 [IoT 中樞],然後選取 [ 檢視此中樞中的裝置]。

  2. 選取您的裝置。

  3. 選取 IoT 隨插即用元件

  4. 選取 [預設元件]。 IoT Explorer 會顯示在裝置上實作的 IoT 隨插即用元件。

    IoT Explorer 中裝置預設元件的螢幕快照。

  5. 在 [ 介面] 索引標籤上,檢視裝置型號 [描述] 中的 JSON 內容。 JSON 包含裝置模型中每個 IoT 隨插即用元件的組態詳細數據。

    IoT Explorer 中的每個索引標籤都會對應至裝置模型中的其中一個 IoT 隨插即用元件。

    定位字元 類型 姓名 描述
    介面 介面 Espressif ESP32 Azure IoT Kit ESP32 DevKit 的範例裝置型號
    屬性 (可寫入) 屬性 telemetryFrequencySecs 裝置傳送遙測的間隔
    命令 Command ToggleLed1 開啟或關閉LED
    命令 Command ToggleLed2 開啟或關閉LED
    命令 Command DisplayText 在裝置畫面上顯示已傳送的文字

若要使用 Azure IoT Explorer 檢視和編輯裝置屬性:

  1. 選取 [ 屬性][可寫入] 索引標籤。它會顯示遙測傳送的間隔。

  2. telemetryFrequencySecs 值變更為 5,然後選取 [ 更新所需的值]。 您的裝置現在會使用此間隔來傳送遙測。

    在 IoT Explorer 中設定裝置遙測間隔的螢幕快照。

  3. IoT Explorer 會以通知回應。

若要使用 Azure CLI 檢視裝置屬性:

  1. 在您的 CLI 控制台中 ,執行 az iot hub device-twin show 命令。

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在主控台輸出中檢查裝置的屬性。

提示

您也可以使用 Azure IoT Explorer 來檢視裝置屬性。 在左側導覽中,選取 [裝置對應項]。

檢視遙測

使用 Azure IoT Explorer,您可以檢視從裝置到雲端的遙測流程。 您可以選擇性地使用 Azure CLI 來執行相同的工作。

若要在 Azure IoT Explorer 中檢視遙測:

  1. 從 IoT 總管中裝置的 [IoT 隨插即用 元件 [預設元件] 窗格中,選取 [遙測] 索引卷標。確認 [使用內建事件中樞] 設定為 []。

  2. 選取 [開始]。

  3. 當裝置將訊息傳送至雲端時,檢視遙測。

    IoT Explorer 中裝置遙測的螢幕快照。

  4. 選取 [ 顯示模型化事件 ] 複選框,以裝置型號所指定的數據格式檢視事件。

    IoT Explorer 中模型化遙測事件的螢幕快照。

  5. 選取 [ 停止 ] 以結束接收事件。

若要使用 Azure CLI 檢視裝置遙測:

  1. 執行 az iot hub monitor-events 命令。 使用您先前在 Azure IoT 中為您的裝置和 IoT 中樞建立的名稱。

    az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 在控制台中檢視 JSON 輸出。

    {
        "event": {
            "origin": "mydevice",
            "module": "",
            "interface": "dtmi:azureiot:devkit:freertos:Esp32AzureIotKit;1",
            "component": "",
            "payload": "{\"temperature\":28.6,\"humidity\":25.1,\"light\":116.66,\"pressure\":-33.69,\"altitude\":8764.9,\"magnetometerX\":1627,\"magnetometerY\":28373,\"magnetometerZ\":4232,\"pitch\":6,\"roll\":0,\"accelerometerX\":-1,\"accelerometerY\":0,\"accelerometerZ\":9}"
        }
    }
    
  3. 選取 CTRL+C 以結束監視。

在裝置上呼叫直接方法

您也可以使用 Azure IoT Explorer 呼叫已在裝置上實作的直接方法。 直接方法具有名稱,而且可以選擇性地擁有 JSON 承載、可設定的連線和方法逾時。 在本節中,您會呼叫開啟或關閉 LED 的方法。 您可以選擇性地使用 Azure CLI 來執行相同的工作。

若要在 Azure IoT Explorer 中呼叫方法:

  1. 從 IoT 總管中裝置的 [IoT 隨插即用元件 [預設元件] 窗格中,選取 [命令] 索引標籤。

  2. 針對 ToggleLed1 命令,選取 [傳送] 命令。 ESP32 DevKit 上的 LED 會開啟或關閉。 您也應該會在 IoT 檔案總管中看到通知。

    在 IoT Explorer 中呼叫方法的螢幕快照。

  3. 針對 DisplayText 命令,在內容欄位中輸入一些文字。

  4. 選取 [ 傳送] 命令。 文字會顯示在 ESP32 DevKit 畫面上。

若要使用 Azure CLI 呼叫方法:

  1. 執行 az iot hub invoke-device-method 命令,並指定方法名稱和承載。 針對此方法,設定 method-payloadtrue 表示LED切換為與其目前狀態相反。

    az iot hub invoke-device-method --device-id mydevice --method-name ToggleLed2 --method-payload true --hub-name {YourIoTHubName}
    

    CLI 主控台會顯示裝置上方法呼叫的狀態,其中 200 表示成功。

    {
      "payload": {},
      "status": 200
    } 
    
  2. 請檢查您的裝置以確認 LED 狀態。

疑難排解和偵錯

如果您在建置裝置程式代碼、閃爍裝置或連線時遇到問題,請參閱 疑難解答

如需對應用程式進行偵錯,請參閱 使用Visual StudioCode進行偵錯。

清除資源

如果您不再需要在本快速入門中建立的 Azure 資源,您可以使用 Azure CLI 來刪除資源群組及其所有資源。

重要

刪除資源群組是無法回復的動作。 資源群組及其中包含的所有資源都會永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。

若要依名稱移除資源群組:

  1. 執行 az group delete 命令。 此命令會移除資源群組、IoT 中樞,以及您建立的裝置註冊。

    az group delete --name MyResourceGroup
    
  2. 執行 az group list 命令以確認資源群組已刪除。

    az group list
    

下一步

在本教學課程中,您已建置自定義映像,其中包含適用於FreeRTOS的 Azure IoT 中間件範例程式代碼,然後將映像刷新至 ESP32 DevKit 裝置。 您已將 ESP32 DevKit 連線到 Azure IoT 中樞,並執行工作,例如在裝置上檢視遙測和呼叫方法。

在下一個步驟中,探索下列文章,以深入瞭解內嵌開發選項。