物联网云设备集成
来源:EET 发布时间:2021-05-13 分享至微信

物联网 (IoT)推动嵌入式控制向前所未有的智能水平发展。在独立使用设备之处,物联网将它们集成至一个由多个子系统组成的系统中。这使得设备间能够相互协作并与其他服务进行交互,从而提供更出色的性能、响应能力和正常运行时间。

对于由应用提供的所有物联网设备的数据流,用户均可利用云的强大计算能力,让机器学习、数据挖掘和其他技术对这些数据流进行处理。同时,这些物联网设备也无需专门针对应用进行设计。基于云的系统可以利用 Spark 和 Hadoop 等数据整理技术对不同来源的实时信息和历史信息进行整合,可以实现跨多个来源的关联作业,同时在实现过程中获得有价值的信息。虽然物联网具备一定的处理能力,但也会不可避免的遇到各种复杂状况。

物联网应用交付的一个关键问题是每个解决方案的组成部分都很多样性。物联网应用需要获取来自不同类型传感器的读数,例如温度、运动和空气质量。即使是同类型的传感器读数,数据也可能采集自不同制造商提供的设备,或者来自非物联网设计的旧硬件。

以监测酒店每个房间内温度的物联网项目为例。每个房间可以有三个传感器,且每个传感器都能监测温度。靠门的传感器可以将其温度传感器作为火警报警器模块的一部分,另一个靠近床的传感器可以与客房空调控制相关联,而浴室中的传感器可以作为物联网升级部分的专用装置安装。

对于那些从每种类型设备处获取读数的软件,需要考虑每个传感器的校准方法及获得数据的方式。一些设备可以依据超出编程阈值的条件变化或通过基于云的应用按需定期发送数据。同时,它们可能使用不同的网络连接,如使用有线网络,而有的则使用蓝牙或Zigbee等无线网络。此时,应用需要考虑这种可变化性。但问题远却远不止如此。

功耗是许多物联网设备要解决的首要问题。保持较长电池使用寿命的最常用方法是最小化无线通信及核心微处理器等高功耗系统的活动。这些子系统在系统的大部分生命周期都保持低功耗睡眠状态。它们会在短时间内醒来,并在再次睡眠前处理任务。最终减小运作周期。也许系统生命周期中只有不到1%的时间处于完全清醒和高功耗状态。在剩余的99%的时间内,仅对维持系统状态所需的系统(例如实时时钟)进行供电。采用这样的设计,物联网节点可在单次充电后使用数年。

现在,许多微控制器 (MCU) 都集成了硬件状态机。这样一来,可以通过实时时钟触发来定期唤醒重要的传感器,且可在不唤醒主机微处理器的情况下获取读数。在微处理器被唤醒并执行处理操作之前,某些系统可以采用一组预定读数。其他系统也可将阈值编程至传感器逻辑中,以便立即对较大偏差做出反应。

在云中运行的控制应用可能会从设备处请求需要的数据,或通过向设备发送命令来更改状态。但为了确保低占空比需求,设备不会在短时间内响应。因此当命令发出时,设备仍将处于低功耗状态。该应用需要用逻辑思维来确保其对设备状态的理解与现实保持一致。

在物联网初始阶段,集成商发现他们必须使用自定义协议或远程过程调用 (RPC) 技术来构建自己的云集成软件基础设施。通常,他们会在专用设施中使用自己的数据中心或租用刀片式服务器,并会从连接的嵌入式设备中接收数据,将信息推送到中央数据库并运行向用户呈现数据和执行模式分析的应用。

集成商要确保故障恢复能力和高可用性,并处理未能永久连接到设备的复杂环境。实现这一目标的一种方法则是使用设备影子概念。这些设备影子指的是在云端存储的文档,可以缓存有关设备状态(自上次报告后)和任何待定更改的信息。

虽然应用可以自己管理设备影子,但如果将其转移到可跨多种类型的设备提供标准化接口的服务层,则可更轻松地管理该项任务。目前,这是Amazon Web Services、IBM Watson IoT和 Google Cloud 等云基础设施产品提供处理的众多功能之一。

