快速部署具備邊緣運算能力且安全的雲端連線 IoT 裝置網路

作者:Stephen Evanczuk

資料提供者:DigiKey 北美編輯群

部署具有邊緣運算資源的物聯網 (IoT) 網路的需求量很大,但可能會是很艱鉅的任務,因為在端點設備、邊緣運算系統以及安全雲端連接性方面,有著許多的要求。雖然所需解決方案的離散元件很容易取得,但將這些元件都整合成一個完美、高效率的 IoT 應用,需要進行複雜的作業,不但要實作端點和邊緣硬體平台,還要實作 IoT 雲端供應商要求的服務介面、通訊方式,以及安全協定。

最近,市面上接連推出了許多整合度更高的 IoT 解決方案,可幫助開發人員更快將產品上市。例如,Microchip Technology 的一組雲端就緒型端點和邊緣運算產品,可提供一種現成的解決方案,旨在輕鬆連接 Amazon Web Services (AWS) IoT 服務和 AWS IoT Greengrass 邊緣運算服務。

本文將簡單討論為何應在邊緣處部署智慧性。接著將介紹 Microchip 推出的符合 AWS 標準的開發板,這些開發板作為雲端就緒型感測器端點系統使用。然後,本文將說明如何將這些端點與一個邊緣運算平台相結合。該平台以無線系統模組 (SOM) 為基礎,已預載 AWS 認證資訊和服務軟體,能幾乎順暢無礙地連線到 AWS 雲端。

結合端點和邊緣系統

低成本、低功率的系統隨手可得,這簡化了端點系統的實作;端點系統本身是感測器和致動器元件,是 IoT 應用周邊的最遠端。雖然在許多 IoT 應用中,這些端點系統直接和雲端連線,但對於較複雜的應用,通常需要部署所謂的邊緣系統,這些系統在功能上位於端點和 IoT 雲端之間。

透過在一組 IoT 端點的附近提供本機處理能力,邊緣系統能夠降低緊密回授迴路的延遲時間,或是滿足工業製程控制的時序要求。邊緣系統提供了所需的本機資源,用於處理較複雜的演算法 (例如機器學習推斷),或複雜的預處理常式,用於清理資料,並降低上傳至雲端的資料量和速度。在支援進階安全性原則以及隱私要求 (例如在公共網際網路上傳輸前,先將資料縮到最小) 方面,這項本機處理能力已證實扮演相當重要的角色。

使用 AWS IoT Greengrass 強化 IoT 應用

Amazon Web Services (AWS) 透過其 AWS IoT Greengrass 服務,正式提供邊緣處理能力。Greengrass 服務提供該公司的一部分雲端服務,這些雲端服務在邊緣設備上作為 Greengrass Core 執行。Greengrass 能與在可擴充的 AWS 雲端資源上執行的雲端服務密切合作,提供了一個較簡單的途徑,來部署和更新藉助 AWS SageMaker 全網管型機器學習平台等工具打造的機器學習推斷模型 (圖 1)。

AWS IoT Greengrass 示意圖圖 1:AWS IoT Greengrass 簡化了先進功能的本機處理和邊緣部署,這些功能包括在 AWS SageMaker 機器學習環境中訓練的機器學習模型。(圖片來源:Amazon Web Services)

AWS Greengrass 等邊緣服務有許多優點,本機處理只是其中之一。邊緣系統不僅在端點系統和雲端資源之間提供某種介面緩衝,在滿足 IoT 應用需求上,也扮演著關鍵的角色,可縮短延遲時間、增強隱私性和安全性,以及改善可用性。AWS Greengrass 為提供這些能力提供了基礎。

在 AWS Greengrass 模型中,雲端服務會進行一次性探索階段,之後,已定義的 Greengrass 群組中的端點設備,會使用 Greengrass Core 設備管理的 MQ 遙測傳輸 (MQTT) 傳訊方式彼此互動 (圖 2)。

AWS IoT Greengrass 群組示意圖,端點設備可以彼此通訊圖 2:在 AWS IoT Greengrass 群組中,端點設備可以使用 Greengrass Core 設備管理的 MQTT 傳訊方式,與彼此及雲端進行通訊。(圖片來源:Amazon Web Services)

