×

用于安全物联网的Azure Sphere和Azure云服务

消耗积分:0 | 格式:zip | 大小:2.25 MB | 2022-12-22

久醉不醒

分享资料个

描述

 

 

2019 年 10 月 5 日更新,添加桌面应用程序。

名为 Azure Sphere Desktop 的 .NET 应用程序是为消息显示和反馈控制而构建的,如下所示。请参阅第 6.6 节了解更多详细信息。

poYBAGOSeBOARlhIAACdsF5NAEM170.png
Azure 球体桌面
 

一、简介

随着物联网 (IoT) 的快速发展,越来越多的网络设备参与其中,为互联汽车 [1]、工业物联网 [2, 3]、互联医疗 [4, 5]、智能互联铺平道路从基础设施的角度来看城市 [6] 和智能家居 [7]。同时,面对来自网络攻击者的激进攻击,这些大型系统中对安全和隐私的考虑已成为一个不容忽视的巨大挑战[8]。目前,现有工作中主要有两个安全研究领域。第一个是资源受限物联网系统的安全方案和策略研究,第二个是物联网应用安全解决方案的设计和实现。

第一个的研究目前针对四个关键领域,包括访问控制方案、异常检测、安全模型和密钥管理,以实现高级别的安全性。首先,对于物联网中的访问控制方案,大量深入的研究工作致力于访问控制架构、用于保护通信通道的密钥类型、访问控制通道和访问控制逻辑 [9]。此外,这种访问控制方案广泛应用于植入式医疗设备[10]、体域网[11]、可再生能源智能电网[12]、智能家居[13]和工业网络系统[14]。其次,为了实现资源耗尽和未授权访问的自动识别,提出了异常检测,通常分为三种不同的方式,即无监督异常检测[15]、监督异常检测[16]和半监督异常检测[17]。第三,安全模型是创建可信赖和可互操作的物联网系统应注意的关键促成因素。从这个意义上讲,在实际物联网应用中,通常从感知、传输和应用层面考虑硬件安全、数据加密、安全路由、风险评估、入侵检测、反恶意软件解决方案、防火墙和信任管理等安全策略。设计 [18, 19]。最后,密钥管理非常重要,它涉及在轻量级、资源受限的物联网设备中创建、更新、传输和计算加密项目 [20]。

最近,对物联网解决方案的研究已经在不同层面考虑了安全性。[23] 总结了支持工业物联网的信息物理系统的安全挑战,强调了思科物联网框架下数据挖掘和大数据的安全性。[24] 中设计并实施了一个医疗保健监控框架,其中使用信号增强、水印和其他相关分析来避免身份盗用。文献[25]研究了身份验证、隐私加密和安全数据包转发,并在三层物联网架构下提出了几种策略。[26] 中概述了安全原则、安全挑战和建议的对策。[27] 中给出了有关物联网协议和应用程序的安全问题摘要,这是基于五层物联网框架。[28] 中提供了包括边缘节点、通信和边缘计算在内的三层漏洞和对策的完整列表。在某种程度上,这些研究已经实现了特定层或多层的安全和隐私目标。然而,据我们所知,真正的物联网解决方案仍然存在两个具有挑战性的问题。第一个是现有的解决方案很少考虑从设备到云端的全程安全。第二个是,由于开发成本和设备功能有限,目前低估了将高价值安全性纳入每个低成本(比 10 美元便宜得多)联网物联网设备的需求 [29, 30] . 受此事实的鼓舞,

为了解决这一具有挑战性的问题,Microsoft 发布了一种名为 Azure Sphere 的新型价格敏感应用程序平台,它将实时处理能力与安全的互联网连接操作系统 [31] 集成在一起。除了用于应用程序开发的 Azure Sphere MCU SDK 工具外,还包括用于安全云和 Web 连接的 Azure Sphere 安全服务。

Azure Sphere 的目标是使 IoT 设计人员能够将最高级别的安全性纳入每个具有网络连接的低成本 MCU 设备。基于在设备安全软件设计方面的丰富经验,微软将高度安全的联网设备的七个必要属性确定为基于硬件的信任根、小型可信计算基础、纵深防御、隔离、基于证书的身份验证、安全更新和故障报告 [32]。为了实现物联网生态系统中七个必要属性的目标,Azure Sphere MCU、Azure Sphere OS 和 Azure Sphere 安全服务被设计为在一个和谐的整体中协同工作以降低风险。Azure Sphere 的架构如图 1 所示。首先,Azure Sphere MCU 由多个 ARM Cortex 内核、网络连接子系统、多路复用 I/O 外围设备、集成 RAM 和闪存、硬件防火墙以及 Pluton 安全子系统组成,从硬件角度提供内置安全性。其次,基于 Linux 的自定义内核、安全监视器和托管应用程序容器的操作系统服务从软件角度添加了四层防御、深度安全环境。最后,与基于证书的身份验证、及时更新和故障报告相结合的 Azure Sphere 安全服务更新了安全性,以从服务的角度应对新出现的威胁 [33]。从硬件角度提供内置安全性。其次,基于 Linux 的自定义内核、安全监视器和托管应用程序容器的操作系统服务从软件角度添加了四层防御、深度安全环境。最后,与基于证书的身份验证、及时更新和故障报告相结合的 Azure Sphere 安全服务更新了安全性,以从服务的角度应对新出现的威胁 [33]。从硬件角度提供内置安全性。其次,基于 Linux 的自定义内核、安全监视器和托管应用程序容器的操作系统服务从软件角度添加了四层防御、深度安全环境。最后,与基于证书的身份验证、及时更新和故障报告相结合的 Azure Sphere 安全服务更新了安全性,以从服务的角度应对新出现的威胁 [33]。

poYBAGOSeBaAdfxaAABoF5e3NxE316.png
图 1.Azure Sphere 概述。
 

在芯片合作伙伴联发科的帮助下,首款通过 Azure Sphere 认证的 MCU MT3620 于 2017 年底发布 [34]。MT3620 的价格不到 8.65 美元,包括物理 MCU 芯片、芯片许可证、Azure Sphere 操作系统和 Azure Sphere 安全服务。MT3620包括ARM Cortex-A7应用处理器和ARM Cortex-M4F I/O子系统,分别为运行Azure Sphere OS和片上外设的实时控制需求而设计。除了高性能 ARM 内核之外,MT3620 还嵌入了 Pluton 安全子系统和板载 Wi-Fi 子系统,以处理安全启动、安全系统操作和高吞吐量网络连接。2019年5月,

基于当前的物联网趋势,我们提出了一个包括Azure Sphere设备和Azure云服务的集成解决方案,以应对整体安全、成本和设备管理的挑战。

参考

1. 库蒂,S.;法拉,S。Katsaros, K.;迪亚纳蒂,M。麦卡洛,F.;Mouzakitis, A. 对最先进的定位技术及其在自动驾驶汽车应用中的潜力的调查。IEEE 物联网期刊 2018, 5, 829-846。

2. 卡里亚斯,JF;拉巴卡,L。萨列吉,JM;Hernantes, J. 在工业物联网背景下定义网络弹性投资策略。传感器 2019, 19, 138。

3. Yan, H.;张,Y。庞,Z。Xu, LD 物联网环境下工业 wsn 的时隙 mac 超帧规划和访问延迟。IEEE 工业信息学汇刊 2014, 10, 1242-1251。

4. 阿拉姆,MM;马利克,H。汗,密歇根州;帕迪,T。库西克,A.;Moullec, YL 关于通信技术在基于物联网的个性化医疗应用中的作用的调查。IEEE 访问 2018, 6, 36611-36631。

5. 杨,P。斯坦克维修斯,D.;Marozas, V.;邓,Z。刘,E。卢科塞维修斯,A.;董,F。徐,L。Min, G. 用于物联网的生命记录数据验证模型实现了个性化医疗保健。IEEE Transactions on Systems, Man, and Cyber​​netics: Systems 2018, 48, 50-64。

6. 公园,S。上海公园;公园,LW;公园,S。李,S。李,T。李 SH;张,H。金,SM;张,H。Park, S. 智能城市基础设施中基于智能物联网的建筑和城镇灾害管理系统的设计与实施。申请 科学。2018 年 8 月 2239 日。

7. 瓦拉蒂 C.;维迪斯 A.;明戈齐 E.;Stea G. MEC 回家!使用 LTE D2D 通信连接未来智能家居中的事物。IEEE 消费电子杂志 2016, 5, 77-83。

8. 阿里亚斯,O。沃姆,J。黄,K。Jin, Y. 物联网和可穿戴设备中的隐私和安全。IEEE Transactions on Multi-Scale Computing Systems 2015, 1, 99-109。

9. 吴,L。杜,X。Guizani, M.;Mohamed, A. 植入式医疗设备的访问控制方案:一项调查。IEEE 物联网期刊 2017, 4, 1272-1283。

10. 阿尔塔维,R.;Youssef, AM 网络物理系统中的安全权衡:植入式医疗设备的案例研究调查。IEEE 访问 2016, 4, 959-979。

11. 小江,D.;Dapeng, W. 用于移动自组织网络的自适应小区中继路由协议。IEEE 车辆技术交易 2006, 55, 278-285。

12. 关 Z.;李,J。朱,L。张,Z。杜,X。Guizani, M. 面向具有可再生能源的智能电网的延迟容忍灵活数据访问控制。IEEE 工业信息学汇刊 2017, 13, 3216-3225。

13.拉斯AT;Colin J. 在智能家居中帐户被盗的情况下加强访问控制。在 WiMob 2017 IEEE 国际无线和移动计算、网络和通信会议记录中,意大利罗马,2017 年 10 月 9 日至 11 日。

14. Cheminod, M.;杜兰特,L。塞诺,L。Valenzano, A. 工业网络系统中访问控制实施的半自动验证。IEEE 工业信息学汇刊 2015, 11, 1388-1399。

15. 穆尼尔,M。南澳大利亚州西迪基;登格尔,A.;Ahmed, S. Deepant:一种用于时间序列中无监督异常检测的深度学习方法。IEEE 访问 2018,1-1。

