亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

将 Arduino NB 1500 安全连接到 Azure IoT 中心

组件和用品

Arduino MKR NB 1500
× 1
Micro-USB 转 USB 线缆(通用)
× 1
3.7V 锂电池
× 1
微型 SIM 卡
× 1

应用和在线服务

Arduino IDE
Microsoft Azure

关于这个项目

注意:本教程可能已过时,请转到 这里 获取最新版本。

简介

Azure IoT 中心允许你“安全地连接、监控和管理数十亿设备以开发物联网 (IoT) 应用程序。”

设备可以使用以下协议连接到 Azure IoT 中心:HTTPS、AMPQ 和 MQTT - Azure 还为许多编程语言提供 SDK 来抽象这些协议。此外,您可以通过 MQTT 客户端连接到 IoT 中心。此页面包含有关 IoT 中心的 MQTT 支持的更多信息。

本教程将引导您了解如何使用 MQTT 客户端将 Arduino MKR NB 1500 板安全地连接到 Azure IoT 中心。 MQTT(消息队列遥测传输)是一种 M2M(机器对机器)连接协议,提供消息订阅和发布传输。

设备可以使用 SAS 令牌或 X.509 证书对 Azure IoT 中心进行身份验证,可在此处找到更多信息。在本教程中,我们将使用 X.509 证书对电路板进行身份验证。

每个具有板载连接的 Arduino MKR 板(包括 MKR NB 1500)都配备了 Microchip ATECC508A 或 ATECC608A 加密元件。该加密元素可用于安全地生成和存储 256 位 ECC(椭圆曲线加密)密钥。

软件和硬件设置

如果您的计算机上没有安装 Arduino IDE,请下载并安装它。

安装后,请确保安装了最新的“Arduino SAMD Boards”软件包。您可以通过打开 Arduino IDE 进行检查,然后打开 Tools -> Board:"..." -> Board Manager... 菜单项,然后搜索“Arduno SAMD”。在撰写本文时,1.6.20 是最新版本。

接下来,您需要使用 Arduino IDE 的库管理器安装将要使用的 Arduino 库。打开 Sketch -> Include Library -> Manage Libraries... 菜单,搜索并单独安装以下每个库:

  • MKRNB
  • ArduinoBearSSL
  • ArduinoECCX08
  • ArduinoMqttClient
  • Arduino 云提供商示例

现在将微型 SIM 卡插入 MKR NB 1500 板底部的插槽中,并将 3.7V 锂电池连接到 JST 连接器。然后用 micro USB 线将 MKR NB 1500 插入您的计算机,使用 Tools -> Port "..." 在 Arduino IDE 中选择串行端口 菜单,并在 Tools -> Board "..." 中选择 Arduino MKR NB 1500 菜单。

配置开发板并将其添加到 Azure IoT 中心

如上所述,Azure IoT 中心允许使用 MQTT 协议连接并使用 X.509 证书进行身份验证的设备。我们将使用草图在板上生成自签名 X.509 证书,然后将此证书的 SHA1 添加到 Azure IoT 中心门户。

可以使用 ArduinoECCX08 库中的示例草图生成自签名证书。使用 File -> Examples -> ArduinoECCX08 -> Tools -> ECCX08SelfSignedCert 在 Arduino IDE 中打开草图 .单击“上传”按钮以构建草图并将其上传到您的电路板,然后打开串行监视器。确保行尾配置设置为“Both NL &CR”。

如果未配置和锁定,此草图将提示您将 ATECC508A 永久配置为 ECC608A 加密元素。 注意:此锁定过程是永久且不可逆的,但需要使用加密元素 - 草图集的配置允许使用任何云提供商(或服务器)的 5 个私钥插槽,并且可以随时重新生成私钥对于任何 5 私人 键槽 (0 - 4) .板卡出厂时,加密元件处于未配置和解锁状态。

在此之后,系统将提示您输入自签名证书中包含的信息,包括证书的签发年、月、日和小时以及以年为单位的到期期限。在本教程中,我们将使用插槽 0 来生成和存储用于签署自签名证书的私钥(如果需要,插槽 1 到 4 可用于生成和存储其他私钥) - 然后插槽 8 将用于存储证书的颁发和到期日期及其签名。 注意: 由于私钥是在加密元素内部生成的,因此它永远不会离开设备并安全存储且无法读取。

复制生成的 SHA1 值(在此屏幕截图中“99d6d96fa55bdf08b4040a142a8d0d934bc9d12b ”)。我们将在后面的步骤中将其用作 Azure IoT 中心设备自签名证书的指纹。

现在我们有一个自签名证书和 SHA1 指纹来识别板,我们需要登录到 Azure IoT 中心门户并为其创建一个新设备。

