树莓派在工业物联网中的应用

部署运行你感兴趣的模型镜像

使用树莓派的商业和工业物联网应用:物联网解决方案原型设计

第1章 物联网系统概述

什么是工业物联网?

物联网的核心思想是互联能够感知或与环境交互并相互通信的电子系统。尽管物联网的典型示例包括日常事物和应用程序,但物联网的原理也可应用于商业和工业系统,从而获得更好的结果并提高效率。因此,作为物联网的一部分,我们遇到了工业物联网(IIoT)这一特定概念,它指的是商业和工业产品。

尽管工业市场和消费市场针对不同的需求并提出不同的解决方案和产品,但在构建物联网系统时,其基本特征和架构都基于一组共同的原则。这些正是本章所探讨的原则。

首先,让我们介绍一些物联网和工业物联网的基本定义。

尽管物联网(IoT)没有统一的定义(参见,例如,IEEE关于“物联网不断变化的定义”1),我们选择采用互联网工程任务组(IETF)在2010年提供的以下描述。

基本理念是,物联网将把我们周围的对象(电子的、电气的、非电气的)连接起来,以提供无缝通信以及它们所支持的情境服务。射频识别标签、传感器、执行器和移动电话的发展使得实现物联网成为可能,这些设备能够相互交互与协作,从而让服务更加完善,并可随时随地访问。

—互联网工程任务组

我们还对物联网中的 thing 进行了描述。

在物联网的愿景中,“事物”种类繁多,例如计算机、传感器、人、执行器、冰箱、电视、车辆、移动电话、衣物、食品、药品、书籍等。这些事物可分为三类:人、机器(例如传感器、执行器等)和信息(例如衣物、食品、药品、书籍等)。这些“事物”至少应通过一种唯一的标识方式进行识别,以便能够相互寻址、通信并验证其身份。在此,如果某个“事物”已被识别,我们称之为“对象。”

——互联网工程任务组

在谈到工业物联网时,我们采用惠普的描述。2

工业物联网由互联网连接的机械和处理其产生数据的高级分析平台组成。工业物联网设备从小型环境传感器到复杂的工业机器人不等。尽管“工业”一词可能让人联想到仓库、造船厂和工厂车间,但工业物联网技术在农业、医疗保健、金融服务、零售和广告等多个行业都具有广阔的应用前景。

工业物联网是物联网的一个子类别,还包括面向消费者的可穿戴设备、智能家居技术和自动驾驶汽车等应用。

嵌入式传感器设备、机器和基础设施通过互联网传输数据,并由软件进行管理,这是两种概念的共同特征。

—HP

物联网特征

根据这些基本定义,现在让我们讨论物联网的一些关键特征。物联网系统的重点在于其构建基础之上的事物。任何物联网解决方案的目标都是为已存在的对象/设备赋予智能,并使其能够自主运行。智能基于感知与操作、连接性、大量数据的收集以及处理和存储能力,从而形成物联网系统的以下基本特征:

  • 连接性 – 这是任何物联网解决方案的基础;传感器在它们自身之间以及与设备之间相连;设备相互连接并连接到互联网;无论是在本地还是全球层面,交换数据的能力都是物联网背后的推动力。

  • 事物的管理 – 任何物联网设备的目的都是感知并与环境进行交互,而这只能通过物理对象实现,我们通常将这些物理对象称为事物。

  • 异质性 – 物联网生态系统建立在各种硬件设备、网络基础设施和处理平台之上,这些组成部分需要交换信息并共同实现一个共同目标。

  • 数据收集 – 物联网系统的智能基于传感器收集的数据;这些数据经过处理后,被转换为可操作信息。

  • 动态性 – 物联网基础设施持续变化,网络动态调整参数,传感器可以连接或断开连接,设备可以进入空闲、唤醒或睡眠模式,系统需要在环境发生变化时仍保持其正确的行为。

  • 大规模 – 截至2020年,连接到互联网的设备数量预计达到200亿,3 并且以指数级速度增长;这需要能够管理如此大量连接的基础设施和平台。

  • 自主性 – 许多设计的智能设备旨在部署在偏远地区;在这种情况 下,这些设备必须在没有人为干预的情况下做出决策,同时它们可能无法接入持续电源,而是依赖电池或替代能源。与此同时,这些设备需要能够被远程监控、控制,甚至更新或维修。

  • 隐私与安全 ——这是物联网面临的最大担忧之一。将供暖系统或健康设备连接到互联网会使它们面临重大风险;对这类系统进行恶意或破坏性控制可能会带来灾难性后果。同样重要的是,物联网用户需要了解(并同意)始终收集哪些数据。

考虑一个物联网智能建筑系统,该系统可监控建筑物内部的温度,并能够访问居住者日历。基于这些数据,当有人到达或已在家中时,系统可确保设置其偏好的环境温度;而当人们外出时,系统则可以优化暖通空调(HVAC)系统的运行,以降低能耗和成本。此类系统需要将温度传感器与暖通空调(HVAC)系统互联,并获取有关居住者位置的信息。此外,为了确保系统有效运行,必须实现自主运行和不间断工作,同时确保与用户行为相关的数据得到安全存储和处理。由于系统需要获取居住者的位置信息,隐私与安全问题便成为关注的核心。例如,未经授权访问这些信息可能会让窃贼准确得知家中无人的时间。我们很快就能从这个简单的例子中识别出前述多个特征。

物联网成功的一个关键需求是,人们在使用新技术时需要感到舒适和安全。不幸的是,物联网技术也带来了新的特定安全问题和风险。如果我们周围的所有设备都连接到互联网,那么安全漏洞可能会对财产和人类造成现实世界的损害。现代物联网安全中最严重的问题之一是僵尸网络的使用。僵尸网络是一组安全性已被破坏的设备,由第三方控制,用于对特定目标发起网络攻击。通常,这些攻击表现为分布式拒绝服务(DDoS)。由于连接到物联网网络的设备数量庞大,物联网特别容易受到此类攻击。最近两次著名的攻击分别是2016年的Mirai4和Remaiten5僵尸网络。

物联网架构