16. 加达姆,SR;波哈,VV;Balagani, KS K-means+id3:一种通过级联 k-means 聚类和 id3 决策树学习方法进行监督异常检测的新方法。IEEE 知识与数据工程交易 2007, 19, 345-354。

17. 侯赛因,B。杜,问。Ren, P. 基于半监督学习的移动无线网络中大数据驱动的异常检测。中国交通 2018, 15, 41-57.

18. Frustaci, M.;佩斯,P。阿洛伊,G.;Fortino, G. 评估物联网世界的关键安全问题:当前和未来的挑战。IEEE 物联网期刊 2018, 5, 2483-2495。

19. 阿里,B。Awad,基于物联网的智能家居的人工智能网络和物理安全漏洞评估。传感器 2018、18、817。

20.崔Z。吕浩;超Y。高 G.;Zhou C. 云中物联网所有者的高效密钥管理。在 2015 年 IEEE 大数据和云计算国际会议论文集中,中国大连,2015 年 8 月 26 日至 28 日。

21. Naoui S.;Elhdhili 我;Saidane LA 现有物联网密钥管理协议的安全分析。在 2016 年 IEEE/ACS 计算机系统和应用国际会议记录中,摩洛哥阿加迪尔,2016 年 11 月 29 日至 12 月 2 日。

22. 周,J。曹,Z。董,X。Vasilakos,基于云的物联网的 AV 安全和隐私:挑战。IEEE 通信杂志 2017, 55, 26-33。

23. He H.; 枫 C.;Watson T. 物联网中的安全挑战使网络物理系统成为可能,并为进化计算和其他计算智能提供了机会。在 2016 年 IEEE 进化计算大会论文集中,加拿大温哥华,2016 年 7 月 24 日至 29 日。

24. 侯赛因,硕士;Muhammad, G. 云辅助工业物联网 (iiot) 支持的健康监测框架。计算机网络 2016, 101, 192-202。

25. 周,J。曹,Z。董,X。Vasilakos,基于云的物联网的 AV 安全和隐私:挑战。IEEE 通信杂志 2017, 55, 26-33。

26. 马哈茂德,R.;优素福,T。阿卢尔,F。Zualkernan, I. 物联网 (iot) 安全:现状、挑战和前瞻性措施。在 2015 年第十届互联网技术和安全交易国际会议记录中,英国伦敦,2015 年 12 月 14 日至 16 日。

27. Al-Fuqaha, A.;Guizani, M.;穆罕默迪,M。Aledhari, M.;Ayyash, M. 物联网:关于支持技术、协议和应用程序的调查。IEEE 通信调查与教程 2015, 17, 2347-2376。

28. 莫塞尼亚,A.;Jha, NK 物联网安全综合研究。IEEE 新兴计算主题交易 2017, 5, 586-602。

29. 王,N。江,T。李,W。Lv, S. 基于压缩感知和频率选择的物联网物理层安全。IET 通讯 2017, 11, 1431-1437。

30. Jing, Q.; 瓦西拉科斯,AV;万,J。卢,J。Qiu, D. 物联网的安全性:观点和挑战。无线网络 2014, 20, 2481-2501。

31. Azure Sphere 文档。在线提供:https ://docs.microsoft.com/en-us/azure-sphere/

32. 亨特 G.;莱蒂 G.;Nightingale E. 高度安全设备的七个属性。技术。报告 MSR-TR-2017-16。在线提供:https ://www.microsoft.com/en-us/research/publication/seven-properties-highly-secure-devices

33. Azure Sphere 架构。在线提供:https ://docs.microsoft.com/en-us/azure-sphere/product-overview/architecture/

34. MT 3620 产品信息。在线提供:https ://www.mediatek.com/products/azureSphere/mt3620

35. Azure Sphere 入门套件。https://www.element14.com/community/community/designcenter/azure-sphere-starter-kits/

2. 系统设计

2.1. 概述

整个系统如图2所示,分为设备层、云层和应用层三个不同的层次。首先,包括 ZigBee 终端设备和 ZigBee 协调器在内的 ZigBee WSN 以及 Arduino 设备代表传统物联网系统。其次,MT3620 入门套件用作 Azure Sphere 设备和网关的替代品。第三,利用Azure IoT Hub、Azure Stream Analytics、Azure Device Provisioning Service、Azure Storage Table等存储服务作为数据处理和管理单元。最后,Power BI 和 Native App 分别用作 UX 解决方案和业务集成。

poYBAGOSeByAMtYdAAFUFskMHOQ058.png
图 2. 系统概览。
 

2.2. 硬件设计

