快速部署具有边缘计算能力的安全云连接物联网设备网络

作者:Stephen Evanczuk

投稿人:DigiKey 北美编辑

尽管具备边缘计算资源的物联网 (IoT) 网络部署需求量很大,但这可能是一项艰巨的任务,其中对端点设备、边缘计算系统和安全云连接有诸多要求。虽然所需解决方案的分立元件是现成的,但将它们全部整合到一个无缝、高效的物联网应用中,则是一项复杂的任务,需要全身心投入,不仅要实现端点和边缘硬件平台,还要实现物联网云提供商所需的服务接口、通信方法和安全协议。

好消息是,市场上近期陆续推出了多种高度集成的物联网解决方案,可以帮助开发人员更快地将产品推向市场。例如,Microchip Technology 推出的一组支持云的端点和边缘计算产品就提供了一种现成的解决方案,能够轻松连接 Amazon Web Services (AWS) IoT 服务和 AWS IoT Greengrass 边缘计算服务。

本文将简要讨论为何应在边缘部署智能。接着会介绍 Microchip 的 AWS 认证开发板,这些开发板可用作支持云的传感器端点系统。然后,本文将展示如何将这些端点与边缘计算平台组合在一起,后者基于无线系统级模块 (SOM),预先加载了 AWS 凭证和服务软件,能提供几乎透明的 AWS 云连接。

组合端点和边缘系统

现成的低成本、低功耗系统简化了端点系统的实现,而所谓端点系统就是构成物联网应用外围最远端的传感器和执行器。尽管在许多物联网应用中,这些端点系统直接与云连接,但更复杂的应用通常需要部署所谓的边缘系统,这些系统在功能上位于端点与物联网云之间。

通过在一组物联网端点附近提供本地处理能力,边缘系统就可以减少紧密反馈回路中的延迟,或满足工业过程控制的时序要求。边缘系统提供了所需的本地资源,用于处理更复杂的算法(如机器学习推断),或处理复杂的预处理例程,以清理数据及减少驱动至云的数据量和速度。事实证明,这种本地处理能力对于支持高级安全策略和隐私要求(例如,在通过公共互联网传输之前将数据最小化)至关重要。

使用 AWS IoT Greengrass 增强物联网应用

Amazon Web Services (AWS) 通过其 AWS IoT Greengrass 服务将边缘处理功能正式化,该服务提供了部分云服务作为 Greengrass Core 在边缘设备上运行。Greengrass 旨在与可扩展 AWS 云资源上运行的云服务密切合作,提供了一个相对直接的途径,以部署和更新借助像 AWS SageMaker 全托管机器学习平台这样的工具构建的机器学习推断模型(图 1)。

AWS IoT Greengrass 示意图图 1:AWS IoT Greengrass 简化了高级功能的本地处理和边缘部署;这些功能包括在 AWS SageMaker 机器学习环境中训练的机器学习模型。(图片来源:Amazon Web Services)

本地处理只是 AWS Greengrass 等边缘服务的优势之一。边缘系统不仅在端点系统与云资源之间提供某种接口缓冲区,还在满足物联网应用要求上扮演着关键角色,可减少延迟,增强隐私、安全性以及可用性。AWS Greengrass 为交付这些功能提供了基础。

在 AWS Greengrass 模型中,对云服务进行一次性发现阶段后,所定义的 Greengrass 组内的端点设备会使用由 Greengrass Core 设备管理的 MQ 遥测传输 (MQTT) 消息传递功能进行相互交互(图 2)。

AWS IoT Greengrass 组内端点设备可以相互通信示意图图 2:在 AWS IoT Greengrass 组内,端点设备可以使用由 Greengrass Core 设备管理的 MQTT 消息传递功能进行交互以及与云通信。(图片来源:Amazon Web Services)