通常,物联网解决方案具有以下行为:感知环境、分析收集的数据,并根据结论做出反应。为了更好地说明通用物联网系统的组件及其相互作用方式,专家们提出了物联网技术栈。由于物联网在标准化方面仍然严重不足,因此存在多个版本的技术栈,详细程度不一,侧重点也各不相同。然而,从广义上看,大多数技术栈都包含以下组件:

  • 传感器与执行器
  • 本地处理与存储
  • 网络与互联网连接
  • 云处理

根据图 1-1,我们注意到 传感器与执行器 位于层级结构的底部,因为它们直接与环境进行通信。在层级结构的上方是本地处理和存储设备,也称为 边缘设备。这些设备是像树莓派这样的计算机,能够与外设交换信息,并具备基本的计算能力,从而对从传感器接收到的数据进行预处理。在更高层级上,边缘设备可以连接到路由器等网络设备,并接入互联网。最后,在层级结构的顶部是 云,来自大量边缘设备的海量数据在此存储,并借助机器学习和人工智能(AI),可用于做出重要决策,以及对未来系统和人类行为进行复杂分析或预测。

示意图0

工业物联网系统

多个行业有望成为物联网的最大受益者。在这种情况下,我们涉及的是生产线和装配线、油井、光伏电站、风力发电机等。尽管这些系统具有明确的目的和行为,生产者仍在不断寻找提高效率并降低运营成本的方法。正因如此,能够根据环境或其他第三方参数进行自我分析、自适应和优化的系统对大多数工业企业具有吸引力。

到目前为止,我们已经探讨了物联网系统的通用特性和架构。虽然这些特性同样适用于工业物联网平台,但必须认识到工业系统具有特定的特性,需要予以考虑:

  • 环境条件 – 构建自主工业机器的主要原因之一是,在许多情况下,工厂中的工作条件对人类不利,因为人类可能会接触到化学物质、高温或极端湿度,从而导致长期健康问题。

  • 成本 – 所有公司的目标都是尽可能实现经济高效,因此在生产或装配线中引入新系统或设备时,运营成本是一个重要的决策因素。

  • 停机时间 – 工厂中进行的活动通常是不间断的,除了在进行维护时有特定的、有限的时间段。当然,也存在系统可能故障等例外情况,但此时任何停机时间都可能导致严重的财务损失。

基于这些特性,任何在工业领域实施的物联网解决方案都必须满足以下需求:

  • 鲁棒性 – 任何工业产品都必须适应其将要部署的环境。它需要能够承受恶劣工作环境,这就是为什么大多数为工业应用设计的设备都是加固的。

  • 稳定性 – 设备出现异常行为或意外故障会导致停机时间;许多工业设备需要连续运行(有时接近其技术极限),且可能持续较长时间。

  • 实时性 – 部署在工厂中的某些机器需要对环境中的触发或事件做出快速响应。响应时间对于确保准确的读取和结果以及系统资源的整体同步至关重要。

摩根士丹利和《自动化世界》杂志在2015年进行的一项调查指出,采用工业物联网(IIoT)的主要动机是希望提高运行效率,其次是提高生产率。6

提高流程效率和生产率的首要步骤之一是分析其当前状态并寻找改进方法。这一需求解释了物联网技术在工业市场中的广泛应用。物联网系统的主要特点是利用传感器收集环境信息,使其适用于提高生产率和降低成本。除了物联网的大数据与分析特性之外,对工业设备进行定期监控

使用传感器可以提供比人类执行的测量更准确的数据。目标是实现对机器性能下降的早期检测,并帮助防止意外故障,从而降低与维护和停机时间相关的成本。

提高工业流程运行效率的历史需求促使开发出多种监控与控制解决方案,这些方案是当前工业物联网平台的前身。

关于SCADA

从历史上看,工业物联网并不是改进和现代化工业基础设施的首次尝试。

数据采集与监控系统(SCADA)是一种于20世纪50年代开发的工业控制系统。该系统旨在集成到工厂的基础设施中,实现对工业操作的监控与控制。SCADA已广泛应用于能源、制造业、石油和天然气、交通、废物管理、食品等多个行业。如今,SCADA系统仍被广泛用于管理交通流量和调控交通信号灯。随着时间推移,SCADA系统经历了四代技术代际的持续改进:最初的单体结构、分布式和网络化阶段,最终演进为现代的工业物联网系统。7

SCADA系统使用传感器来获取工业机器的温度、湿度或振动等数据,并通过图表和其他视觉元素在用户界面中显示这些信息。另一方面,该系统还连接到阀门、电机、泵及其他控制机制,可以通过同一用户界面进行管理,而无需对工业机器进行直接的人为干预。此外,工厂员工可以设计例程,使系统能够自动响应环境变化。例如,我们可以

编程使机器在某些系统参数(例如温度)达到被视为临界水平时关闭。

SCADA 还可以部署在大型互联工业系统中,这引出了一个问题: SCADA与现代工业物联网解决方案有何不同?

尽管SCADA实现了对工业平台的集中监控与控制,但它缺乏物联网系统特有的智能功能;更准确地说,它缺少物联网技术栈中的云组件。

这反过来限制了系统只能做出简单的本地决策。更糟糕的是,从历史上看,这些决策通常由人工操作员完成,从而引入了出错的可能性。正因如此,许多工业物联网平台的生产商决定扩展SCADA基础设施,引入机器学习和人工智能能力,并将人工操作员从流程中移除。

作为二十世纪的两次重大事件,三哩岛和切尔诺贝利事故也涉及人为操作错误,人们希望人工智能能力能够消除或至少大幅降低此类破坏性事件的未来风险。

此外,SCADA最显著的缺点之一是安全性,更准确地说是缺乏安全性。由于它最初设计时平台并未连接到任何外部系统,因此安全漏洞几乎不可能发生。如今,SCADA依赖于通过隐蔽性实现安全的机制(即设计和实现的保密性),而最近发现的诸如幽灵和熔毁之类的漏洞证明这种机制是低效的。一个如今臭名昭著的安全漏洞案例是2010年针对伊朗工业设施的震网攻击,攻击者成功登录到SCADA数据库并窃取了设计和控制文件。8另一个更近期但不那么引人注目却同样重要的例子是大城市的交通系统的黑客攻击。9

从原型到工业系统

