贵重物品,如博物馆中的艺术品或公共场所的各种设备,需要防止被盗。传统上,这是由专门的安全人员完成的。
在这个项目中,我将展示一个连接互联网的防盗设备,它可以用作安全人员的替代品或补充品。
该设备就像一个支架,但顶板安装在称重传感器上。这样就可以高精度地监控放置在支架上的重量,并且可以快速检测到任何变化。概念:放置在设备上的贵重物品
除了重量传感器外,加速度计和光学传感器等辅助传感器还可用于检测振动或其他可疑活动。
我构建的概念验证设备基于Avnet 的 Azure Sphere MT3620 入门套件,并使用 3 Kg 称重传感器作为其主要传感器,以及 Sphere 套件的内置加速度计:
该设备已连接互联网,可以通过 Azure Central IoT 应用程序轻松远程监控。使用自动规则检测盗窃并采取行动。
Azure Sphere 平台提供的创新安全基础架构使设备软件无法被篡改。
Azure Sphere 是 Microsoft 用于物联网解决方案的安全高级应用程序平台。
它由 3 个主要部分组成:
目前我们可以使用 3 个官方开发工具包来试验 Azure Sphere 平台:
所有这些都基于联发科与微软合作设计的联发科 MT3620 MCU。
MCU具有以下主要特点:
标准 MCU 的东西。到目前为止没有什么有趣的.. :)
让 MT3260 有趣的是内置的 Microsoft Pluton 安全子系统,它具有以下特点:
Pluton 还实现了一个带有远程认证的安全启动系统。这意味着已使用 Azure Sphere 安全服务 (AS3) 验证加载的启动映像(OS + 应用程序)的真实性。如果加载的图像有效/最新,AS3 会为设备颁发短期客户端证书(~1 天有效期),然后可用于连接到其他在线服务。如果加载的图像无效/最新,则不会颁发客户端证书,从而强制设备进行更新。
在这个项目中,我们将使用 Avnet MT3620 入门套件,这是一个基于 Azure Sphere 模块 AES-MS-MT3620-MG 的开发套件:
要开始使用 Avnet Azure Sphere MT3620 入门套件,我们需要考虑以下几点:
现在我们需要下载并安装Azure Sphere SDK for Visual Studio Preview软件:
这将安装与 Azure Sphere 模块通信所需的驱动程序和工具。
在此之后,我们可以按照Azure Sphere 文档入门页面中的步骤进行操作。
要使用 Azure Sphere,我们需要一个 Azure Active Directory 工作/学校帐户。这可以从Azure 门户的Azure Active Directory / 用户部分创建。新创建的帐户应该类似于:
下一步是领取您的设备。这会将您的设备永久链接到我们之前创建的帐户 (!),从而将设备的访问权限锁定给您的租户。要声明设备,应从 Azure Sphere 开发人员命令提示符执行以下命令
### Sign in to Azure Sphere with previously created account
$ azsphere login
### Create a new Azure Sphere tenant
$ azsphere tenant create --name sphere
### Claim you device
$ azsphere device claim
现在我们可以配置Sphere 模块使用的 Wifi 网络。从 Azure Sphere 开发人员命令提示执行以下命令:
### Add a new Wifi network
$ azsphere device wifi add --ssid --key
### Check that the Sphere module is connected to the Wifi network
$ azsphere device wifi show-status
我们能做的最后一件事是更新设备的 Azure Sphere 操作系统:
### Check if any update are available:
$ azsphere device show-ota-status
### Download and install the update:
$ azsphere device recover
在此之后我们可以尝试构建并运行 Blink 应用程序:
### Enable debugging
$ azsphere device prep-debug
### Enable debugging
$ azsphere device prep-debug --enablertcoredebugging
然后,我们可以从Visual Studio使用Azure Sphere Blink模板创建新项目:
如果我们使用远程 GDB 调试器运行项目,Azure Sphere 初学者工具包的用户 LED 应该开始闪烁。
接下来我们可以按照 Avnet 员工创建的两个 Azure Sphere Started-Kit 教程进行操作:
第一个教程介绍了 Azure Sphere 初学者工具包参考设计。第 1 部分涵盖以下功能:
本教程的 GitHub 存储库是:Avnet/AvnetAzureSphereStarterKitReferenceDesign
第二个教程部分基于第一个教程,添加了以下额外功能:
第二个教程的 GitHub 存储库是:CloudConnectKits/Azure_Sphere_SK_ADC_RTApp
我们可以从这些教程中学到很多东西,而且由于它们是 MIT 许可的,我们可以使用它们的代码库作为新项目的起点。
实时和高级应用程序
正如我之前提到的,MT3620 SoC 包括:
高级教程的代码存储库包括两个 Visual Studio 项目:一个用于 A7 应用程序核心,一个用于 M4F 实时核心。它还显示了两个内核如何进行通信。
本教程的第 2 部分和第 3 部分涵盖以下功能:
物联网中心
IoT 中心是 Azure 云中可用的 IoT 解决方案之一。
要将教程应用程序与 IoT 中心一起使用,第一步是从 Azure 门户创建一个 IoT 中心:
然后我们需要添加一个新设备:
并从其配置中复制主连接字符串:
连接字符串需要放在connection_strings.h
.
现在,如果我们以 IoT 中心应用程序模式运行应用程序:
// If your application is going to connect straight to a IoT Hub, then enable this define.
#define IOT_HUB_APPLICATION
我们应该能够看到 Device Twin 更新了我们的传感器数据
物联网中心
另一种选择是在 IoT Central 应用程序模式下运行
// If your application is going to connect to an IoT Central Application, then enable this define. When
// enabled Device Twin JSON updates will conform to what IoT Central expects to confirm Device Twin settings
#define IOT_CENTRAL_APPLICATION
IoT Central 是 Azure 云中可用的另一种物联网解决方案,它可以轻松创建基于物联网的云应用程序,而无需编写太多代码。
稍后我将在 Azure IoT Central 应用程序部分解释如何执行此操作。
该设备由以下电子元件构成:
硬件部分在FreeCAD中建模,由以下部分组成:
由于一切都在 3D 中建模,因此组装非常容易:
作为在 Azure Sphere Kit 上运行的软件的基础,我使用了 Avnet Azure Sphere Starter-Kit 的代码库: Peter Fenn的高级教程。
Azure Sphere Kit 运行的软件分为两部分:
两个内核上的应用程序使用内核间通信进行连接。
主要思想是将时间敏感任务(如传感器处理)运行在 M4 实时内核上。然后,负责云连接等任务的高级应用程序可以在 A7 应用程序处理器上运行。
在 A7 应用处理器上运行的高级应用程序负责:
负责将数据发送到 Azure IoT Central 的代码部分以及在 OLED 屏幕上显示数据的代码部分已更新为包含来自新添加的 HX711 称重传感器数据的数据。
该项目使用 HX711 芯片,一个 24 位 ADC 来测量负载传感器传感器产生的小电压。
由于没有现成的支持 MT3260 的 C 驱动程序,我决定移植现有的 Arduino HX711 库:https ://github.com/bogde/HX711
将库从 Arduino 迁移到与 MT3620 一起使用的步骤是:
结果证明 HX711 对时序有点敏感。在使用 A7 高级代码之前,我遇到了一些麻烦。HX711 的时钟需要外部提供,A7 上的 GPIO 操作有点慢(3-7 us)。由于一些不必要的代码,时钟周期超过 60us,HX711 进入睡眠模式。
出于这个原因,我决定尝试将 HX711 驱动程序代码卸载到 MT3260 的具有 M4 实时功能的内核之一。然后使用 MT3260 MCU 的 A7 和 M4 内核之间的内核间通信传输传感器数据。
注意:实时应用程序部分的代码已经完成,但我还没有成功测试它。我 PC 上的 Azure Sphere SDK 损坏了,但还没有设法修复它。
该项目的 UI 是使用 Azure IoT Central 完成的。
要开始使用 Azure IoT Cental,我们首先需要转到apps.azureiotcentral.com并创建一个新应用程序。
首先要做的是定义我们从设备发送的字段的测量值。
这些是:
接下来我们可以添加我们的设备:
并为其创建连接:
有了这个,我们可以使用实用程序生成连接字符串:dps-keygen
$ dps-keygen -si: -di: -dk:
Azure IoT DPS Symetric Key Generator v0.3.3
Connection String:
HostName=iotc-2e2dxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx.azure-devices.net;DeviceId=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
生成的连接字符串需要放在connection_strings.h
文件中。
在此之后,设备应该能够将数据发送到 Azure 云,我们应该能够将其可视化:
我们还可以配置仪表板,如下图所示
Azure IoT Central 还允许定义不同的规则并为其分配操作。
例如,我们可以创建规则来检测以下内容:
贝娄是一个规则的例子,如果振动达到两个高度,就会发送一封电子邮件:
注意:通常我会将其配置为基于权重的规则,但此时 HX711 驱动程序代码尚未完全发挥作用。不幸的是,今天(11 月 30 日)我 PC 上的 Azure Sphere SDK 不知何故损坏了,而且还没有设法修复它。由于这个原因,上面的和其他一些截图可能已经过时了。
这个项目有很多想法/领域可以改进。我计划做的一些是:
另一个有趣的主题是深入研究 Azure Sphere 平台提供的安全基础设施,并了解每个组件的工作原理。
项目的源代码、3D 模型/CAD 文件和其他资源可以在链接的 GitHub 存储库中找到。
查看我提交给Element14 上的感知世界挑战赛:基于 Azure Sphere 的安全物联网空气质量传感站
以下是有关 Azure Sphere 的一些有用文章:
竞赛要求之一是在Avnet 竞赛应用程序中连续30 (或 15)天注册我们的 Azure Sphere 套件。
现在,这个连续 30 天的要求可能有点棘手。特别是夏天,如果你要去度假并且不想带笔记本电脑,或者你只是要去一个没有互联网的偏远地方。
我对这个问题的解决方案是使用Macro Toolworks 、Windows Task Scheduler和一些 shell 脚本来自动化该过程。它的工作原理如下:
这个过程连续运行了大约 42 天,直到 9 月 14 日,我认为比赛注册服务器出现了一些问题,应用程序被卡住了。我当时决定停止这个过程。
然而,Azure Sphere Started Kit 通过 USB 供电超过 2 个月,仍然可以正常工作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !