安全连接 Arduino MKR NB 1500 到 Azure IoT Hub 完整指南
所需组件与材料
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino MKR NB 1500 | 1 | 内置 ATECC508A/ATECC608A 加密芯片 |
| Micro-USB 数据线 | 1 | 用于供电和编程 |
| 3.7V 锂电池 | 1 | 连接到 JST 接口 |
| Micro SIM 卡 | 1 | 需激活 NB-IoT 服务 |
所需软件与在线服务
- Arduino IDE - 最新版本
- Microsoft Azure 账户 - 创建 IoT Hub 服务
项目概述
本教程详细介绍如何使用 X.509 证书通过 MQTT 协议将 Arduino MKR NB 1500 安全连接到 Azure IoT Hub。MKR NB 1500 内置 Microchip ATECC508A 或 ATECC608A 加密元件,可在硬件层面安全生成和存储 256 位 ECC 私钥,私钥永不离开设备,确保最高级别的安全性。
软硬件环境准备
1. 安装 Arduino IDE 与板卡包
下载安装最新版 Arduino IDE。打开 工具 → 开发板: "..." → 开发板管理器...,搜索 "Arduino SAMD" 并安装最新版本(撰写时为 1.6.20)。
2. 安装必要库
通过 草图 → 包含库 → 管理库... 安装以下库:
- MKRNB
- ArduinoBearSSL
- ArduinoECCX08
- ArduinoMqttClient
- Arduino Cloud Provider Examples
3. 硬件连接
- 将 Micro SIM 卡插入板底卡槽
- 将 3.7V 锂电池连接到 JST 接口
- 用 Micro-USB 线连接板卡到电脑
- 在 IDE 中选择正确的串口和 "Arduino MKR NB 1500" 开发板
配置并添加设备到 Azure IoT Hub
1. 生成自签名 X.509 证书
打开示例:文件 → 示例 → ArduinoECCX08 → Tools → ECCX08SelfSignedCert,上传到开发板并打开串口监视器(设置换行为 "Both NL & CR")。
首次运行会提示永久配置并锁定加密元件(不可逆操作),配置后可使用 5 个私钥槽位(0-4),私钥可随时重新生成。按提示输入证书生效年月日时及有效期(年)。使用槽位 0 存储签名私钥,槽位 8 存储证书签名及有效期。
复制生成的 SHA1 指纹(如 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b),后续在 Azure 中需用到。
2. 创建 Azure IoT Hub 与设备
- 登录 Azure 门户,创建或登录账户
- 点击 "创建资源" → "物联网" → "IoT 中心"
- 填写订阅、资源组、区域、IoT 中心名称,点击 "查看 + 创建" → "创建"
- 等待部署完成,点击 "转到资源"
- 左侧 "探索" 下选择 "IoT 设备",点击 "添加"
- 输入设备 ID(如
MyMKRNB1500),选择 "X.509 自签名" 选项卡 - 将 SHA1 指纹分别粘贴到 "主指纹" 和 "辅助指纹",点击 "保存"
连接开发板到 Azure IoT Hub
- 打开示例:
文件 → 示例 → Arduino Cloud Provider Examples → AzureIoTHub → Azure_IoT_Hub_NB - 在
arduino_secrets.h标签页填入 SIM 卡 PIN 码(如无留空) - 修改
SECRET_BROKER为你的 IoT Hub 主机名:<中心名称>.azure-devices.net - 修改
SECRET_DEVICE_ID为 Azure 中创建的设备 ID - 上传代码,打开串口监视器观察连接过程
在 Azure IoT Hub 与设备交互
发送消息到设备
- 在 Azure 门户的 IoT 设备列表中点击你的设备
- 点击工具栏 "发送消息到设备"
- 输入消息内容(如 "Hello there :)"),点击发送
- Arduino IDE 串口监视器将显示接收到的消息
查看设备发送的遥测数据
- 登录 Azure Cloud Shell(首选 Bash)
- 安装 IoT 扩展:
az extension add --name azure-cli-iot-ext - 运行监控命令:
az iot hub monitor-events --hub-name <你的中心名称> - 终端将实时显示设备上报的消息(默认每 5 秒一条)
总结
本教程演示了利用 MKR NB 1500 板载加密芯片生成自签名 X.509 证书,通过 MQTT over TLS 安全接入 Azure IoT Hub 的完整流程。私钥始终安全存储在硬件加密元件中,永不暴露。成功连接后,可实现云端下发指令与设备上报遥测的双向通信,为进一步集成 Azure Functions、Stream Analytics、Time Series Insights 等服务奠定基础。
源代码仓库
GitHub - ArduinoCloudProviderExamples
制造工艺
- 树莓派 3 接 DHT11 传感器上传数据到 ThingsIo.ai 云平台
- 构建 GPS 数据记录器:结合 Azure IoT Hub 实现空间分析
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- 基于 Arduino MKR1000 与 ThingSpeak 的远程 IoT 机械臂控制系统
- 物联网双轴太阳能跟踪器:基于 Arduino 与 Cayenne 的智能能源管理
- 基于 Arduino、Yaler 与 IFTTT 构建 Web 化 IoT 仪表盘
- Azure IoT智能游泳池监控系统:温度感知与远程控制
- 无需编程:用 Arduino 和 Octoblu Tentacle 构建 IoT 设备
- Arduino 发布 Portenta H7:CES 首秀工业级 IoT 开发板
- Azure RTOS扩展主流嵌入式平台,新增开发套件支持
- 物联网与 5G 如何重塑现代职场
- Azure对决AWS:哪个云平台更胜物联网?