根据设计的解决方案,Avnet Azure Sphere MT3620 入门套件是建议系统的重要组成部分。MT3620是首款通过Azure Sphere认证的MCU,内嵌三核微控制器,一个ARM Cortex-A7内核作为应用处理器运行频率高达500 MHz,两个ARM Cortex-M4F内核作为通用处理器运行频率高达200 MHz处理器。在建议的系统中,MT3620 套件用作 Azure Sphere 设备,以在与 UART、I2C、SPI 和 ADC 片上外围设备接口时支持实时和安全要求。MT3620 入门套件由可充电锂离子电池供电,旨在用作传统节点的直接连接设备或网关。对于前一种情况,板载传感器包括 3 轴加速度计、陀螺仪和温度传感器 (LSM6DSO),压力/气压传感器 (LPS22HH) 和环境光传感器足以应对普通的物联网场景。并且可以通过 2.4/5 GHz 双频 Wi-Fi 模块实现与 Azure IoT Hub 的消息传输。对于后一种场景,借助UART接口,可以将ZigBee、Arduino等网络设备等遗留物联网系统连接到MT3620网关进行消息处理,然后再上传到Azure IoT Hub。在这个项目中,ZigBee 无线传感器网络 (WSN) 以及 Arduino 设备被建立为用于环境感知的遗留物联网系统。ZigBee 终端设备配备了温度和湿度传感器、光传感器、气体传感器和被动红外 (PIR) 传感器。4/5 GHz 双频 Wi-Fi 模块。对于后一种场景,借助UART接口,可以将ZigBee、Arduino等网络设备等遗留物联网系统连接到MT3620网关进行消息处理,然后再上传到Azure IoT Hub。在这个项目中,ZigBee 无线传感器网络 (WSN) 以及 Arduino 设备被建立为用于环境感知的遗留物联网系统。ZigBee 终端设备配备了温度和湿度传感器、光传感器、气体传感器和被动红外 (PIR) 传感器。4/5 GHz 双频 Wi-Fi 模块。对于后一种场景,借助UART接口,可以将ZigBee、Arduino等网络设备等遗留物联网系统连接到MT3620网关进行消息处理,然后再上传到Azure IoT Hub。在这个项目中,ZigBee 无线传感器网络 (WSN) 以及 Arduino 设备被建立为用于环境感知的遗留物联网系统。ZigBee 终端设备配备了温度和湿度传感器、光传感器、气体传感器和被动红外 (PIR) 传感器。ZigBee 无线传感器网络 (WSN) 以及 Arduino 设备被建立为用于环境感知的遗留物联网系统。ZigBee 终端设备配备了温度和湿度传感器、光传感器、气体传感器和被动红外 (PIR) 传感器。ZigBee 无线传感器网络 (WSN) 以及 Arduino 设备被建立为用于环境感知的遗留物联网系统。ZigBee 终端设备配备了温度和湿度传感器、光传感器、气体传感器和被动红外 (PIR) 传感器。

2.3 安全设计

为了确保物联网系统各层的安全性,将安全策略和规则分为四类,如表1所示,即设备安全、连接安全、云安全和应用程序安全。

poYBAGOSeCKALRW_AACSEe6K2dI511.png
表 1. 此项目中的安全注意事项。
 

对于设备安全,本系统中使用的MT3620 MCU被确定为关键组件,根据七种最高级别的安全属性进行设计。同时,在与云服务器通信时,使用基于证书的身份验证而不是密码来证明身份。此外,为了确保应用程序及其数据的安全,实施了限制访问外部资源、应用程序能力、签名图像和设备能力四种策略。

对于连接安全,MT3620 和云网关之间的通信由 wolfSSL 保护,这是一个针对物联网、嵌入式和 RTOS 环境的行业标准传输层安全 (TLS) 库。具体来说,HTTP Secure (HTTPS) 和消息队列遥测传输 (MQTT) 协议不仅用于高效的资源使用,还用于可靠的消息传递。

对于云安全,Azure Active Directory (AAD) 用于用户身份验证和授权。Azure Stream Analytics 通过了 ISO 27001 和 ISO 27018 认证,这意味着云中的信息安全管理和个人数据保护得到保障。写入 Azure 表存储的所有数据都使用 256 位高级加密标准 (AES) 加密进行加密,这被认为是可用的最强大的块密码之一。

为了应用安全,设计的解决方案实现了 128 位 AES 算法,用于 CC2530 ZigBee 节点之间的数据加密。具体来说,CC2530 芯片组利用 AES-CCM(带有 CBC-MAC 的计数器)模式来加密和解密数据。配置文件“f8wConfig.cfg”中的全局​​变量 zgPreConfigKeys 和 DSECURE 分别设置为 TRUE 和 1,以启用 AES 安全性。其次介绍了应用能力、设备能力和签名部署,以保证MT3620上运行的应用安全。具体来说,应用程序功能在应用程序清单文件中定义,以声明给定应用程序所需资源的授权使用。Azure Sphere 设备的设备能力由 Azure Sphere 安全服务授予并存储在闪存中。部署到 Azure Sphere 设备的所有图像包都必须使用 SDK 签名密钥进行签名。在通过侧载或无线 (OTA) 方法将应用程序上传到芯片之前,应对包进行签名以确保其安全性。

3.硬件设置

3.1 所需硬件项目

  • Avnet Azure Sphere MT3620 入门套件
  • 128x64 黄蓝 SSD1306 I2C OLED 显示屏 [可选]
  • CC2530 ZigBee 板
  • 阿杜诺UNO
  • PIR 运动传感器
  • DHT11温湿度传感器
  • MQ2气体传感器
  • 光敏电阻

3.2 将 OLED 显示器连接到 Azure Sphere 入门套件

可选 OLED 128x64 显示器 (I2C) 的接口在板上留空。此入门套件上的 OLED 显示连接器的引出线列于下图 3 中。