构建物联网产品时的第一步是进行原型设计,而我们可以利用物联网在工程、创客和爱好者社区中的流行程度。目前有大量的物联网书籍、杂志和活动面向自己动手(DIY)群体,简单的在线搜索即可找到成千上万的教程,介绍如何构建智能照明系统或如何使吸尘器变得智能。然而,一旦概念验证完成并开始运行,在设备真正能够销售甚至部署到工业环境之前,还需要考虑一些额外的因素:

  • 稳定性 – 确保系统运行过程中没有意外中断非常重要,如果发生错误,设备应能够在无需外部干预的情况下自行恢复。虽然在原型阶段,测试阶段出现一些错误或崩溃是可以接受的,但对于商业和工业设备而言,产品一旦停止运行,可能会给客户造成巨大损失,同时也可能导致你失去客户。在进入大规模生产之前,必须对设备进行彻底测试,并考虑所有可能的使用场景。

  • 认证 – 产品要在市场上销售,必须具备精确规格并通过质量验证,这一过程称为认证。设备通过质量测试后,将获得在特定区域使用的认证。这是因为不同国家有不同的需求(例如美国的联邦通信委员会FCC、欧洲经济区的CE标志等)。因此,在您构建原型后,需要确保其能耗不会过高,

进行具有指定不确定度的精确读数,不会干扰环境中其他(尤其是无线)设备,不会向环境中释放化学物质,且无爆炸或伤害人类的风险。

  • 支持和保修 – 尽管您已经对设备进行了测试,设备崩溃的风险极低,但风险仍然存在。因此,您需要寻找方法来为已部署的系统提供支持。这并非易事,因为您需要设法远程诊断产品,并在可能的情况下进行远程修复。这是必要的,因为将设备寄回维修的成本很高,而且如果设备是智能冰箱,则很难要求客户将其寄回,因此如果无法远程修复产品,您将不得不派遣技术人员前往现场处理。

  • 更新 – 一旦解决方案交付给客户,您就需要为新功能和安全要求提供软件更新。您需要向客户保证,他们购买的产品在一定时间内能够正常运行,同时也意味着不会暴露于新的安全漏洞中。必须具备远程推送更新的能力,并确保更新过程中不会出现故障,也不会有导致设备变砖的风险。

  • 耐用性 – 在工业设备方面,您需要确保它们能够长时间承受恶劣工作环境。这意味着您使用的组件必须具有更强的抗性,最终使整个设备得到加固,以免直接暴露在环境中。

  • 安全与安保 – 这是任何物联网系统中最重要的方面之一。商业和工业物联网平台都会收集和处理敏感数据,并控制精密外设。在这种情况下,一旦发生安全漏洞,用户将面临巨大风险。此外,在涉及工业设备时,成本和风险更高(例如,装配线停止运行5分钟就可能导致数百万美元的损失,机密工业数据可能被窃取)。因此,在部署物联网系统到生产环境之前,必须充分考虑所有组件,以及每个组件可能被恶意操控的方式。尽管设计出绝对安全的系统是不可能的,但至关重要的是实施多种多样的安全机制,使得恶意人员极难获得系统的控制权。

特定的工业物联网特征

尽管工业物联网是物联网的延伸,因此其大部分基本概念源自物联网,但在商业和工业环境中仍有一些技术是专门开发的:

  • 数字孪生10 是物理系统的数字副本,其目的是对物理系统进行实时性模拟、优化和测试。一个典型的例子是数字孪生在智能建筑中的应用。11

  • 射频识别(RFID)12 利用电磁场自动识别和跟踪附着在物理对象上或植入动物(牲畜和宠物)体内的电子标签。射频识别标签使得高效识别和监控物联网网络中的事物成为可能。

  • 边缘智能13 指的是系统在本地环境中从传感器收集、处理数据并做出决策的能力,而无需将数据发送到云。该技术的关键在于通过避免不必要的云通信,降低延迟、成本和安全风险,从而提高系统的效率。

  • 智能(或预测性)维护14 是指通过技术手段对在役设备进行监控,以预测何时应执行维护操作。该技术的目标是提高生产率(同时促进“准时制生产”),并降低与设备停机时间相关的成本。

  • 电子记录设备(ELD 或 E‐Log)15 是一种连接到其他机器上的电子硬件设备,用于记录其运行活动。典型的例子是安装在机动车辆上的记录设备,用于记录驾驶时间。更广泛地说,数字记录设备能够提供关于任何系统的实时监控和诊断信息。

边缘计算

边缘计算是一种物联网范式,其中主要的数据处理和决策在物联网技术栈的第二层进行。虽然这并未完全排除物联网解决方案中的云组件,但边缘计算模型旨在利用树莓派(或其他边缘设备)等设备的处理和存储能力,减轻云在低效操作上的负担。

物联网革命初期开发的大多数物联网解决方案曾完全依赖云处理和存储能力。其常规工作原理是:从传感器收集数据,发送到云,由云生成所有决策,并将必要的操作指令传回执行器。在这种情况下,云被大量冗余数据和处理任务所淹没。由于外部数据暴露,也引发了安全性和隐私方面的担忧。

边缘计算原则提出的解决方案是在收集传感器读数的设备上进行基本的数据处理,甚至根据获取的信息做出本地决策。在这种情况下,边缘设备将过滤读数,并仅向云发送相关值。此外,云将仅用于需要强大计算资源(如机器学习和人工智能)的处理任务。

为了更好地理解边缘计算的优势,让我们以风力涡轮机控制解决方案为例。该系统可以测量风速,并相应地改变涡轮机转速。如果没有边缘计算,该解决方案将每秒测量一次风速,并将(大部分相同)的读数发送到云,导致大量冗余数据被传输和存储。随后,当读数发生变化时,云会发送命令来调整涡轮机旋转速度。在边缘计算模式下,读数存储在边缘设备上,只有变化的数据才会被发送到云,显著减少了传输的数据量。此外,边缘设备具备处理能力,能够做出基本决策,并命令风力涡轮机改变其转速。另一方面,云可用于收集来自不同地点多个涡轮机的相关数据,并通过使用高级算法,预测风暴甚至龙卷风等自然现象,从而优化涡轮机的长期运行。

在当前传感器和连接设备呈指数级增长,导致数据量巨大且需要大量处理的背景下,边缘计算正变得越来越受欢迎,大多数新的物联网平台都依赖于这一模式。

