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

MKR1000 接入 Azure IoT:DHT22 温湿度实时上云监控

项目目标

利用 Arduino MKR1000 内置 Wi-Fi 与 TLS 支持,读取 DHT22 温湿度数据,通过 HTTPS 直接推送至 Azure Event Hubs 或 IoT Hub,并利用 Microsoft “Connect the Dots” 开源项目在 Web 仪表板实时可视化。无需额外网关,单板直连云端。

硬件准备

接线图

开发环境配置

  1. Arduino IDE → 开发板管理器安装 Arduino SAMD Boards(含 MKR1000)。
  2. 库管理器安装:WiFi101、DHT sensor library (Adafruit)、ArduinoJson、RTCZero。

关键步骤:上传 TLS 根证书

MKR1000 内存有限,需手动烧录目标服务器的 CA 证书:

  1. 上传 WiFi101 Firmware Updater** 示例草图到板子。
  2. PC 运行 winc1500-uploader-gui.exe(下载)。
  3. 输入目标域名:ctd-ns.servicebus.windows.net(公共 Event Hub)或你自己的 <namespace>.servicebus.windows.net / <iot-hub>.azure-devices.net。
  4. 选择 COM 口,点击 “Update Certificates”。

方案一:使用公共 Connect-the-Dots Event Hub(快速体验)

  1. 克隆/下载 MKR1000-Azure 仓库。
  2. 修改 ssid、password 为你的 Wi-Fi 凭据。
  3. 上传草图,打开串口监视器确认 “HTTP/1.1 201” 成功。
  4. 浏览器打开 https://connectthedotsdx.azurewebsites.net/ 即可看到混合数据流(建议修改 displayname/guid 区分设备)。

方案二:创建专属 Azure Event Hub(生产推荐)

前置条件

  • Visual Studio 2015 Community + Azure 订阅(免费试用可用)。
  • 克隆 connectthedots 仓库。

自动化部署 Azure 资源

  1. VS 打开 AzurePrep.sln,以 Release 模式运行 AzurePrep 项目。
  2. 登录 Azure,按提示命名资源(建议 ctd<初缩写>,如 ctddc)。
  3. 运行 CreateWebConfig 目标生成 web.config,复制到 ConnectTheDotsWebSite 项目并加入解决方案。
  4. 运行网站项目(Edge/Chrome),确认站点可访问。

生成 SAS 密钥并配置设备端

  1. Azure 旧门户 → Event Hubs → ehdevices → Configure → 复制 D1 主键。
  2. 使用 Event Hubs Signature Generator:
    Namespace: ctddc-ns, Hub: ehdevices, Publisher/Sender Key: D1, TTL: 525600 分钟。粘贴主键生成签名。
  3. 修改草图:hostname[] = ctddc-ns.servicebus.windows.net,authSAS[] = 生成的完整 SAS 字符串。
  4. 上传草图,串口监视器验证,刷新网站查看专属数据。

方案三:迁移至 Azure IoT Hub(双向通信)

资源创建

  1. Azure 门户新建 IoT Hub(免费层 F1 即可)。
  2. 下载 Device Explorer (SetupDeviceExplorer.msi)。
  3. 复制 IoT Hub 连接字符串(iothubowner 主键)到 Device Explorer,点击 Update。
  4. Management 标签创建设备 D1,生成 SAS Token(TTL 1 年)。

代码修改要点

char hostname[] = "your-hub.azure-devices.net";
char authSAS[] = "SharedAccessSignature sr=...&sig=...&se=..."; // 仅 SAS 部分
String deviceName = "D1";
String uri = "/devices/" + deviceName + "/messages/events?api-version=2016-02-03";
// 响应码判断由 201 改为 204
if (response.startsWith("HTTP/1.1 204")) { /* success */ }

验证

Device Explorer → Data 标签 → Monitor,即可看到设备上报的 JSON 消息。

核心代码片段(草图主循环)

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) return;

  String json = createJSON(t, h); // {"DeviceId":"D1","Temperature":23.4,"Humidity":56.7,...}
  if (sendEvent(json)) {
    Serial.println("Sent OK");
  } else {
    Serial.println("Send failed");
  }
  delay(5000); // 5 秒上报一次
}

bool sendEvent(String payload) {
  // HTTPS POST 到 Event Hub / IoT Hub
  // 使用 WiFiSSLClient 建立 TLS 连接
  // 发送 HTTP 头 + SAS Authorization + JSON body
  // 解析响应状态行
}

成本控制与清理

Azure 资源按量计费,实验结束请运行 ClearResources 项目或手动删除资源组,避免持续扣费。免费层 Event Hub/IoT Hub 有额度限制,生产环境请评估定价。

参考资源汇总

制造工艺

  1. 树莓派自动化气雾栽培系统:湿度传感器智能控制
  2. 验证并校准湿度传感器以实现精准测量
  3. DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
  4. Arduino + DHT11 + 以太网盾板温湿度数据记录仪
  5. Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
  6. Arduino Cloud 传感器塔:温度、动作与气体监测
  7. BME280 环境数据实时显示于 Nextion 触摸屏——Visuino 图形化开发
  8. Blynk + Arduino 读取 DHT11 温湿度数据教程
  9. 分步指南:将 YL-39/YL-69 土壤湿度传感器连接到 Arduino UNO
  10. Arduino传感器:类型、应用与实战项目
  11. 湿度传感器:工作原理与关键应用
  12. DHT11传感器:工作原理与关键应用