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

将 MKR GSM 1400 安全连接到 Google Cloud IoT Core

组件和用品

Arduino MKR GSM 1400
× 1
Micro-USB 转 USB 线缆(通用)
× 1
3.7V 锂电池
× 1
微型 SIM 卡
× 1
蜂窝 UF.L 天线
× 1

应用和在线服务

Arduino IDE
Google Cloud IoT Core

关于这个项目

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

简介

设备可以使用 HTTP 或 MQTT 连接到 GCP IoT Core。本教程将引导您了解如何使用 MQTT 客户端将 Arduino MKR GSM 1400 板安全地连接到 GCP IoT Core。 MQTT(消息队列遥测传输)是一种 M2M(机器对机器)连接协议,提供消息订阅和发布传输。

设备必须使用 JSON Web 令牌 (JWT) 进行身份验证,有关 JWT 的更多信息可以在 RFC 7519 中找到。GCP IoT Core 支持 RSA 和椭圆曲线算法来验证 JSON Web 签名 (JWS)。有关 JWS 的更多信息,请参阅 RFC 7515。

每个具有板载连接的 Arduino MKR 板,包括 MKR GSM 1400,都配备了 Microchip ATECC508A 或 ATECC608A 加密元件。此加密元素可用于安全地生成和存储 256 位 ECC(椭圆曲线加密)密钥。我们将使用存储在 crypto 元素中的私钥来签署 JWT。

软件和硬件设置

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

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

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

  • MKRGSM
  • Arduino_JSON
  • ArduinoECCX08(1.3.0 或更高版本)
  • ArduinoMqttClient(0.1.3 或更高版本)
  • Arduino Cloud Provider 示例(1.2.0 或更高版本)

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

配置开发板并将其添加到 GCP IoT Core

如上所述,GCP IoT Core 要求使用 MQTT 协议连接的设备使用 JWT 进行身份验证。我们将使用草图在板上生成私钥和公钥,然后将公钥的 PEM 值添加到 GCP IoT Core 控制台。

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

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

在此之后,系统将提示您选择要使用的插槽。在本教程中,我们将使用插槽 0 来生成和存储用于公钥的私钥(如果需要,插槽 1 到 4 可用于生成和存储其他私钥)。 注意: 由于私钥是在加密元素内部生成的,因此它永远不会离开设备并安全存储且无法读取。

复制生成的公钥值,在这个截图中的值为:

-----BEGIN PUBLIC KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4+DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzRe2kqGWFEb+QP4y1ggEgWIC -----QP4y1ggEgWIC--QP4Y7==sYP-----YG-QP4yV4YP--U-IC 

我们将在稍后将设备添加到 GCP IoT Core 时使用它。

现在我们有了 PEM 公钥,我们需要登录 GCP IoT Core 控制台并为其创建一个新设备。

1) 打开网络浏览器并转到 https://cloud.google.com/ 并单击“登录”链接以使用您的 Google ID 登录。

2) 登录后,单击“转到控制台”按钮。然后您将看到主仪表板。

3) 点击“CREATE”链接创建一个新项目。

4) 系统将提示您输入项目名称,我们将使用“MKR GCP 教程”作为名称。点击“创建”按钮继续。

5) 创建项目后,您将看到它的仪表板视图。

6) 现在点击左上角的菜单图标,滚动到“BIG DATA”标题并点击“IoT Core”链接。

7) 系统会提示您启用API,点击“启用API”按钮。

8) 启用 API 后,系统将提示您创建设备注册表。单击“创建设备注册表”按钮继续。

9) 然后你会看到一个表格。填写“注册ID”,选择地区。在下面的屏幕截图中,为注册表 ID 输入了“MKR_GCP_Tutorial”,并选择了“us-central1”作为区域。表格填写完毕后,点击“创建”按钮。

10) 然后您将看到注册表的详细信息。

11) 要添加新设备,请单击左侧导航栏上的“设备”链接。

12) 然后点击页面顶部标题中的“+ CREATE A DEVICE”。