部署到 Greengrass 群組中之後,這些設備便能相互協作,避免冗長的往返延遲 (使用與雲端直接通訊的 IoT 裝置進行 IoT 部署時,會發生這種延遲)。這些設備可以直接透過 MQTT 通道相互發送訊號,而 Greengrass Core 設備的本機處理能力,會協調這些通道。

當與雲端的連線斷開時,這些設備可以在 Greengrass Core 設備的管理下繼續運作。相反,如果某個設備離線,其他設備和雲端型應用程式可以繼續保持運作,只需使用與每個實體設備關聯的虛擬設備影子所維護的資料 (圖 3)。

AWS IoT Greengrass 等邊緣運算服務架構示意圖圖 3:透過提供能維持最新設備狀態資料的影子設備,AWS IoT Greengrass 等邊緣運算服務架構能協助維持可用性,即便在相關的實體設備離線時,IoT 應用仍可以繼續運作。(圖片來源:Amazon Web Services)

雖然從概念上講很簡單,但是要在一組 IoT 裝置之間執行此協調作業,可能非常困難。對一般的 IoT 開發人員來說,要完整運用這項邊緣運算能力,要一次面對硬體、軟體以及系統管理的挑戰,令人卻步。在硬體層面,需要構建和部署一個由適合的端點和邊緣運算設備組成的網路。而且,需要編寫軟體,以在 IoT 端點和邊緣設備所組成的本機網路中實作安全的通訊,並且還要與雲端服務安全通訊。最後,需要對這些設備進行適當的設定,為其佈建適合的私鑰和認證,並與彼此和 IoT 雲端服務一同進行驗證。

為了簡化此過程,Microchip 推出的一組開發板提供符合 AWS 標準的現成解決方案,讓端點和邊緣設備能夠輕鬆安全地在本機連線至 AWS Greengrass Core,在雲端連線至 AWS IoT Core。

雲端就緒型端點系統

Microchip 的 PIC-IoT WAAVR-IoT WA 開發板能快速部署為端點系統,可提供與 AWS IoT Core 的現成連線。這兩款開發板整體功能相同,但設計目的是為習慣使用 Microchip 的 PIC 微控制器系列的開發人員,和使用 Microchip 的 AVR ATmega 微控制器系列的開發人員,提供熟悉的平台。AVR-IoT WA 板以 Microchip 的 ATMEGA4808 8 位元微控制器為基礎,使用與 PIC-IoT WA 相同的元件組 (圖 4),後者則是以 Microchip 的 PIC24FJ128GA705 16 位元微控制器為基礎。

Microchip 的 AVR-IoT WA 和 PIC-IoT WA 板圖片圖 4:Microchip 的 AVR-IoT WA 和 PIC-IoT WA 板,提供雲端就緒型端點系統,這些系統內含相同的支援設備,但根據不同的 Microchip 微控制器打造,包括此處所示的 PIC-IoT WA 板所使用的 16 位元 PIC 微控制器。(圖片來源:Microchip Technology)

對於連接性,這兩款開發板都包含 Microchip 的 ATWINC1510-MR210PB,這是一款通過認證的 Wi-Fi 模組,專為低功率 IoT 裝置所設計。這款模組整合了 8 Mbit 的快閃記憶體,以及完整的傳輸與接收無線射頻 (RF) 訊號鏈,其中包括功率放大器 (PA)、低雜訊放大器 (LNA)、RF 交換器、電源管理裝置,以及印刷天線。除了內建開機唯讀記憶體 (ROM) 以提供快速韌體啟動能力之外,內建的網路堆疊還支援標準的網路協定,使用硬體加速器來加速傳輸層安全性 (TLS) 和 Wi-Fi 安全性協定。

除了 Microchip 的 MCP9808 精準數位溫度感測器,以及 VishayTEMT6000X01 光電二極體感測器之外,每個開發板還包含一個 mikroBUS 連接器。使用這個連接器,開發人員可以從多種 Mikroe Click 板中選擇附加板,從而可以輕鬆擴充硬體基底。對於電源和電池管理,這些開發板都內含 Microchip 的 MCP73871T-2CCI/ML 元件,此元件使用 USB 電源或電源插座,提供系統電源和鋰離子電池充電。