pYYBAGOSeCSAMP3pAAAfX4pv4pw556.png
图 3. OLED 显示界面
 

我们可以在板上焊接四个 2.54mm 引脚,以帮助连接 OLED 显示器,如图 4 所示。

pYYBAGOSeFeAJIOzAAs0ZPzd8Qw405.jpg
图 4. 通过四个引脚连接板与 OLED 显示器。
 

3.3 将传感器连接到 CC2530 ZigBee 终端设备

MQ2气体传感器和光敏电阻将模拟信号提供给CC2530的P0.7和P0.6,由CC2530进行模数转换并发送数字信号。DHT11是单线温度传感器,我们把它的信号线接到CC2530的P1.1。PIR 运动传感器连接到 CC2530 的 P0.5。所有传感器均由模块上的 5V 直流电压供电。如图 5 所示。

poYBAGOSeHWAd-SqAAXeDvoI-SA030.jpg
图 5. 将传感器连接到 CC2530 ZigBee 终端设备。
 

3.4 将 CC2530 ZigBee 协调器连接到 Avnet Azure Sphere 套件

在这个项目中,我们使用 CC2530 ZigBee 协调器的 Uart0。因此,P0.2、P0.3 和 GND 用作 Uart 通信的 Rx、Tx 和 GND。对于 Avnet Azure Sphere 套件,“Mikrobus Click 1”上的 Uart0 如下使用。

pYYBAGOSeHiAWUvaAAF-4MW_XBc831.png
图 6. 将 CC2530 ZigBee 协调器连接到 Avnet Azure Sphere 套件。
 

请确保 ZigBee Coordinator 的 Rx 与 Avnet Azure Sphere Kit 的 Tx 相连,ZigBee Coordinator 的 Tx 与 Avnet Azure Sphere Kit 的 Rx 相连。

3.5 将传感器连接到 Arduino Uno 设备

MQ2气体传感器和光敏电阻将模拟信号送给Arduino Uno的A0和A1,进行模数转换,将数字信号通过串口发送出去。DHT11是一个单线温度传感器,我们将它的信号线连接到Arduino的数字引脚2。PIR 运动传感器连接到数字引脚 3。所有传感器均由模块上的 5V 直流电压供电。如图 7 所示。

poYBAGOSeK6AG3kvAAvX22blRaw860.jpg
图 7. 将传感器连接到 Arduino Uno。
 

3.6 将 Arduino Uno 连接到 Avnet Azure Sphere 套件

在这个项目中,我们使用 Arduino Uno 的 Uart0。因此,Pin 0、Pin 1 和 GND 用作 Uart 通信的 Rx、Tx 和 GND。对于 Avnet Azure Sphere 套件,“Mikrobus Click 1”上的 Uart1 如下使用。

poYBAGOSeLGABhWeAAGDdAxLtRQ709.png
图 8. 将 Arduino Uno 连接到 Avnet Azure Sphere 套件
 

请确保 Arduino 的 Rx 与 Avnet Azure Sphere Kit 的 Tx 相连,Arduino 的 Tx 与 Avnet Azure Sphere Kit 的 Rx 相连。

4. 软件设计

4.1 所需软件

如表 2 所示,使用带有 IAR Embedded Workbench for 8051、Visual Studio 2017 Community 或 Visual Studio 2019 Community 和 Arduino IDE 的 Windows 10 PC 分别为 CC2530 ZigBee 节点、MT3260 入门套件和 Arduino Uno 开发应用程序。Azure Sphere 软件开发工具包 (SDK) 版本 19.05 也作为 Visual Studio Community 不可或缺的扩展安装。

pYYBAGOSeLmAEkmWAABbqdhcHxo150.png
表 2. 项目中软件设计的先决条件。
 

4.2 ZigBee 无线传感器网络软件

在本项目中,Z-Stack用于无线传感器节点的管理和数据传输。在带有 Z-Stack 的 CC2530 ZigBee 节点中运行的程序执行如下。初始化过程完成后,操作系统层执行主循环,在主循环中将按顺序访问和检查任务列表。只要满足条件,就会立即执行指定的任务。对于本项目中的ZigBee Coordinators,主要有两个任务,分别是UART消息处理任务和ZigBee无线网络传入包处理任务。一方面,UART 消息处理任务处理来自 MT3620 的传入数据,然后通过 Z-Stack 协议消息将消息中继到 ZigBee 终端设备。另一方面,无线网络传入包处理任务负责处理来自 ZigBee 终端设备的 Z-Stack 协议消息,并将有效数据通过 UART 接口传输到 MT3620。对于配备不同类型传感器的 ZigBee 终端设备,也有两个主要任务。首先,在用户定义的时间间隔内,在数据发送处理程序事件中完成从传感器读取数据并将消息传输到 ZigBee 协调器。其次,通过 Z-Stack 协议来自 ZigBee 协调器的下行链路消息在 Message Process 事件中处理。从传感器读取数据并将消息传输到 ZigBee 协调器是在用户定义的时间间隔内的数据发送处理程序事件中完成的。其次,通过 Z-Stack 协议来自 ZigBee 协调器的下行链路消息在 Message Process 事件中处理。从传感器读取数据并将消息传输到 ZigBee 协调器是在用户定义的时间间隔内的数据发送处理程序事件中完成的。其次,通过 Z-Stack 协议来自 ZigBee 协调器的下行链路消息在 Message Process 事件中处理。