设备在 Greengrass 组中一经部署即可互相配合,从而避免在使用直接与云通信的物联网设备进行物联网部署时存在的冗长往返延迟。而且,设备彼此还可以通过由 Greengrass Core 设备的本地处理能力建立的 MQTT 通道,直接相互发送信号。

如果与云的连接丢失,设备可以在 Greengrass Core 设备的管理下继续运行。反过来,如果某个设备脱机,其他设备和基于云的应用可以使用由每个物理设备所关联的虚拟影子设备维持的数据,继续保持运行(图 3)。

AWS IoT Greengrass 等边缘计算服务架构示意图图 3:像 AWS IoT Greengrass 这样的边缘计算服务架构,通过提供可以维持最新设备状态数据的影子设备来帮助保持可用性,即使关联的物理设备离线,物联网应用也可以继续运行。(图片来源:Amazon Web Services)

尽管从概念上讲很简单,但是在一组物联网设备之间实现这种协调可能会很有挑战。对于典型的物联网开发人员来说,要充分利用这种边缘计算能力将带来令人生畏的硬件、软件和系统管理挑战。在硬件级别,需要构建和部署一个包含合适端点和边缘计算设备的网络。而且,需要编写软件来实现物联网端点和边缘设备所构成的本地网络内,及其与云服务的安全通信。最后,需要对这些设备进行适当配置,提供合适的私钥和证书,并在设备彼此之间以及设备与物联网云服务之间完成身份认证。

为了简化这一过程,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 位微控制器,其使用的元器件与基于 Microchip 的 PIC24FJ128GA705 16 位微控制器的 PIC-IoT WA(图 4)相同。

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 模块。该模块集成了 8 兆位 (Mbits) 闪存以及完整的发射和接收射频 (RF) 信号链,包括功率放大器 (PA)、低噪声放大器 (LNA)、射频开关、电源管理和印刷天线。除了用于快速固件引导的集成引导只读存储器 (ROM),内置的网络堆栈还支持标准互联网协议,使用硬件加速器来加速传输层安全 (TLS) 和 Wi-Fi 安全协议。

除了 Microchip 的 MCP9808 精密数字温度传感器和 VishayTEMT6000X01 光电二极管传感器,每个开发板还包括一个 mikroBUS 连接器。使用此连接器,开发人员可以通过从众多可用的 Mikroe Click 板中选择扩展板,轻松扩展硬件基础。对于电源和电池管理,每个开发板均包含一个 Microchip 的 MCP73871T-2CCI/ML 器件,该器件可通过 USB 电源或壁式适配器提供系统电源和锂离子电池充电。

为了保证安全,每个开发板都包含一个 Microchip 的 ATECC608A 安全元件。对于这些开发板,该器件预置了密钥和证书,提供即用型 AWS 物联网认证和安全机制支持。

这些开发板使用一系列板载硬件组件和预载固件,旨在以最少的工作量连接至 AWS IoT Core。开发人员只需使用一根连接到个人电脑的微型 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 板载 (PKOB) Nano 调试器,消除了增加调试硬件接口需求。在 MPLAB X IDE 中工作时,开发人员通过与个人电脑的 USB 连接访问 PKOB 调试器。

AWS Greengrass 即用型解决方案

Microchip 借助基于 AWS Greengrass 的边缘计算资源来扩展其物联网网络,几乎与部署云连接的端点一样简单。

对于边缘计算平台,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 Gb 低功耗双倍数据速率 2 同步动态随机访问内存 (LPDDR2-SDRAM)。

与端点开发板一样,Microchip 的 WLSOM1 也包括一个经过认证的无线模块。在此例中,Microchip 使用其 ATWILC3000 模块,该模块通过集成硬件加速器、集成处理器和堆栈固件的组合来同时支持 Wi-Fi 和蓝牙连接。WLSOM1 还提供有线连接,由 Microchip 的 KSZ8081RNAIA 以太网收发器进行管理。Microchip 还将其自家的 64 Mb SST26VF064BEUI 闪存纳入在内,该闪存预先配置了 IEEE 分配的 6 字节扩展唯一标识符 (EUI-48) 和 8 字节 EUI-64。这样可以确保全局唯一的 MAC 地址,以便可靠地连接到公共互联网。(请参阅“内置 MAC 地址的闪存助力开发设计”。)