對於安全性,每一款開發板都內含 Microchip 的 ATECC608A 安全元件。針對這些開發板,此元件預先佈建了金鑰和憑證,可為 AWS IoT 驗證和安全性機制提供現成的支援。

這些開發板使用一系列板載硬體元件以及預載的韌體,可輕鬆連接到 AWS IoT Core。開發人員只需要用一條連接到個人電腦的 micro USB 線,將板件啟動即可。開發板使用自己 (或開發人員) 的認證資訊連線到本機的 Wi-Fi 存取點之後,會使用 Wi-Fi 模組內建的 TCP/IP 堆疊和預先佈建的安全性認證資訊,自動與 AWS IoT Core 建立 MQTT 連線。在建立 MQTT 連線後,開發板會立即開始從溫度和光線感測器傳輸資料。開發人員可以在 Microchip 沙箱帳號中,在元件專屬的頁面上檢視結果。

Microchip 分別在 PIC-IoT WA 程式碼AVR-IoT WA 程式碼的不同儲存庫中,提供這項基線應用程式。透過檢視這段程式碼,開發人員能夠快速瞭解基本的設計模式,例如如何在和雲端通訊時,使用 MQTT 連線傳送感測器的資料以及接收指令或資料 (清單 1)。

複製
// This will get called every 1 second only while we have a valid Cloud connection
static void sendToCloud(void)
{
    static char json[PAYLOAD_SIZE];
    static char publishMqttTopic[PUBLISH_TOPIC_SIZE];
    ledTickState_t ledState;
    int rawTemperature = 0;
    int light = 0;
    int len = 0;    
    memset((void*)publishMqttTopic, 0, sizeof(publishMqttTopic));
    sprintf(publishMqttTopic, "%s/sensors", cid);
    // This part runs every CFG_SEND_INTERVAL seconds
    if (shared_networking_params.haveAPConnection)
    {
        rawTemperature = SENSORS_getTempValue();
        light = SENSORS_getLightValue();
        len = sprintf(json,"{\"Light\":%d,\"Temp\":%d.%02d}", light,rawTemperature/100,abs(rawTemperature)%100);
    }
    if (len >0) 
    {
        CLOUD_publishData((uint8_t*)publishMqttTopic ,(uint8_t*)json, len);        
        if (holdCount)
        {
            holdCount--;
        }
        else
        {
            ledState.Full2Sec = LED_BLIP;
            LED_modeYellow(ledState);
        }
        
    }
}
 
//This handles messages published from the MQTT server when subscribed
static void receivedFromCloud(uint8_t *topic, uint8_t *payload)
{
    char *toggleToken = "\"toggle\":";
    char *subString;
    ledTickState_t ledState;
   sprintf(mqttSubscribeTopic, "$aws/things/%s/shadow/update/delta", cid);
    if (strncmp((void*) mqttSubscribeTopic, (void*) topic, strlen(mqttSubscribeTopic)) == 0) 
    {
        if ((subString = strstr((char*)payload, toggleToken)))
        {
            if (subString[strlen(toggleToken)] == '1')
            {   
                setToggleState(TOGGLE_ON);
                ledState.Full2Sec = LED_ON_STATIC;
                LED_modeYellow(ledState);
            }
            else
            {
                setToggleState(TOGGLE_OFF);
                ledState.Full2Sec = LED_OFF_STATIC;
                LED_modeYellow(ledState);
            }
            holdCount = 2;
        }
    }
    debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "topic: %s", topic);
    debug_printer(SEVERITY_NONE, LEVEL_NORMAL, "payload: %s", payload);
    updateDeviceShadow();
}

清單 1:開發人員可以檢視 Microchip 軟體儲存庫中的範例程式碼,以更好地理解關鍵的設計模式,例如這兩個函數中所示的與雲端服務交換 MQTT 訊息。(程式碼來源:Microchip Technology)