13) 输入设备名称,在下面的屏幕截图中使用了“MyMKRGSM1400”。必须选择“ES256”作为“公钥格式”。将之前在板上生成的 PEM 公钥粘贴到“公钥值”文本区域。然后点击“创建”按钮。

将开发板连接到 GCP IoT Core

1) 使用 File -> Examples -> 在 Arduino IDE 中打开 GCP IoT Core GSM 草图 Arduino 云提供商示例 -> GoogleCloudPlatformIoTCore-> GCP_IoT_Core_GSM。

2) 在 arduino_secrets.h 选项卡中,填写 SIM 卡的密码(如果需要),以及您使用的移动运营商的 GPRS APN、用户名和密码。

// GSM 设置#define SECRET_PINNUMBER ""#define SECRET_GPRS_APN "GPRS_APN" // 替换您的 GPRS APN#define SECRET_GPRS_LOGIN "login" // 替换为您的 GPRS 登录名#define SECRET_GPRS_PASSWORD "password" // 替换为您的GPRS密码 

4) 然后更新project id、cloud region、registry id和device id值。

// 填写您的 Google Cloud Platform - IoT Core info#define SECRET_PROJECT_ID ""#define SECRET_CLOUD_REGION ""#define SECRET_REGISTRY_ID ""#define SECRET_DEVICE_ID "" 

可以通过单击 GCP 控制台顶部的菜单栏找到项目 id 值。对于上述步骤,值是:

#define SECRET_PROJECT_ID "mkr-gcp-tutorial"#define SECRET_CLOUD_REGION "us-central1"#define SECRET_REGISTRY_ID "MKR_GCP_Tutorial"#define SECRET_DEVICE_ID "MyMKRGSM1400" 

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

在 GCP IoT Core 上与董事会互动

现在您的开发板已成功连接到 GCP IoT Core,我们可以使用 GCP IoT Core 控制台与其进行交互。草图向 /devices/{deviceId}/state 发送消息 主题每 5 秒并在 /devices/{deviceId}/config 上侦听消息 主题和/devices/{deviceId}/commands/# 主题。

在 GCP IoT Core 控制台的设备页面中,点击“发送命令”按钮。

将出现一个模式对话框,您可以在其中输入要发送的消息。在下面的屏幕截图中“你好!”被输入。点击“发送命令”按钮发送消息。

电路板收到消息后,会将其打印在串行监视器上。

要查看板发送的消息,请单击“配置和状态历史记录”选项卡。

消息将以 Base64 编码格式显示,以查看值单击和列表中的条目并选择“文本”单选按钮。

在上面的屏幕截图中,董事会正在发送一个“hello 464488” 值,464488 值是 millis() 的结果 板上的功能。

结论

在本教程中,我们介绍了如何安全地使用带有 GCP IoT Core 的 Arduino MKR GSM 1400 板。已签名的 JWT 用于使用 MQTT 协议对 GCP IoT Core 进行身份验证,ATECC508A 或 ATECC608A 存储用于签署 JWT 的私钥。 MQTT 消息发送到董事会和从董事会发送。

这只是开始,您可以将 GCP IoT Core 与 GCP 提供的许多其他服务结合使用!

代码

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

制造工艺

  1. 凌华科技与 Google Cloud 合作提供物联网就绪解决方案
  2. 基于 Raspberry PI 的 IoT 项目连接 DHT11 传感器
  3. Windows 10 IoT Core 和 SHT15
  4. Windows 10 IoT Core for Raspberry Pi 3 Model B+
  5. Windows 10 IoT Core:语音控制机器人
  6. Portenta H7 双核调试
  7. Arduino - 拍照 - 上传到 Google Drive
  8. 使用物联网的心率监测器
  9. Arduino Cloud Sensor Tower
  10. 使用 Alexa 和 Arduino IoT Cloud 完全控制您的电视
  11. Azure IoT 游泳池
  12. 物联网网关:将事物连接到云的指南