最后,WLSOM1 还包括 ATECC608A 安全元件,用于提供基于硬件的安全性。由于具有高集成度,除去耦电容器和上拉电阻器外,WLSOM1 只需要相对较少的元器件即可在开发板设计中实现硬件接口。

在 AWS IoT Greengrass 上搭建基于 WLSOM1 的开发板,只需很少的工作量。实际上,大部分工作用在了供其使用的 AWS 服务设置上。对此,Microchip 为开发人员提供了分步指导,包括如何创建 AWS 帐户以及如何定义 Greengrass Core 和端点设备的 Greengrass 组。在 Linux 开发系统上构建目标系统后,开发人员通常使用安全数字卡 (SDCard) 闪存驱动器将目标映像、Greengrass Core 软件和证书上传到 WLSOM1。

受益于 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 硬件安全集成 (HSI) 中提供的 AWS 增强安全功能。HSI 使用 11 号公钥加密标准 ,该标准定义了一个行业标准应用编程接口 (API),用于在处理器与存储私钥所用硬件安全模块 (HSM) 之间进行通信。在 WLSOM1 中,ATECC608A 被指定为 AWS Greengrass 认证的 HSM。对于一般边缘系统中使用的基于 Linux 的系统,尤其是 Greengrass Core 设备,对这个标准安全接口的支持尤为重要。

利用此安全软件基础,开发人员可以使用 AWS Lambda 函数安全地扩展 Greengrass Core 边缘系统的本地处理能力。该函数提供了一个相对简单的事件驱动编程模型。虽然在 Greengrass Core 设备上运行的自定义代码可以支持特定的应用需求,但 AWS Lambda 函数允许这些设备直接与 AWS 云服务交互。例如,开发人员可以轻松实现将端点与 AWS 服务相连接的 Lambda 函数。具体服务包括用于数据存储的 Amazon NoSQL DynamoDB 数据库管理系统,或是广泛的 AWS 产品组合中的其他服务等(图 8)。

AWS IoT Greengrass 能够让边缘系统提供本地处理示意图图 8:AWS IoT Greengrass 能够让边缘系统提供本地处理,包括使用 AWS Lambda 函数与 AWS 云服务进行简单集成,以实现数据存储、机器学习和其他功能。(图片来源:Amazon Web Services)

结语

部署具备边缘计算资源的物联网可能是一项艰巨的任务,因为对端点设备、边缘计算系统和安全云连接有诸多要求。目前打造所需解决方案的各个部件已经存在,但要将它们集成到一个协调的物联网应用中,开发人员就不得不面对种种复杂的任务,以实现物联网云提供商所需的服务接口、通信方法和安全协议。

如上文所述,Microchip Technology 推出的一组支持云的端点和边缘计算产品就提供了一种现成的解决方案,能够轻松连接 AWS IoT 服务和 AWS IoT Greengrass 边缘计算服务。开发人员可以使用 Microchip 的 AWS 认证端点开发板和无线系统级模块边缘计算平台,为 AWS 云提供近乎透明的连接,并加快物联网的部署。

拓展阅读

  1. 内置 MAC 地址的闪存助力开发设计

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Stephen Evanczuk

Stephen Evanczuk 拥有 20 多年的电子行业编辑经验,主题涉猎广泛,涵盖硬件、软件、系统以及包括物联网在内的各种应用。他拥有神经网络领域的神经科学博士学位,曾经从事航空航天领域大规模分布式安全系统和算法加速方法方面的工作。目前,他不是在撰写技术和工程文章,就是在研究深度学习在识别和推荐系统方面的应用。

关于此出版商

DigiKey 北美编辑