上行链路消息的有效负载如图9所示。有效负载以两个字节的传感器ID为前缀,紧随其后的是两个字节的温度数据、两个字节的湿度数据、两个字节的光数据、两个字节的气体数据和一个字节的 PIR 传感器数据。

pYYBAGOSeLyAAk51AAAnZH11gw8476.png
图 9. ZigBee 上行链路消息的有效载荷
 

4.3 Arduino Uno 软件

在这个项目中,Arduino Uno 作为一种传统的物联网系统,由 Avnet Azure Sphere Start 套件保护以实现消息收发。

在程序的初始化中,设置了输入和输出引脚。串口波特率配置为9600。在主循环中,采集传感器值并转换成一个11字节的报文,其顺序与图9相同。读取和发送传感器将每 5 秒执行一次。

4.4 Avnet Azure Sphere 入门套件软件

感谢Peter FennBrian Willess ,Avnet Azure Sphere Start Kit 的程序是在他们的工作“ Avnet Azure Sphere Starter-Kit:高级教程”的基础上构建的。" MT3620 可以配置为网关,让遗留物联网系统连接到互联网和 Azure IoT Hub。Azure Sphere 设备的 UART 接口用于与 ZigBee 无线传感器网络通信,即遗留物联网系统。同时,UART 外设应包含在应用程序清单文件中,其中列出了应用程序需要的所有资源。需要注意的是,应用程序清单将由 Azure Sphere 运行时访问,以确定允许使用哪些功能一旦应用程序被旁加载或部署到设备。任何访问清单中未描述的资源的尝试都将被运行时拒绝。因此,添加了两个 UART 和允许连接到 Azure 云服务作为基本功能。它如图 10 所示。

pYYBAGOSeL-ADYl8AAC_C19xrOI676.png
图 10. MT3620 网关项目的应用程序清单文件
 

需要注意的是“AllowedConnections”要改成你自己的Azure IoTHub。

在作为网关的 MT3620 中运行的应用程序的流程图如图 11 所示。基本上,应用程序的初始化过程与作为直接连接设备的 MT3620 中的应用程序的初始化过程几乎相同,只是配置了 UART 外设并且打开与 ZigBee 协调器和 Arduino Uno 的通信。在主循环中,调用 UART 事件处理程序进行入站消息接收、数据有效性检查和本地参数更新。

poYBAGOSeMKAPjhJAABWs0vWz74079.png
图 11. 在 MT3620 网关上运行的应用程序流程图。
 

5. Azure 云集成

Azure 云提供的服务,在数据收集、数据处理、数据存储和数据可视化方面发挥着关键作用。本小节包含在 Azure 云上运行的所有服务。

5.1 Azure 物联网中心

Azure IoT 中心起着核心作用。它充当 Azure Sphere 设备和 Azure 云服务之间的桥梁。一方面,Azure IoT Hub 不仅收集设备到云的消息以了解 MT3620 设备的实时状态,而且可靠地发送云到设备的命令和通知以更新策略存储在 MT3620 设备中的传感器数据收集。另一方面,在设备配置服务的帮助下实现了零接触、及时配置,这意味着可以在无需人工干预的情况下以安全且可扩展的方式配置数百万台设备。

