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

智能植物物联网:Arduino 与 Azure 构建连接温室

元件与材料

Seeed Base Shield V2×1
Seeed Grove - 继电器×1
Seeed Grove - 温度传感器×1
Arduino UNO×1
Helium Starter Kit (旧版)×1

应用与在线服务

项目简介

更新于 2019 中美青年创客大赛。园艺虽有趣,但许多人觉得麻烦。本文指导构建智能 IoT 植物监测系统:传感器数据经 Helium 网络上传 Azure IoT Hub,通过 Azure Functions 存入 Azure SQL,同时支持自动/远程控制浇水。整个流程无服务器,仅需 Azure Function 和 Arduino 代码。

步骤 1:准备元件

步骤 2:搭建 Arduino + Helium + 传感器

在 Helium Network Dashboard 注册 Atom 和 Element(作为接入点)。连接所有传感器与 Helium Atom,接线完成后运行测试代码验证通信。代码每 60 秒采集一次湿度、光照、温度、湿度,通过 Helium 通道发送至云端,OLED 显示实时数值。土壤湿度低于阈值 (100) 自动触发继电器驱动水泵 5 秒。水泵需 12V,从电源适配器引出两线接继电器控制。

步骤 3:配置 Helium Hub 与 Azure IoT Hub

在 Azure 创建 IoT Hub (标准层或免费层),获取共享访问策略连接字符串 (RegistryReadWrite)。在 Helium Dashboard 创建连接,粘贴连接字符串自动配置 MQTT 主题。通过 helium-cli 测试从 Atom 发送消息到 Azure。

步骤 4:创建 Azure SQL 数据库

创建 SQL 数据库 (Basic 层),建表 SmartPlant 存储温度、湿度、土壤湿度、光照、时间戳。获取连接字符串备用。

步骤 5:创建 Azure Function App

新建 Function App (消费计划),添加应用设置 sqldb_connection 存放 SQL 连接串。创建 Event Hub 触发函数 (C#),解析 IoT Hub 消息 (Moisture, UVLight, Temperature, Humidity) 插入 SQL 表。再创建 HTTP 触发函数 (GET /api/smartplant) 查询最新 100 条记录返回 JSON,供前端调用。

步骤 6:前端 UI

开发简单 Android App 调用 HTTP API 显示四传感器数值,并可远程触发浇水。数据每 60 秒更新。Arduino 外壳封装后置于植物旁。

额外:Alexa 集成

可扩展语音控制查询植物状态。

代码

Arduino 主程序

#include "Arduino.h"
#include "Board.h"
#include "Helium.h"
#include "HeliumUtil.h"
#include 
#include "Wire.h"
#include 
#include 
#define CHANNEL_NAME "Azure IoT App"
Helium helium(&atom_serial);
Channel channel(&helium);
int relay = 5;
void setDisplayToOriginalState() { SeeedGrayOled.init(SSD1327); }
void setup() {
  Serial.begin(9600); pinMode(relay, OUTPUT); delay(150);
  TH02.begin(); delay(100);
  Serial.println("TH02_dev is available.\n");
  helium.begin(HELIUM_BAUD_RATE);
  helium_connect(&helium);
  channel_create(&channel, CHANNEL_NAME);
  Wire.begin();
}
void loop() {
  int moisture=0, uvlight=0;
  for(int i=0;i<32;i++) moisture+=analogRead(A0);
  for(int i=0;i<32;i++) uvlight+=analogRead(A1);
  float temper=TH02.ReadTemperature();
  float humidity=TH02.ReadHumidity();
  String dataString="Moisture="+String(moisture)+"&UVLight="+String(uvlight)+"&Temperature="+String(temper)+"&Humidity="+String(humidity);
  char data[dataString.length()]; dataString.toCharArray(data, dataString.length());
  channel_send(&channel, CHANNEL_NAME, data, strlen(data));
  Serial.println(data);
  setDisplayToOriginalState();
  SeeedGrayOled.clearDisplay(); SeeedGrayOled.setNormalDisplay(); SeeedGrayOled.setVerticalMode();
  SeeedGrayOled.setTextXY(0,0); SeeedGrayOled.putString(("Moisture: "+String(moisture)).c_str());
  SeeedGrayOled.setTextXY(2,0); SeeedGrayOled.putString(("UVLight: "+String(uvlight)).c_str());
  SeeedGrayOled.setTextXY(4,0); SeeedGrayOled.putString((String(temper)+" C").c_str());
  SeeedGrayOled.setTextXY(6,0); SeeedGrayOled.putString(("Humid: "+String(humidity)).c_str());
  if(moisture<100){ digitalWrite(relay,HIGH); delay(5000); digitalWrite(relay,LOW); }
  delay(60000);
}

Azure Functions 代码片段

完整代码请访问项目仓库:GitHub

原理图

Helium 架构将 IoT 设备直接连接到 Azure IoT Hub:
智能植物物联网:Arduino 与 Azure 构建连接温室

制造工艺

  1. 智能垃圾桶:基于蜂窝物联网的自动化废物管理解决方案
  2. 智能调酒师:树莓派驱动的自动鸡尾酒机
  3. 革新农业:物联网如何驱动效率与可持续发展
  4. 恶意广告威胁智能家居物联网:隐藏广告可攻陷设备
  5. 智慧数据:导航物联网与大数据的下一个前沿
  6. GE Appliances在阿拉巴马州迪凯特揭幕智能工业4.0冰箱工厂
  7. 未来智慧医院:智能软件的关键角色
  8. 智慧城市如何利用物联网、微服务与仪表盘实现高效资产管理
  9. 最大化物联网投资回报:从盲区到自动化运营的四阶段进阶
  10. 基于稳健物联网生态构建优化智能仓储
  11. 保护智能设备:物联网安全最佳实践指南
  12. 探索前沿物联网创新与现实应用