树莓派作为边缘设备

截至2020年,树莓派是DIY和创客社区中用于构建物联网解决方案最常用的边缘设备。其价格实惠和易用性使其极为流行。树莓派的计算和存储能力使人们能够在他们构建的物联网项目中将其用作边缘设备。

对于爱好者来说,树莓派主要有两种型号:完整型号和树莓派Zero型号。虽然完整型号具备现代计算机的全部基本功能(无线网络、蓝牙低功耗、以太网端口、HDMI端口、USB端口、立体声输出插孔端口等),但树莓派Zero系列

设计为连接器更少、功能更少且价格更低廉的替代方案。此外,两款树莓派型号均可通过引脚直接连接到传感器与执行器。这些设备支持基本的通用输入输出、SPI、集成电路总线、串行连接以及其他更复杂的类型。

除了我们提到的设备外,树莓派基金会还发布了一款专为工业应用设计的计算模块。树莓派计算模块系列所包含的设备具有与之前型号相同的核心(处理器、内存等),但外形尺寸不同。这些核心模块尺寸更小,专为集成到定制系统中而设计,因此支持更多的通用输入输出和其他用于连接外部模块的接口。

图 1-2 描述了树莓派计算模块 3+。该设备具有以下主要规格:

  • 博通,Cortex‐A53 64位片上系统处理器,运行频率为1.2吉赫。
  • 1GB LPDDR2 SDRAM 内存。
  • 根据型号的不同,它可能具有8GB/16GB/32GB的eMMC闪存。
  • 板载尺寸:67.6 × 31.1 × 3.7 mm。

示意图1

鉴于其特性以及在其基础上构建的众多项目和产品,将树莓派仅仅称为原型设计设备是一种低估。树莓派已广泛集成到商业和工业机器中。然而,由于该设备仍然缺少一些对工业系统非常重要的特性,因此需要借助外部硬件和软件来使其适用于工业环境。

树莓派在工业中的应用

任何工业系统的一个基本特征是需要实时响应特定触发。这意味着机器必须在明确定义的最大时间内对环境参数变化或事件做出反应。因此,实时系统在指令执行的时间上具有严格的限制。以装配线为例,每个机器人必须与其同伴完全同步,并在确定的时间内完成其操作。同样,系统的反应时间必须低于某个规定值(通常以毫秒表示),才能发挥作用。为了满足这些需求,实时系统通常只运行一个软件,以确保每行代码的执行时间可预测。

如前所述,工业设备需要坚固耐用,并能够在恶劣环境(强烈振动、高温、湿度和高浓度有害化学物质)下长时间(数年)不间断运行。当发生故障时,物联网设备需要能够自动重启和恢复,或在发生灾难性故障时,将诊断信息发送到主系统。因此,大多数工业系统都是以可编程逻辑控制器(PLC)为核心构建的。

可编程逻辑控制器(PLC) 是坚固的工业计算机,设计用于集成到制造业或装配线、机器人设备等系统中。它们是专门用于控制特定工业流程的计算机。其处理单元通常为微控制器,可运行固件并支持实时操作。此外,该设备配备坚固的连接器,具有防篡改和防短路能力。可编程逻辑控制器通常采用模块化外壳结构,便于集成到现有基础设施中,并提供简单的控制和监控界面,常规包括显示屏、状态LED、开关和按钮。图 1-3 展示了一个可编程逻辑控制器设备的示例。

如今,存在与树莓派兼容的PLC,使得树莓派能够集成到工业产品中。这样一来,希望构建以树莓派为核心组件的系统的公司,无需在开发定制硬件或加固硬件设备上投入资源。

这些设备采用坚固外壳,可完全包裹树莓派。它们连接到设备的引脚,并提供工业级连接器和外设,例如LED灯或开关。

另一个使树莓派不适合直接在工业机器内部使用的原因是电源。树莓派需要连接到5V直流,而工业系统通常使用更高电压。因此,硬件扩展也提供了支持高达30–40V直流的电源插座,因为树莓派会从扩展板获取电流。

作为原始树莓派的工业扩展设备示例有Monarco HAT,18 Iono Pi,19 Revolution Pi,20或UniPi。21

示意图2

物联网通信协议

孤立地工作、收集数据并作用于环境的电子设备不被视为现代物联网设备。与其他物联网设备和云进行通信的能力对于构建物联网所承诺的互联世界至关重要。

在异构设备需要相互通信的背景下,物联网依赖于使外设和设备能够通信的协议。因此,人们非常重视物联网系统中各组件之间的数据传输方式。

接下来,我们将探讨当前物联网系统中一些最流行的通信协议。

低层数据传输协议

无论是板内(外设到设备)还是板间(设备到设备)通信,物联网系统都需要可靠且高效的数据传输方式。设备之间数据交换的首要方面之一是传输介质,我们有两种选择:有线或无线连接。

有线连接的主要优势在于数据传输速度快、可靠且安全。然而,如果系统覆盖的监控区域较大,则需要铺设长距离的线缆,容易造成损坏和故障。这时可能就需要无线解决方案。

许多现代物联网设备都支持无线通信。遗憾的是,其传输速度和可靠性不如有线连接。但无线解决方案适用于覆盖大面积的系统:如智能建筑解决方案、需要监控农作物和农场的农业领域,或远程油气开采厂。

一些商用设备中最流行的板内有线协议包括:

  • 通用异步收发器(UART) ——该协议使两个设备能够使用两条数据传输线进行通信:发送(TX)和接收(RX)。每个设备在一条线上发送数据流,并在另一条线上读取传入的数据位。数据以由开始位和结束位界定的数据包形式发送。两个设备之间没有同步机制。当一个设备检测到开始序列时,便开始读取数据,直到检测到结束序列为止。

  • 集成电路间总线(I2C 或 I2C) ——这种传输机制也使用两条通信线路:SDA(串行数据)和 SCL(串行时钟)。SDA 线用于实际的数据传输,而另一条仅用于时钟信号。该协议采用总线拓扑结构,并使用主从架构,只有主设备才能发起与从设备的通信。当将传感器连接到树莓派时,该设备充当主设备,外设则为从设备。此外,与 UART 不同,此协议支持多个主设备连接到多个从设备。当主设备发起数据传输时,它还会指定其希望通信的从设备。该信息被发送到所有外设,以便只有被寻址的从设备才能准备发送和接收数据。

  • 串行外设接口(SPI) ——这种传输机制至少使用三条通信线路:主出从入(MOSI)、主入从出(MISO)、时钟(SCLK)。它采用总线拓扑结构,并且使用主从架构,允许多个从设备连接到单个主设备。

在这种情况下,SPI为每个从设备使用一条额外的线,即从设备选择/芯片选择(SS/CS)。当主设备想要与其其中一个从设备通信时,该从设备在SS/CS线上接收到低电平信号并被激活。所有其他从设备在SS/CS线上接收到高电平,从而进入非活动状态(行为表现如同未连接到通信线路上)。实际数据在两条线上传输。一条线用于主设备发送数据,另一条线用于从设备发送数据。SCLK线用于同步,而仅连接到一个从设备的SS线使主设备能够启动与特定从设备的通信。SPI 的主要优点是数据连续传输,而不是以数据包形式传输,并且支持更高的传输速率。此外,从设备和主设备可以同时发送数据。

在工业系统中,通信通常通过以太网连接进行,从而使架构具有可扩展性和模块化。对于工业领域,基于以太网设计的协议需要确保可靠性和快速的传输速率。两种最常用的工业板间协议是:

  • Ethernet/IP – 目前它是最常用的工业通信协议之一。根据通信目的,数据可以通过UDP(来自传感器或控制执行器的实时关键数据,允许部分数据丢失)或TCP(应用参数或其他非实时信息,不允许数据丢失)进行传输。通信可以通过多种机制实现,例如轮询、触发、直接单播或组播连接。

  • Profinet – Profinet 是一种工业协议,旨在实现工业外设与控制系统之间的快速通信。它采用先进的同步机制,使其高效并支持实时数据传输。数据包被分配优先级以实现不同带宽大小的分配。

正如我们之前提到的,一些物联网系统使用无线传感器更容易实现。因此,已经开发出多种专门为边缘设备设计的无线协议。这些协议旨在利用有限的资源确保可靠且快速的数据传输。商业和工业物联网系统中使用的一些无线协议包括:

  • 蓝牙低功耗(BLE) ——BLE 是一种使用射频进行数据传输的协议。它最初为智能手机开发,但由于其特性,目前已 被各种传感器支持并集成到边缘设备中。尽管名称相似,BLE 与经典蓝牙不同。蓝牙低功耗的设计旨在使用低能耗。因此,该协议支持在特定时间间隔传输小数据包。此外,通过 BLE 发送的信息无法覆盖远距离。这些特性与经典蓝牙形成对比,后者在能耗方面未作平衡。

  • LoRa – 它是一种用于长距离通信的协议。LoRa规范指出,数据可以在约10公里的距离上传输。此外,LoRa 设计为能耗极低,使电池供电设备能够长时间运行

多年无需更换电池。由于这些特性,LoRa 被广泛应用于需要覆盖大面积的农业解决方案中。

  • Zigbee – Zigbee 专为在短距离内以极低能耗进行数据传输而设计。由于其传输速率约为 250千比特/秒,该协议并不适用于需要设备间高速通信的系统。Zigbee 特别为家庭自动化系统构建,覆盖范围有限,且通信速度并非关键因素。
应用层协议

所有前述协议都处理信息如何在设备之间传输,并专注于确保数据完整性和传输效率。传输规范由用于传输的硬件设备实现。大部分软件逻辑在微控制器的低层库中或高层系统的操作系统中执行。

当下层协议确保数据从一个设备传输到另一个设备时,运行在这些设备上的应用程序必须能够理解它们发送或接收的数据。由于多个应用程序需要交换数据,因此也定义了应用层协议。可以将它们视为应用程序为理解所交换数据而强制执行的一组标准和规则。这些协议基于并运行在前述的低层通信协议之上。

在应用程序层面,我们可以选择多种协议来支持快速高效的通信,这些协议通常基于小尺寸的数据包(因为传感器读数通常较短)。

用于非工业设备间通信的最常用协议是

  • MQ遥测传输(MQTT) ——MQTT是一种基于 TCP/IP、采用发布‐订阅模式的轻量级协议。发布者根据不同主题广播消息,而订阅者则接收与其订阅主题相关的所有消息。该协议旨在实现受限设备在有限带宽网络中的通信。MQTT数据包尺寸较小:最大消息负载为 256MB。MQTT为数据传输提供了三种不同的服务质量 (QoS)级别。其中,级别1采用发送即忘原则,而级别 2和3则确保每个数据包都能到达目的地。

  • 受限应用协议(CoAP) ——CoAP 是一种专为能力受限的设备以及不可靠、受限网络设计的协议。CoAP 的构建方式与 HTTP 类似,采用相同的请求方法:GET、 POST、PUT 等。另一方面,CoAP 数据包的头部格式与 HTTP 不同,因此其数据包要小得多。

对于工业机器,最常见的通信是使用以下技术实现的:

  • Modbus – 它是一种应用层协议,可以基于多种传输层实现,例如串行、以太网或无线网络。该协议于1979年开发,目前是最常用的通信技术之一。由于其多功能性,它现已成为工业领域中应用最广泛的通信协议之一

该技术在工业领域广泛应用,用于设备间以及外设与设备间的通信。Modbus基于客户端‐服务器模式。在串行连接中,某个特定设备被指定为主角色,而在以太网中,任何设备都可以发起通信。

Modbus协议有多个版本,每个版本具有不同的数据包格式。

  • OPC统一架构(OPC‐UA) ——它建立在TCP/IP协议栈之上,并基于面向服务的架构。在这种情况下,实现 OPC‐UA协议的设备会公开其他设备可以远程调用的函数和数据。

与物联网系统接口

在构建个人、商业或工业物联网产品时,通常需要一个交互式用户界面。根据产品的用途及其使用方式,接口机制可能会有很大差异。例如,对于智能咖啡机,系统需要配备友好的显示屏,供用户进行交互;而对于工业监控解决方案,其接口机制则需要简洁、清晰且易于使用。