開發人員可以使用各種開發資源來擴充這段程式碼。Microchip 透過 MPLAB X 整合開發環境 (IDE)、雲端型 MPLAB Xpress IDE,以及免費的 MPLAB XC 編譯器,支援客製化軟體開發。對於除錯,每款開發板都包含 Microchip 的 PICkit On-Board (PKOB) Nano 除錯器,因此無需使用額外的除錯硬體介面。開發人員能在 MPLAB X IDE 中作業的同時,透過連接到個人電腦的 USB 連線來使用 PKOB 除錯器。

AWS Greengrass 就緒型解決方案

Microchip 提供多種以 AWS Greengrass 為基礎的邊緣運算資源,可以輕鬆加強其 IoT 網路,幾乎與部署雲端連線的端點一樣簡單。

針對邊緣運算平台,Microchip 為其 ATSAMA5D27-WLSOM1 無線 (WL) 系統模組 (SoM) 提供符合 AWS 標準的 AWS Greengrass 支援。與 Microchip 端點板一樣,ATSAMA5D27-WLSOM1 提供了一個全面的硬體平台,可輕鬆連線到 AWS IoT Core 服務 (圖 5)。

Microchip 的 ATSAMA5D27-WLSOM1 示意圖 (按此放大)圖 5:Microchip 的 ATSAMA5D27-WLSOM1 整合了提供符合 AWS IoT Greengrass 標準的邊緣運算系統所需的整套元件。(圖片來源:Microchip Technology)

對於主機處理器,WLSOM1 使用低功率的 SAMA5D27 系統級封裝 (SiP) ATSAMA5D27C-LD2G-CU,該產品整合 Microchip 以 Arm Cortex-A5 處理器作為基礎的高效能 SAMA5D27 微處理器,其中包含 2 Gbit 的低功率第二代雙倍數據傳輸率同步動態隨機存取記憶體 (LPDDR2-SDRAM)。

如同其端點板,Microchip 的 WLSOM1 也內含一個獲得認證的無線模組。在此情況下,Microchip 使用了自家的 ATWILC3000,該款模組搭配使用整合式硬體加速器、整合式處理器以及堆疊式韌體,同時支援 Wi-Fi 和藍牙連接,使兩種無線技術共存。WLSOM1 也提供有線連接,由 Microchip 的 KSZ8081RNAIA 乙太網路收發器管理。Microchip 納入自家的 64 Mbit SST26VF064BEUI 快閃記憶體,該記憶體預先佈建 IEEE 分配的 6 位元延伸唯一識別碼 (EUI-48),以及 8 位元組的 EUI-64。這能確保全域使用唯一的 MAC 位址,以可靠地連線至公共網際網路。(請參閱《內建 MAC 位址的快閃記憶體,可在開發期間幫上大忙》。)

最後,WLSOM1 內含 ATECC608A 安全元件,可提供硬體式安全性。WLSOM1 由於高度整合,因此在開發板設計中實作硬體介面時,除了解耦電容和上拉電阻之外,需要的元件相對較少。

在 AWS IoT Greengrass 上建立 WLSOM1 型開發板,不需要花多少工夫。事實上,大部分工作都是設定 AWS 服務以供其使用。對此,Microchip 為開發人員提供了逐步指引,包括如何建立 AWS 帳號,以及如何定義 Greengrass Core 和端點設備的 Greengrass 群組。在 Linux 開發系統上建置目標系統後,開發人員會將目標映像檔、Greengrass Core 軟體以及憑證上傳到 WLSOM1 上,通常是使用 SDCard 隨身碟進行操作。

由於 ATECC608A 安全元件提供了硬體式安全性,因此對開發人員來說,驗證和安全通訊的運作很透明。但對 Greengrass 邊緣系統來說,在保護邊緣系統上的 Greengrass Core 和 AWS 雲端之間的私鑰 (安全通訊的基礎) 方面,ATECC608A 扮演更深入的角色。

Greengrass 群組中的設備仰賴數位憑證來驗證彼此、驗證其位於群組內的訊息,以及驗證和雲端型 AWS 服務之間的訊息 (圖 6)。如果由於私鑰暴露或憑證被假造,底層的安全機制和協定遭到破壞,則群組甚至雲端型資源,也可能進而遭到破壞。