1) 打开网络浏览器并转到portal.azure.com。

2) 如果您还没有 Azure 帐户,请单击“创建一个!”页面上的链接以创建帐户。否则,请输入您的电子邮件地址并单击“下一步”并按照登录过程进行操作。

3) 在左侧导航面板上点击“创建资源”。

4) 然后点击“物联网”和“IoT Hub”。

5) 系统将提示您选择订阅、资源组、区域和 IoT 中心名称。在下面的屏幕截图中,“免费试用”、“MKR”、“美国东部”和“ArduinoProjectHubTutorial”用作输入。点击“查看+创建”继续。

6) 将出现确认屏幕,点击“创建”。

7) 您将需要等待几分钟才能创建和部署 IoT 中心。

8) 部署完成后,将出现“转到资源”按钮,单击它。

9) 现在我们可以创建一个新的物联网设备,点击“探索”标题下的“物联网设备”。

10) 点击“添加”按钮添加新设备。

11) 输入设备名称,在“MyMKRNB1500”下方输入,然后单击“X.509 Self-Signed”选项卡。从 Arduino IDE 的串行监视器中为主要和次要指纹粘贴 SHA1。然后点击“保存”按钮来创建设备。

12) 您现在将在 IoT 设备页面上看到一个新条目。

将开发板连接到 Azure IoT 中心

1) 使用 File -> Examples -> 在 Arduino IDE 中打开 Azure IoT Hub NB 草图 Arduino 云提供商示例 -> AzureIoTHub-> Azure_IoT_Hub_NB。

2) 在 arduino_secrets.h 选项卡中,填写 SIM 卡的 pin(如果需要)。

// NB 设置#define SECRET_PINNUMBER "" 

3) 使用在 Azure IoT 中心门户中创建的终结点更新代理值。

// 填写您的 Azure IoT 中心代理的主机名#define SECRET_BROKER ".azure-devices.net" 

4) 使用您在 Azure IoT 中心门户中创建的设备名称更新设备 ID 值。

//填写设备id#define SECRET_DEVICE_ID "" 

5)将草图上传到您的电路板并打开串行监视器。开发板将尝试连接到蜂窝网络,如果成功,将尝试使用 MQTT 连接到 Azure IoT 中心。

在 Azure IoT Core 上与董事会互动

现在您的开发板已成功连接到 Azure IoT 中心,我们可以使用 Azure IoT 中心门户与其进行交互。草图向 devices/{deviceId}/messages/events/ 发送消息 主题每 5 秒并在 devices/{deviceId}/messages/devicebound/# 上侦听消息 主题。

在 Azure IoT 中心门户中,单击板的 IoT 设备表中的设备 ID 行。然后单击工具栏中的“向设备发送消息”按钮。

您现在可以在下面的屏幕截图中输入要发送到设备的消息正文“你好:) ”已输入。点击工具栏中的“发送消息”按钮发送消息。

板子收到消息后,Arduino IDE 中的串口监视器就会显示出来。

要查看板发送的消息:

1) 登录shell.azure.com(如果是第一次出现提示,请选择“Bash”)。

2) 安装 IoT 中心扩展:

az 扩展添加 --name azure-cli-iot-ext 

3)运行以下命令,替换 使用您的中心名称(如果提示依赖项更新,请输入 y):

az iot hub monitor-events --hub-name   

4) 您将看到打印到 shell 的消息:

结论

在本教程中,我们介绍了如何通过 Azure IoT 中心安全地使用 Arduino MKR NB 1500 板。自签名 X.509 证书用于使用 MQTT 协议对 Azure IoT 中心进行身份验证,ATECC508A 或 ATECC608A 存储与证书关联的私钥。 MQTT 消息发送到董事会和从董事会发送。

这只是开始,您可以将 Azure IoT 中心与 Azure 提供的许多其他服务一起使用!

代码

Github
https://github.com/arduino/ArduinoCloudProviderExamples

制造工艺

  1. 物联网如何连接工作场所
  2. Arduino 板面向工业物联网
  3. 开发工具包支持 Azure RTOS
  4. 基于 Raspberry PI 的 IoT 项目连接 DHT11 传感器
  5. 云中的物联网:Azure 与 AWS
  6. GPS 数据记录器、空间分析和 Azure IoT 中心。
  7. 使用物联网的心率监测器
  8. 使用物联网远程控制机械臂
  9. 基于物联网 (IoT) 的太阳能跟踪器
  10. 带有 Arduino、Yaler 和 IFTTT 的物联网仪表
  11. Azure IoT 游泳池
  12. 无代码物联网与 Arduino 和 Octoblu 上的触手!