此外,如果您所设计的解决方案旨在集成到更大的平台中,则还需要支持与外部系统的接口机制(例如机器对机器通信)。

用户界面

当提供用户可用来控制您所提供解决方案的界面时,重点在于用户体验,具体取决于您开发的产品类型,有多种接口选项可供选择。

对于为普通用户设计的商业产品,例如智能吸尘器或智能光照系统,提供直观的控制界面非常重要。这就是为什么大多数此类设备都配备了触摸屏。

触摸屏

触摸屏通常直接连接到边缘设备,并显示一个界面,用户可以通过该界面对其进行控制和监控。触摸屏的行为类似于您连接到计算机以显示信息的普通屏幕。它还可以充当常规鼠标,传输用户的点击、长按、拖动等事件。一些触摸显示屏具有更复杂的行为,需要安装驱动程序,以便设备能够识别它们。在这种情况下,触摸事件会以不同的方式传输到设备。

在这两种情况下,设备都需要具备运行图形用户界面(GUI)的能力。为此,您必须确保设备上运行有显示服务器。显示服务器是一种应用程序,负责从键盘或鼠标等输入设备收集事件,将其发送到操作系统进行处理,最后在显示屏上显示相应的输出。一些最常用的显示服务器包括 X11、Wayland 或 Mir。

Web应用程序

另一种更通用的用户界面选项是提供一个网络平台,用户可以从他们的计算机、平板电脑或手机访问该平台。

在这种情况下,边缘设备向网络服务器发送和检索相关信息。用户可以通过浏览器访问该服务,查看来自物联网设备的数据,并执行操作。这些操作随后由服务器传输到边缘设备,从而控制产品。

这种情况下,主要优势是用户可以远程控制和监控物联网设备。然而,这也使得系统功能依赖于互联网或本地网络连接。如果连接丢失,边缘设备与网络服务器之间的信息将无法交换。不幸的是,这种架构也会产生多种安全风险。所有从边缘设备传输的敏感数据都可能以恶意方式被截获或篡改。因此,有人可能会以危险的方式操纵设备,或获取敏感信息。

为了防止所有这些风险,一些物联网产品使用边缘设备来托管网络服务器,仅当用户连接到同一网络时才能访问。虽然这种方法降低了设备的易用性,但也使其独立于互联网连接,并显著减少了部分安全风险。

物理控制

对于工业平台而言,控制系统需要具备可访问性和可靠性,以换取较不吸引人的界面。

尽管许多工业系统提供用于监控和控制的Web界面,但它们还提供对设备的物理控制。在这种情况下,产品配备有按钮和开关,可实现对电机和阀门等关键组件的直接控制。由于这些机制直接连接到机器,因此能够确保快速控制。此外,还使用简单的显示屏或LED灯来指示设备的当前状态。

平台接口

许多物联网解决方案旨在实现模块化,并且易于集成到大型基础设施中。因此,产品支持的功能可以在更大的解决方案内进行扩展和抽象。这样一来,需要扩展的平台必须提供一种与其交互的方式。主要有两种方法:库和REST API。

实现和提供基本常规功能最简单、经典的方法是将它们分组并封装为库。虽然这种方法在本地操作系统和任何复杂的软件包中都非常有效,但对于物联网等分布式环境而言,很难在设备之间分发这些库。这带来了大量的安装和维护开销,因此,依赖这种方法的现代解决方案非常少。

通过网络扩展库的一种可行方法是使用远程过程调用(RPC)。通过这种方式,边缘设备可以通过物联网网络可靠地调用位于不同机器上的函数。

REST API

如今构建的大多数软件平台都以软件即服务(SaaS)的形式提供。在这种情况下,平台会提供一个Web界面,用户可以通过该界面访问解决方案,但大多数平台还提供表述性状态转移(REST)API,以便能够集成到其他平台中。

在这种情况下,解决方案运行在云中,服务提供商负责所有的维护和更新。集成商或用户在平台上进行认证,并通过GET、POST、PUT等调用访问核心平台的资源。我们将平台暴露的调用称为其应用程序编程接口(API),如果这些调用是RESTful操作,则称之为REST API。

大多数情况下,REST API是使用Web资源构建的。资源通过其统一资源标识符(URI)进行识别,而请求和响应则使用HTTP(通常以 HTML、XML或JSON格式化),并且可以包含指向RESTful系统中新资源的超文本链接。

RESTful系统的主要优势在于,访问资源的用户无法直接访问底层软件平台,

因此,他们无需费心安装外部库或管理软件系统,可以专注于在现有平台上构建自己的解决方案。然而,如果提供商更改了其中的资源,用户也必须更新他们的解决方案。这就是为什么用户需要投入时间和精力,使其解决方案与最新变化保持同步。

物联网系统软件

到目前为止,我们已经了解到物联网系统依赖于各种设备,这些设备在彼此之间以及与用户之间交换信息。实现设备智能行为的一个重要因素是运行在这些设备上的软件。

因此,他们无需费心安装外部库或管理软件系统,可以专注于在现有平台上构建自己的解决方案。然而,如果提供商更改了其中的资源,用户也必须更新他们的解决方案。这就是为什么用户需要投入时间和精力,使其解决方案与最新变化保持同步。

物联网系统软件

到目前为止,我们已经了解到物联网系统依赖于各种设备,这些设备在彼此之间以及与用户之间交换信息。实现设备智能行为的一个重要因素是运行在这些设备上的软件。

软件特性

商业和工业物联网产品的许多特征体现在设备运行的应用程序中。这些应用程序需要经过精心设计,以满足任何物联网系统的常规需求,并着重强调可靠性和安全性。

根据物联网解决方案的主要特性,我们可以确定在构建运行于树莓派或其他边缘设备上的应用程序时需要考虑的以下几个方面:

  • 资源消耗 ——如果我们还没有足够强调这一点,那么我们再次提及:集成到物联网解决方案中的设备能力有限,通常依赖于受限的能源,例如电池。正因如此,确保在设备上运行的软件不浪费其资源显得尤为重要。在这方面,我们应该确保只进行最少必需的计算次数