端點中儲存的私鑰支援許多個憑證的示意圖圖 6:為確保安全通訊交易,AWS 雲端服務和 AWS IoT Greengrass 群組仰賴於多重憑證,這些憑證受到儲存在端點和 Greengrass Core 設備中的私鑰支援。(圖片來源:Amazon Web Service)

AWS 只允許與受信任的設備進行互動,來保障自己和使用者的應用。受信任設備包含一個能保護私鑰的硬體安全元件。這些私鑰可用於在 Greengrass Core 設備和 AWS IoT Core 之間,以及在 Greengrass Core 設備和端點之間安全通訊 (圖 7)。

Greengrass Core 設備仰賴於私鑰的安全儲存示意圖圖 7:私鑰利用一些安全元件獲得安全的儲存,是 Greengrass Core 設備仰賴的基礎。安全元件的範例有 Microchip 的 ATSAMA5D27-WLSOM1 無線 SOM 中所整合的 ATECC608A 元件。(圖片來源:Amazon Web Services)

AWS 已將 WLSOM1 以及 ATECC608A 安全元件,確定為符合 Greengrass 標準、能夠滿足其安全性要求的解決方案。事實上,ATECC608A 支援 IoT Greengrass Hardware Security Integration (HSI) 中所提供的 AWS 增強型安全功能。HSI 使用公鑰加密法標準 #11,該標準定義了產業標準的應用程式開發介面 (API),用於處理器和硬體安全模組 (HSM,用於儲存私鑰) 之間的通訊。在 WLSOM1 中,ATECC608A 被指定為符合 AWS Greengrass 標準的硬體安全模組。對一般用於邊緣系統中的 Linux 系統元件來說,支援這項標準安全性介面格外重要,在 Greengrass Core 設備中更是如此。

在此安全軟體的基礎上,開發人員能使用 AWS Lambda 函數 (這些函數提供一個較簡單的事件驅動式編程模型),安全地擴充 Greengrass Core 邊緣系統,使這些系統具備本機處理能力。雖然在 Greengrass Core 設備上運作的客製化程式碼能支援特定的應用需求,但 AWS Lambda 函數讓這些設備能夠與 AWS 雲端服務直接互動。例如,開發人員能輕鬆地實作將端點與 AWS 服務連線的 Lambda 函數,這些 AWS 服務包括 Amazon 用於資料儲存的 NoSQL DynamoDB 資料庫管理系統,或是大量 AWS 產品中的其他服務 (圖 8)。

AWS IoT Greengrass 讓邊緣系統能夠提供本機處理能力的示意圖圖 8:AWS IoT Greengrass 讓邊緣系統能夠提供本機處理能力,包括使用 AWS Lambda 函數與 AWS 雲端服務輕鬆整合,以實現資料儲存、機器學習以及其他功能。(圖片來源:Amazon Web Services)

結論

部署具有邊緣運算資源的 IoT 網路,可能會讓企業感到任務艱鉅,因為在端點設備、邊緣運算系統以及安全雲端連接性方面,有許多的要求。市面上已有所需解決方案的離散元件,但要將這些整合成一個協調的 IoT 應用,開發人員需要面對一些複雜的作業,來實作 IoT 雲端供應商要求的服務介面、通訊方式,以及安全協定。

如本文所述,Microchip Technology 的一組雲端就緒型端點和邊緣運算產品,提供了一種現成的解決方案,可輕鬆連接 AWS IoT 服務和 AWS IoT Greengrass 邊緣運算服務。開發人員可以使用 Microchip 提供的符合 AWS 標準的端點板,以及無線系統模組邊緣運算平台,幾乎順暢無礙地連線到 AWS 雲端,並加速 IoT 網路的部署。

延伸閱讀

  1. 內建 MAC 位址的快閃記憶體,可在開發期間幫上大忙
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk 撰寫電子產業的相關資訊已有超過二十年的經驗,涉及的主題多元,涵蓋硬體、軟體、系統以及包含 IoT 在內的應用。他以神經元網路為研究主題,取得神經科學博士學位,並且在航太產業,針對廣泛運用的安全系統和演算法加速方法進行研究。目前,在撰寫科技和工程文章之餘,他投入辨識和推薦系統的深度學習應用。

關於出版者

DigiKey 北美編輯群