云基础设施平台执行的另一项服务是协议映射。云是围绕TCP/IP 协议,以及其能够承载服务的广泛使用而发展起来的。虽然许多基于云的服务所用的超文本传输协议 (HTTP) 是一种无状态协议,但由于TCP的广泛支持,该协议可运行在面向状态的TCP 层之上。但只有少数物联网设备具有可实现完整 TCP/IP 堆栈的资源,进而实现与云应用直接通信。由互联网工程任务组 (IETF)请求定义的受限应用协议 (CoAP) 简化了 HTTP,使其与资源受限设备更加兼容,并消除了使用 TCP 层的需求。

CoAP采用 4 字节报头和紧凑编码,能支持协议的数据包长度比通常的由骨干以太网连接所提供的数据包长度长。常见的替代CoAP方案是 IBM 开发的消息队列遥测传输 (MQTT) 协议,该协议具备适合更多物联网设备的特性。该协议可在各种数据包格式上运行,例如蓝牙、Zigbee以及 TCP/IP。与传统 HTTP Web 服务的客户端服务器模式相比,MQTT 支持发布订阅模式。该模式具有尽量减少单个物联网设备请求的优点。

图 1

图1:关映射 MQTT 和CoAP - 图片版权归 e 络盟所有



图 2:MQTT 发布/订阅模型示例 - 图片版权归 e 络盟所有

为确保跨不同平台的数据传输的一致性,云平台采用 JavaScript 对象表示法 (JSON) 格式。要将数据发送到云,设备必须首先将其拥有的数据编码为 JSON 表述,然后将其用作CoAP、HTTP 或 MQTT 消息的有效负载。实施者可选择:让终端设备执行此任务或使用网关来处理该过程。在广泛使用传统硬件的系统中,网关通常是首选。网关可以使用设备专有或预设物联网标准来收集数据,并将数据在 JSON 表述形式之间进行相互转换,也可以作为从云接收的任何命令的代理。网关实施将决定是否需要以设备可以理解的形式转换和中继这些命令。

为了处理 JSON 转换以及与云的交互,物联网设计的设备可能包含自己的软件堆栈。对 JSON 和网络接口的支持可以整合到核心实时操作系统 (RTOS),并使用诸如 C 语言之类的编程语言进行访问。某些由物联网集成商采用并被云基础设施供应商支持的技术会在每个针对物联网云集成进行优化的终端设备上实施虚拟机。

图 3:JSON 格式的传感器输出示例 - 图片版权归 e 络盟所有

在每个物联网设备平台上实施的设备驱动程序用于将虚拟机的命令转换为底层 RTOS 和固件可以理解的形式。固件负责优化功耗和低级计时,并提供云层可依赖的标准化服务集。

与传统嵌入式环境相比,云环境中的开发可提供更丰富的编程工具。现今,用于云编程的语言往往被设计为在托管代码环境中运行。代码并不是被编译,而是在运行时解释,或者如果要提供更高的性能,则需要即时 (JIT) 编译。虽然嵌入式开发人员通常选择的编程语言有限(主要是 C 语言和 C++),但云开发人员可以访问各种编程语言,而且其中许多语言针对特定需求进行了优化。尽管 Java 和 Python 可支持许多应用需求,但 Hadoop 对 Java 进行了扩展,便于更轻松地在多个计算节点间传播数据处理工作负载。

虽然嵌入式和云编程都意味着使用交叉开发资源,但为服务器编写代码的开发人员通常可以使用虚拟机技术在自己的计算机上构建目标环境的缩小版本。通常,嵌入式开发人员需要针对目标单独开发代码,并在每个编辑-编译-下载序列后运行测试,因此会增加周转时间。支持托管代码语言的中间件环境通过在本地虚拟机上实现原型代码来帮助简化开发,从而提供了类似于云开发人员所体验到的效果。

由于可以使用云基础设施服务,集成商现在可以访问一系列工具,从而使完整物联网解决方案的构建变得更加容易。这些面向云的服务深入到了设备层,可大大降低部署的复杂性,并且让集成商能够充分利用物联网的全部功能。

本文同步刊登于2019年电子工程专辑杂志4月刊

[ 新闻来源:EET,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!