以实现预期的结果,并确保中央处理器执行的任何操作都有明确的目的,并尽可能高效地完成。

  • 实时性 – 对于工业解决方案而言,实时响应至关重要。这意味着在某些情况下,我们构建的软件必须尽可能快速地处理输入数据,并对触发事件做出高效响应。

  • 稳定性 – 为了确保我们部署的系统坚固且稳定,必须确保在系统上运行的软件能够处理所有异常和边界情况,并且在任何情况下都不会崩溃。因此,测试阶段至关重要。在此阶段,需要全面复现所有事件,并观察软件在各种可能条件下的行为表现。软件和硬件看门狗定时器用于自动重置或临时关闭在偏远地区无响应的设备。通过关闭系统,我们还可以缓解某些DDoS攻击的影响。

  • 模块化 – 由于异质性是物联网系统的一个重要特征,因此应用程序需要基于易于扩展和修改的组件进行开发。我们需要能够轻松地将新的硬件或软件组件集成到原始系统中,同时保持其主要特性。

  • 可扩展性 – 我们需要牢记,物联网系统需要能够运行并处理数千个同时工作的传感器和设备,这些设备之间相互交换数据。

  • 安全性 – 商业和工业物联网解决方案均处理敏感数据和控制机制。因此,在构建任何物联网应用程序时,安全性至关重要。

软件开发

开发物联网系统的应用程序与构建其他软件产品(如桌面、移动或 Web应用程序)不同,这主要是由于物联网系统的组件和特定用途所致。

首先,控制物联网系统的软件在很大程度上取决于系统的硬件特性。对于智能咖啡机,我们不太关注功耗;而对于远程农场监控方案,则致力于减少处理以延长电池寿命。类似地,在构建工业系统时,最关键的是平台的响应能力;而在消费类应用中,我们可能会投入更多资源来开发友好的用户体验,从而牺牲较快的响应时间。这会影响我们开发应用程序的方式,因为我们调用的每条指令都会对电池寿命或响应时间产生影响。大多数情况下,大多数物联网系统必须在各种关键性能指标之间进行权衡。

其次,在许多此类系统中,用户界面可能并不存在。大多数情况下,应用程序是为没有键盘、鼠标或屏幕的设备(如树莓派或类似设备)开发的。在这种情况下,设备访问与控制是开发者必须解决的重要问题。

考虑到这些挑战和特点,私营公司和开源社区已经开发出专门用于物联网开发和原型设计的开发工具。这些工具既包括先进的编程环境,也包含针对物联网应用的特定编程语言。

编程语言

在讨论嵌入式设备编程的软件开发时,大多数人会想到C语言作为主要的编程语言。然而,根据您想要构建的物联网应用类型,还有许多其他流行的选项可供选择。

首先,任何完整的商业/工业物联网系统都将由各种传感器与执行器组成,这些设备与中央单元进行通信。这些外设中的许多是实现通信协议的复杂设备。这类外设通常包含需要编程的微控制器。目前,C语言是最适合用于此类设备的编程语言。尽管也存在一些轻量级解释器,可支持使用JavaScript或Python进行微控制器编程(JerryScript22和MicroPython23),但大多数此类设备仅支持C语言编程。

其次,物联网系统中使用的本地处理和存储设备(如树莓派或类似设备)需要被编程以实现一方面与外设通信,另一方面与云通信。因此,对这些设备的编程需要处理网络连接、文件操作以及其他类似操作。通常,在这些应用程序中使用C语言会带来较长的开发时间,并且更容易出现开发错误。在这种情况下,Python或JavaScript等语言被广泛使用。此外还有其他选择,其中Java语言和C++尤为流行。24

此外,对于还连接到显示屏的边缘设备,我们需要使用支持构建用户界面的编程语言。在这种情况下,最流行的选择是使用Java语言进行开发,或者

集成用户界面(UI)库的Python应用程序,或在设备上运行的Web应用程序。在这种情况下,会使用HTML、CSS和JavaScript等技术。

除了传统的编程语言,物联网系统还可以使用可视化编程环境进行设计和建模。这种方法特别适用于工业系统,在这些系统中,我们将应用程序设计为传输和处理数据的复杂管道。

工业物联网系统中最流行的可视化编程界面是实验室虚拟仪器工程工作台(LabVIEW)。25这是由美国国家仪器公司设计的工业开发环境。另一种广泛用于工业和原型设计的可视化编程环境是 Node‐RED,26由IBM开发。这两个平台都支持创建流程图,其中每个元素都是一个函数,从前一个连接接收数据,处理后将结果继续传递下去。

对于还需要用户界面的工业应用,Crank27或 Qt28等系统通过拖放按钮、标签、框等元素,可实现用户界面屏幕的快速开发。

开发环境

物联网应用开发可分为两个主要阶段:原型设计和规模化生产,每个阶段都有特定的挑战。因此,我们可以使用各种开发环境,每种环境都针对其中一个阶段进行了优化。

物联网原型开发应该是一个快速的过程。在这种情况下,主要挑战在于复杂的硬件设置过程。例如,在某些情况下

我们旨在构建的应用程序应在树莓派上运行,因此需要配置设备并找到一种将应用程序上传到该设备的方法。我们可以使用屏幕和键盘来编程那些运行带有集成用户界面的完整操作系统的设备。然而,在大多数情况下,设备是被封装好的,并连接到各种传感器与执行器。在这种情况下,我们需要一种远程编程的方式。

为此,许多集成开发环境(IDEs)支持各种插件,允许您建立与设备的连接并远程对其进行编程。然而,也有一些集成开发环境专门设计用于在无需直接连接设备的情况下实现嵌入式设备的编程。两个例子是 JetBrains29和 Wyliodrin STUDIO。30

由于Wyliodrin STUDIO是开源的,不需要账户注册,也没有任何成本,因此我们将使用该集成开发环境来构建后续章节中的应用程序。

从物联网原型开发转向大规模生产面临诸多不同的挑战。首先,一旦为物联网平台开发了应用程序,就需要将其部署到所有硬件上(包括当前生产和已投产的设备)。通常情况下,这是一个复杂的过程,需要对所有设备烧录相同的软件。

另一个重要方面是推送应用程序更新。与其他软件应用程序类似,物联网系统需要定期更新,以添加新功能和出于安全原因。由于系统很少带有用户界面,因此更新需要远程进行,并确保过程中不会出现故障。