在 Azure 门户 ( https://portal.azure.com)中,单击左侧的“新建”图标以查看所有服务,然后单击“物联网”项并选择“IoT 中心”。

填写“名称”、“定价层”、“IoT 中心单元”、“设备到云分区”、“资源组”和“位置”字段,然后单击“创建”按钮。应该注意的是,“F1 Free”定价对于这个项目来说已经足够了。而且我们最好选择服务的本地位置。

等待新的 IoT 中心显示为“在线”。准备就绪后,打开新 IoT 中心的边栏选项卡,记下 URI 并选择顶部的钥匙图标以访问共享访问策略设置。

选择名为 iothubowner 的共享访问策略,并记下右侧边栏中的主键和连接字符串。我们可能会将这些复制到文本文件中以备将来使用。

有关更多信息,我们可以在线参考此文档:使用 Azure 门户创建物联网中心 ( https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal )

5.2 使用 Device Explorer 验证 Avnet Start Kit

Azure IoTHub 和设备之间的通信是安全的。在 Windows 上,我们可以使用 Device Explorer 应用程序来完成此身份验证过程。单击此链接可下载适用于 Windows 的设备资源管理器应用程序的预构建版本:https://github.com/Azure/azure-iot-sdk-csharp/releases/tag/2019-1-4(滚动下载 SetupDeviceExplorer.msi)。此应用程序的默认安装目录是“C:\Program Files (x86)\Microsoft\DeviceExplorer”。

打开 Device Explorer 应用程序并使用我们创建的 IoT 中心的连接字符串填充 IoT 中心连接字符串字段,然后单击更新。转到“管理”选项卡,然后单击“创建”按钮。将显示创建设备弹出窗口。使用您的设备(例如 AvnetStarterKit)的新 ID 填写设备 ID 字段,然后单击创建,如下所示。

poYBAGOSeMyALeRmAAD0WGhCAKs929.png
图 12. 使用 Device Explorer 验证 Avnet 入门套件
 

创建设备标识后,它将显示在网格中。右键单击我们创建的标识,选择复制所选设备的连接字符串并通过复制到剪贴板来保存值,因为需要将硬件连接到 IoT 中心。

5.3 更新 Azure IoTHub 连接字符串

从 GitHub 存储库 ( https://github.com/shijiong/AzureSphereSecurityGateway)下载源代码使用 Visual Studio 打开解决方案,导航到“connection_strings.h”,更新连接字符串。

5.4 创建 Azure 存储帐户和 Azure 存储表

在此项目中,我们将需要 Azure 存储表来存储来自传感器设备的数据。因此,我们可以按如下方式创建它。在 Azure 门户中,单击左侧的“存储”图标以查看现有存储帐户(如果有),然后单击左下角的“+新建”按钮。在“NEW”面板中,选择“STORAGE” | “存储帐户”按钮。等待新存储帐户的状态显示为“在线”。选择新创建的存储帐户,然后单击页面底部的管理访问密钥。复制存储帐户名称和其中一个访问密钥。

我们使用 Microsoft Azure 存储资源管理器 ( https://azure.microsoft.com/en-us/features/storage-explorer/)创建 Azure 存储表“AvnetAzureSphere”。

pYYBAGOSeNCAF9ofAACMY5fIYRE258.png
图 13. 表存储
 

5.5 创建 Azure 流分析作业

本项目使用 Azure Stream Analytics 过滤 IoTHub 收集的传感器数据,并将数据流式传输到 PowerBI 和 Azure Storage Table。新的流分析创建如下。

在 Azure 门户 ( https://portal.azure.com ) 中,单击左侧的“新建”图标以查看所有服务,然后单击“物联网”项并选择“流分析作业”。

填写“作业名称”、“资源组”和“位置”字段,然后单击“创建”按钮。等待新的流分析显示为“在线”。

现在,是时候配置流分析作业了。首先,在 Inputs 窗口中,我们选择 IoT Hub,然后在 IoT Hub Settings 屏幕中,我们完成以下信息:

  • 输入别名:AvnetData
  • 订阅:使用当前订阅中的 IoT 中心
  • 选择 IoT Hub:输入创建 IoT Hub 时使用的名称
  • IoT 中心共享访问策略名称:iothubowner
  • 物联网中心消费者组:powerbi

单击下一步,然后单击完成(保留序列化设置不变)。

要设置输出,请转到流分析作业的输出选项卡,然后单击添加输出链接。在 Add an output to your job 弹出窗口中,选择 POWER BI 选项并单击 Next 按钮。在以下屏幕中,您将设置 Power BI 帐户的凭据以允许作业连接并向其发送数据。单击立即授权链接。

要设置查询配置,请转到 Stream Analytics Job QUERY 选项卡并将查询替换为以下语句:

SELECT
*
INTO
[AvnetStartKit]
FROM
[MT3620]

SELECT
*
INTO
[AvnetAzureSphere]
FROM
[MT3620]

需要注意的是,我们只是选择了从 IoTHub 到 PowerBI 和 Azure Storage Table 的所有数据。在确认对话框中单击“保存”按钮和“是”。现在作业已配置,启动按钮已启用。单击按钮开始作业,然后在“开始输出”弹出窗口中选择“作业开始时间”选项。单击“确定”后,作业将开始。作业启动后,它会创建与给定订阅关联的 Power BI 数据源。

5.6 配置 PowerBI 仪表板

现在数据源已创建,返回 Power BI 会话,并通过单击 Power BI 链接找到我的工作区。作业运行几分钟后,您将看到您配置为作业输出的数据集现在显示在 Power BI 工作区数据集部分中。

poYBAGOSeNSAQvwpAADt5WbLG4g940.png
图 14. Power BI 工作区数据集
 

请注意,Power BI 数据集只会在作业正在运行并且正在从 IoT 中心输入接收数据时创建,因此请检查硬件是否正常工作并将数据发送到 Azure 以确保创建数据集。要检查流分析作业是否正在接收和处理数据,您可以检查 Azure 管理流分析监视器。

一旦数据源可用,您就可以开始创建报告。要创建新报表,请单击 Power BI 数据源。

报表设计器将打开,显示可用于所选数据源的字段列表以及该工具支持的不同可视化效果。这里我们选择实时传感器日期和处理时间。现在报告差不多准备好了。单击“保存”按钮并将“校园环境”设置为报告的名称,如下所示。

pYYBAGOSeOGAH98uAAGzr-4L9Gg812.png
图 15. Power BI 报表设计器
 

5.7 随时随地浏览环境数据

使用 Power BI Desktop ( https://powerbi.microsoft.com/en-us/desktop/ ),我们可以从 Power BI Web 获取数据,并在桌面 PC 上显示我们上面创建的数据报表。

通过iOS或Android上的Power BI应用程序,我们可以从Power BI Web获取数据,并在手机端展示数据报表。

poYBAGOSeOeAD_13AADnFoMGmRY735.png
图 16.Power BI 移动版
 

六、附录

6.1 构建和监控应用程序

从 Github 下载源项目:https://github.com/shijiong/AzureSphereSecurityGateway/tree/master/AvnetAzureSphereSK_OLED。感谢 Peter FennBrian Willess,Avnet Azure Sphere Start Kit 的程序是在他们的工作“ Avnet Azure Sphere Starter-Kit: Advanced Tutorial ”的基础上构建的。确保以下配置。

1. 在此 IDE 的编辑器中打开 build_options.h 文件并检查:

第 5 行:必须注释掉(即,如果注释字符出现在 //#define IOT_CENTRAL_APPLICATION 的行首,则删除注释字符)。

第 8 行:必须启用(即#define IOT_HUB_APPLICATION)

2.connection_strings.h中的connection string要换成你自己的device connection string。

3. 在 app_manifest.json 文件中,“ISU0”、“ISU1”应在“Uart”部分设置,“****.azure-devices.net”(您自己的 IoTHub)应在“AllowedConnections”部分配置。

6.2 监控 Visual Studio IDE 的输出

调试信息将显示在 Visual Studio 的输出窗口中。原始 UART 信息如图 17 所示。

pYYBAGOSeOqAVJ3AAAB7MGi4HYc121.png
图 17. Visual Studio 的输出窗口
 

6.3 使用 Device Explorer 监控消息

一旦消息通过 Avnet Start Kit 成功发送到 Azure IoTHub,就可以通过Device Explorer监控信息原始消息如图 18 所示。

pYYBAGOSeO6ANfBmAAB25X1hhNk365.png
图 18. Device Explorer 捕获的消息
 

6.4 用于 Uart 信息的 OLED 显示屏

一旦应用程序运行,信息就会显示在 OLED 显示屏上。在《 Avnet Azure Sphere Starter-Kit: Advanced Tutorial》的基础上增加了四个画面源码可以在oled.c中找到,包括update_uart_data1和update_uart_data2的方法。信息将从原始消息中提取并显示在 OLED 上,如图 19 所示。

poYBAGOSePGACPRhAADksVfxMTw110.png
图 19. OLED 显示 Uart 信息
 

6.5 Azure 表存储

访问 Azure 表存储不仅速度快,而且对于用户应用程序而言也具有成本效益。表的实体如表 3 所示,其中包含多个属性,包括分区键、行键、时间戳、设备 ID、事件排队的 UTC 时间、事件处理的 UTC 时间、气体、湿度、光照、PIR 和温度。分区键、行键和时间戳是为表中的每个实体自动生成的,它们代表实体主键的第一部分、实体主键的第二部分和实体最后一次修改的时间。

poYBAGOSePSAJgCUAACtCEztwTI112.png
表 3.Azure 存储表。
 

为了评估Azure Table Storage的性能,Azure提供了成功请求的平均端到端延迟(AverageE2ELatency)和平均服务器延迟(AverageServerLatency)。AverageE2ELatency 包括 Azure 表存储中读取请求、发送响应和接收响应确认所需的处理时间。AverageServerLatency 代表 Azure 表存储用于处理请求的平均延迟,不包括失败的请求。此值不包括 AverageE2ELatency 中包含的网络延迟。Azure 表存储的延迟评估如图 20 所示。

pYYBAGOjso2ABfN1AAEE4DSGekc939.png
图 20. Azure 表存储的延迟评估。
 

根据图 20 中的曲线,AverageServerLatency 和 AverageE2ELatency 的值分别为 11.25 ms 和 77.27 ms,这意味着平均整个延迟小于 100 ms。大多数物联网应用程序都可以接受。

6.6.NET应用

从 Github 下载应用程序并从 Azure IoT 中心门户复制必要的连接字符串信息。此连接字符串不是特定于设备的,而是特定于 IoT 中心单元的。有关详细信息,请参见图 21。

pYYBAGOjspGAfA4qAAD4pE1nRH0244.png
图 21. .NET 应用程序的连接字符串
 

使用此连接字符串,您可以访问在此 IoT 中心单元中创建的所有设备。粘贴连接字符串,如图 22 所示。

poYBAGOjspWAUqO2AADXiiF7e2Q545.png
图 22. 应用程序中的连接字符串
 

七、总结

在这个项目中,我们研究了物联网解决方案与大规模、低成本和安全终端设备的集成。我们重点关注了以下三个方面。首先,以Azure Sphere设备和Azure云服务为特色,设计、部署和测试了硬件、软件和服务的集成。其次,设计并实现了包括Avnet Azure Sphere Starter Kit直连设备和网关设备在内的硬件原型。第三,设计并测试了硬件设备的程序、云服务的配置以及PowerBI应用程序。

特别感谢

感谢Peter FennBrian Willess,Avnet Azure Sphere Start Kit 的程序是在他们的工作“ Avnet Azure Sphere Starter-Kit:高级教程”的基础上构建的。

感谢 Avnet 和 Microsoft,你们为我提供了 Azure Sphere 初学者工具包,帮助我将这个项目变为现实!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'用于安全物联网的Azure Sphere和Azure云服务',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);