【教程】搭建一款监测土壤水分的物联网系统

发布时间:2017-06-5 阅读量:1281 来源: 我爱方案网 作者: candytang

在这篇文章中,我们将介绍如何搭建一款监测土壤水分的物联网系统,用于在土壤干燥时发出警报,提醒用户。本项目使用了 IoT 云平台 (http://t.cn/RJGCFD1)来管理警报系统,同时存储来自传感器的数据。众所周知,物联网是当今热门话题之一,它将改变我们的未来及生活方式。如今我们可以自己动手搭建物联网系统,因为市场上已有一些原型板,这使得我们不用花费太多金钱及精力就可以着手物联网项目。


1、搭建 IoT 系统项目


构建这个项目,我们需要:

·  Arduino MKR1000;
·  湿度传感器;
·  IoT 云平台 Carriots 的免费账户(点击 http://t.cn/RSJBG7F 创建账户);

·  IFFT 账户(点击https://ifttt.com/discover了解更多)。


该项目的核心理念是搭建一个监测土壤水分的 IoT 系统,勘测土壤的湿度。Arduino MKR1000 控制传感器向 Carriots IoT 平台发送数据。Carriots 平台反过来存储来自传感器的数据,并检测存储的值何时达到阈值。下文我们会分享如何分析数据。现在可以假设 Carriots IoT 平台能够以某种方式调用一个 IFFT 服务,并向用户发送一个提醒的短消息。构建该 IoT 系统,我们可以探索如何使用 IoT 生态系统的组件。此外,该项目使用 LED 矩阵显示湿度土壤状态。接下来,我们看看具体怎么搭建。



2、检测传感器数据


第一步,我们必须读取传感器数据。该 IoT 项目使用了 YL-38 + YL-69 传感器,这个是可以插入要检查的土壤中的模拟传感器。那么如何将传感器连接到 Arduino,如下所示:

代码很简单。我们 从A1 引脚读取数据,然后计算湿度:

float moistureHum = analogRead(A1);

moistureHum = (1023 - moistureHum) * 100 /1023;


此外,还需将 Arduino MKR1000 连接到互联网,以便它可以发送数据:

#include "WiFi101.h"WiFiClient client;void setup() {
  Serial.begin(9600);
  Serial.print("Starting...");  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");    while (true);
  }
  connectToWifi();
}
connectToWifi() 包含:

void connectToWifi() {  while ( status != WL_CONNECTED) {   Serial.print("Attempting to connect to WPA SSID: ");   Serial.println(ssid);   // Connect to WPA/WPA2 network:
   status = WiFi.begin(ssid, pass);   // wait 10 seconds for connection:
  delay(10000);
 }
}
这样,如以上代码所述,我们可以管理显示湿度的 LED 矩阵。接下来就聚焦于物联网云平台上。

3、连接到 IoT 云平台


在将数据发送到云端之前,我们必须配置 Carriots 平台才能管理数据。 Carriots 使用了分层结构来对设备进行分组和管理。因此,在使用设备之前,必须创建此结构。用户一旦登录,先点击“Hierarchy”,再点击“ Project”,填写所需的数据,如下图:




下一步创建服务,填写所需的数据:




最后,创建组:




以上的步骤只需做一次。最后一步是配置设备。它表示我们用来发送数据的物理设备。该设备属于在最后一步创建的组,组属于服务,服务属于项目。配置步骤非常简单,如下图所示:




至此,配置步骤已完成。我们需将 Arduino 设备连接到 Carriots 并开始发送数据。上图中,Id.developer 这个参数很重要,它代表了将来自 Arduino 设备的数据绑定到 Carriots 设备的唯一标识符。另一个重要参数是 API 密钥。你可以在设置>API密钥菜单中找到它。为了发送数据,我们将这个函数添加到上面的代码中:

void sendData(float data) {  if (client.connect(server,80)) {
   Serial.println("Connected to the server....");
   String jsonData = "{\"protocol\":\"v2\",\"device\":\""+DEVICE_ID+                     "\",\"at\":\"now\",\"data\":{\"soil\":\""+
                     String(data)+"\"}}";  // Make a HTTP request
  client.println("POST /streams HTTP/1.1");  client.println("Host: api.carriots.com");  client.println("Accept: application/json");  client.println("User-Agent: Arduino-Carriots");  client.println("Content-Type: application/json");  client.print("carriots.apikey: ");  client.println(API_KEY);  client.print("Content-Length: ");  int thisLength = jsonData.length();  client.println(thisLength);  client.println("Connection: close");  client.println();  client.println(jsonData);
 }
}
注意该函数发送一个包含从传感器读取的数据的 JSON 有效载荷。必须在 loop()方法中调用此函数。运行这个程序,我们可以发现设备向 Carriots 发送数据,如下所示:




4、监控物联网传感器数据


接下来是监控数据。通常在物联网系统中,我们不仅希望从传感器获取数据,而且当这些值超出特定值时,我们希望监视这些信息以采取完善措施。本项目中,当土壤太过干燥时,我们要告知用户。虽然 Carriots 拥有内置的电子邮件系统,但我们更倾向于与 Carriots 集成的另一个有用的平台,即 IFFT。该平台提供了多种集成服务。

为了提醒用户,我们需要两个组件:

·  监控数据系统;

·  警报系统。


作为监控数据系统,本 IoT 系统项目使用 Carriots 监听器。监听是分析输入值及应用特定规则的一个过程。当规则被验证时,它就会调用一个脚本。对于 Carriots 的有趣方面是,我们可以使用 Groovy 作为脚本语言来调用外部服务。

警报系统建立在 IFFT 上。在完成 Carriots 的任务之前,配置 IFFT 非常有必要。如上所述,当湿度达到阈值时,我们想要发送一条短消息提醒用户。为了实现这个功能,需要在 IFFT 中配置一个短消息服务。在此之前,我们需要一个免费的帐户。那么首先我们创建一个新的 Applet:




点击“+”添加服务并搜索“Maker”服务:



选择“Maker webhooks”来启用 IoT Maker。接下来配置 maker 服务,并填入触发发送消息进程的事件名称:






最后,启动发送消息服务,配置所有必需的参数,如目标号码和消息体:



现在,我们来看一下 Carriots 平台的监听器。首先创建一个新的监听器,调用与之前刚创建的 Applet 相关的 URL。当监听器调用 URL 时,IFFT 发送一条短消息。配置监听器流程如下图所示:




最后一步是配置表达式。我们可以使用 Groovy 写这个案例。

综上,我们可以验证当土壤水分低于阈值水平时,手机上是否会收到一条短信。

总结


通过本文,相信大家已经学会了如何使用传感器、Arduino 和 IoT 云平台构建 IoT 系统。也正如本文所述,我们可以集成现有的平台和服务来构建一款 IoT 系统。更多智能硬件相关行业交流、技术讨论请加QQ群:642391572,敲门暗号:我爱方案网。
相关资讯
三星芯片战略大调整:2nm工艺突围与市场博弈新动向——从Exynos 2500折戟到2600的背水一战

2025年5月,三星电子因放弃自研Exynos 2500芯片导致4亿美元亏损的消息引发行业震动。这款原计划搭载于Galaxy S25系列的3nm旗舰芯片,因良率不足20%而被迫搁置,最终全系改用高通骁龙8 Elite,导致三星System LSI部门研发投入血本无归。这一事件暴露了三星在先进制程上的技术瓶颈,也迫使其重新调整芯片战略:押注2nm工艺的Exynos 2600,试图通过Galaxy S26系列实现技术突围。

国产突围!川土微电子CA-IF1044AX-Q1 CAN收发器:全链路自主化与EMC性能双突破

随着汽车智能化、电动化浪潮加速,CAN收发器作为车载网络的核心通信接口,其可靠性与安全性成为产业链关注焦点。然而,国际局势的不确定性使得供应链自主可控需求迫在眉睫。川土微电子推出的CA-IF1044AX-Q1 CAN收发器,实现了从设计、晶圆制造到封测的全链条国产化,并通过欧洲权威机构IBEE/FTZ-Zwickau的EMC认证,成为兼具安全性与高性能的国产车规级解决方案。

“中国芯”逆袭时刻:新唐携7大新品打造全场景AIoT解决方案矩阵

在万物互联与智能化浪潮席卷全球的今天,新唐科技以颠覆性创新奏响行业强音。4月25日,这场历时10天、横跨七城的科技盛宴在深圳迎来高潮,以"创新驱动AI、新能源与车用科技"为主题,汇聚全球顶尖行业领袖,首次公开七大核心产品矩阵,展现从芯片设计到智能生态的全链条创新能力,为半导体产业转型升级注入新动能。

半导体先进制程技术博弈:台积电、英特尔与三星的差异化路径

在2025年北美技术研讨会上,台积电正式宣布其A14(1.4nm)工艺将于2028年量产,并明确表示无需依赖ASML最新一代High NA EUV光刻机。这一决策背后,折射出全球半导体巨头在技术路线、成本控制和市场竞争中的深层博弈。

嵌入式主板EMB-3128:轻量级边缘计算的工业级解决方案

随着AIoT技术的快速落地,智能设备对高性能、低功耗嵌入式硬件的需求持续攀升。华北工控推出的EMB-3128嵌入式主板,搭载Intel® Alder Lake-N系列及Core™ i3-N305处理器,以高能效比设计、工业级可靠性及丰富的接口配置,成为轻量级边缘AI计算的理想选择。该主板支持DDR5内存、多模态扩展接口及宽温运行环境,可广泛应用于智能家居、工业自动化、智慧零售等场景,助力产业智能化升级。