然而,在涉及任何设备时,软件故障都是不可避免的。虽然我们力求减少故障数量,但无法完全防止它们的发生。诊断没有用户界面的生产设备是另一项挑战。这需要一种专门的方法来远程监控和控制设备。

考虑到这些挑战,各公司已开发出用于应对物联网软件开发、管理和部署的解决方案。这些解决方案使生产者能够远程在设备上部署软件,同时能够实时监控和控制已部署的产品。

此类物联网工业开发与管理解决方案的示例包括IoTWay,31 Balena,32或Mender。33这些应用程序使用容器技术来打包应用程序,并将其发布到大量物联网设备上。它们还使开发者能够监控和诊断设备,并在必要时发布应用程序更新。

Wyliodrin STUDIO

在本书中,我们将指导您进行原型应用开发,这些应用可轻松转变为商业或工业物联网系统。因此,我们需要一个专为物联网原型开发设计的编程环境。这就是我们选择使用 Wyliodrin STUDIO 的原因。

Wyliodrin STUDIO 是一个开源、基于网页的物联网开发IDE。该平台有两种版本:可安装在任何平台上的本地版本和浏览器版本。该 IDE兼容多种嵌入式设备(树莓派、NXP快速物联网原型套件、 UDOO和BeagleBone Black),并使开发者能够远程控制和部署设备上的应用程序。应用程序可以用Python或JavaScript编写,同时也可创建和执行bash脚本。此外,还支持一种基于Google Blockly的可视化编程语言。

在第2章中,我们将全面介绍Wyliodrin STUDIO以及如何使用它来为树莓派编程。

摘要

在本章中,我们概述了常规物联网系统,并将其描述为物联网技术栈。接着,我们阐述了原型设计、商业和工业解决方案之间的差异,重点强调了在工业规模上实施的解决方案所具有的特殊特征。对于原型设计用途而言,可扩展性和可靠性并非需要考虑的关键因素;但对于商业尤其是工业解决方案,扩展本身就是一个问题。

由于本书接下来的章节将重点介绍如何使用树莓派构建商业和工业系统,我们回顾了一些硬件和软件解决方案,这些方案使我们能够将树莓派集成到工业系统中。本引言章节中介绍的另一个方面是传感器与设备之间以及设备与设备之间用于数据传输的主要通信协议。在接下来的章节中,我们将在应用程序中广泛使用这些协议。随后,我们讨论了用户如何与我们的物联网应用进行交互的方法,或者更进一步地说,如何构建可集成到更大系统中的应用程序。

最后,我们还提到了在为物联网设备构建应用程序时面临的一些挑战,并介绍了Wyliodrin STUDIO平台,该平台将在接下来的章节中帮助我们解决这些问题。

在接下来的章节中,我们将通过将所介绍的技术整合到实际应用中,以更详细和具体的方式来探讨所有这些方面。

延伸阅读

本章的目的是概述物联网系统,而不深入探讨任何特定技术的细节。因此,本节的目的是为本章讨论的大多数技术以及本书后续将使用的技术提供延伸阅读方向。

多本概述物联网基础知识的书籍受到了读者的广泛好评。对于涵盖物联网术语、原理和解决方案的技术性描述,我们推荐蒂莫西·周、34马切伊·克兰茨、35以及佩里·利的书籍。36对于物联网解决方案的商业/业务角度,我们推荐布鲁斯·辛克莱尔的著作。37对于对SCADA系统历史感兴趣的读者,我们推荐杰里·拉塞尔的相关描述。38我们还推荐一些提供物联网技术总体概述的视频资源,例如詹姆斯·惠特克主讲的哈佛大学 CS50课程、39本森·霍兰德关于物联网的TEDx演讲,40以及亚历山德鲁·拉多维奇的物联网导论讲座。41

此外,文献中有许多优秀的资源专注于物联网的某个特定方面。我们提供了若干阅读材料,并分别讨论了物联网的硬件、软件和通信协议。最后,我们以几个专门的物联网主题结束阅读列表。

本书中我们将使用的硬件工具是树莓派。除了树莓派基金会官方网站上的资源和教程42之外,我们还可以推荐肖恩·麦克马纳斯43和西蒙·蒙克撰写的以下书籍。44一些非常优秀的视频资源还包括sentdex对树莓派的介绍45或保罗·麦克沃特详尽的讲解。46

在本书中,开发软件组件时我们将主要使用JavaScript编程语言(Node.js)。更广泛地讲,为了复习网页编程概念,我们推荐朱莉·C·梅洛尼和詹妮弗·克尔宁的著作,47 Edureka的视频教程引言,48以及全栈Web开发的详细视频教程。49

对于Node.js的具体学习,我们推荐马里奥·卡西亚罗和卢西亚诺·马米诺的著作,50以及Free Code Camp的视频教程。51对于实用的Node.js代码片段,我们推荐《Node.js专业笔记》。52

在本章中,我们假定读者对网络概念和通信协议具有一般性了解。关于计算机网络的概述,可参考安德鲁·S·塔能鲍姆的优秀著作53以及 Geek’s Lesson的视频讲座。54对于工业技术,特别是,我们推荐大卫·黑恩斯的综合性书籍55以及安东尼奥·阿尔梅达和海梅·冈萨雷斯‐阿里恩特罗·贝尔西亚诺所著的物联网通信协议引言。56

专业的物联网主题包括斯拉瓦尼·巴塔查里亚关于物联网设备和网络安全的内容,57罗伯特·斯塔科维亚克及其合著者撰写的关于人工智能和大数据在物联网中的应用的书籍,58吴玉雷及其合著者撰写 的关于5G和物联网技术的书籍,59朱烈煌及其合著者撰写的关于区块链技术在物联网系统中应用的书籍。60

最后,我们还必须提到由最大的信息技术公司开发的大规模物联网管理系统:亚马逊的AWS IoT61 、谷歌的Google Cloud IoT62,以及微软的Azure IoT Hub63 。其他工业企业也开发了各自的平台:西门子的 MindSphere、思科的Kinetic和Jasper、IBM的Watson、通用电气的 Predix以及施耐德电气的EcoStruxure。尽管这些平台各自存在一些弱点,但现有解决方案的数量之多凸显了人们对物联网应用开发日益增长的兴趣。

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值