概述
在本文中,我们将介绍如何构建一个IoT系统来监控土壤湿度并在土壤干燥时发送警报。 该项目使用物联网云平台来管理警报系统并存储来自传感器的数据。 众所周知,物联网是当今最重要的主题之一,它有望塑造我们的未来和我们的生活方式。 关于物联网的一个有趣方面是,我们可以尝试自己建造一个物联网系统。 市场上有几种原型板,我们可以在不花太多钱的情况下构建出色的物联网项目。
建立物联网系统项目概述
要构建此项目,我们需要:
- Arduino的MKR1000
- 水分传感器
- Carriots免费帐户(使用此链接创建免费帐户)
- IFFT帐户(要了解更多,请点击此处 )
该项目背后的想法是构建一个物联网系统,该系统可以在土壤干燥时监控土壤湿度。 Arduino MKR1000控制传感器将数据发送到Carriots IoT平台。 该平台依次存储来自传感器的数据,并检测何时存储的值低于阈值水平。 稍后我们将看到如何分析数据。 到现在为止,我们可以假定Carriots IoT平台能够以某种方式调用IFFT服务,该服务将向用户发送一条短消息以提醒他。 构建此物联网系统,我们可以探索如何使用物联网生态系统的多个组件。 此外,该项目使用LED矩阵显示湿度土壤状态。 让我们看看如何构建它。
从传感器检索数据
在第一步中,我们必须读取传感器数据。 该物联网项目使用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矩阵,如本文所附代码中所述。 现在,我们可以将注意力集中在物联网云平台上。
连接到物联网云平台
在将数据发送到云之前,我们必须配置我们的Carriots平台以管理数据。 Carriots使用分层结构来对设备进行分组和管理。 因此,我们必须在使用设备之前创建此结构。 在此结构的顶部,有Project 。 登录后,必须单击“ 层次结构” ,然后单击“ 项目”以填充所需的数据:
下一步是创建填充所需数据的服务:
最后,您必须创建组:
步骤非常快,您只需执行一次。 最后一步是配置我们的设备。 它代表我们用来发送数据的物理设备。 该设备属于在最后一步中创建的组,而该组又属于服务。 该服务属于项目。 如下图所示,配置步骤非常简单:
就这样。 配置步骤完成。 我们必须将Arduino设备连接到Carriots并开始发送数据。 在此步骤中,上图所示的开发人员ID非常重要,它表示我们将用于将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,如下所示:
监控物联网传感器数据
下一步是监视数据。 通常,在物联网系统中,我们不仅对从传感器获取数据感兴趣,而且还希望监视这些信息以在值超出特定间隔时采取纠正措施。 我们可以采取几种措施,在本例中,我们想通知用户提醒他/她。 即使Carriots具有内置的电子邮件系统,我们还是希望与Carriots集成另一个称为IFFT的有用且有趣的平台。 该平台提供了多种集成服务,我们可以使用它们并将其集成到我们的物联网项目中。
为了提醒用户,我们需要两个组件:
- 监控数据系统
- 警报系统
作为监控数据系统,此物联网系统使用Carriots侦听器。 侦听器是分析输入值并应用特定规则的过程。 验证规则后,它将调用脚本。 关于Carriots的一个有趣的方面是,我们可以使用Groovy作为脚本语言来调用外部服务。
警报系统基于IFFT。 在完成有关Carriots的工作之前,配置IFFT很有用。 如前所述,我们希望在湿度达到阈值水平时发送一条短消息。 为了实现它,我们在IFFT中配置了一个短消息服务。 必须具有一个免费帐户才能完成此任务。 第一步,让我们创建一个新的Applet:
现在,单击加号以添加服务并搜索Maker服务:
选择Maker webhooks以启用IoT maker。 现在,我们必须配置maker服务,添加触发触发发送消息过程的事件名称:
最后,让我们启用发送消息服务,配置所有必需的参数,例如目标号码和消息正文:
就这样。 现在,我们可以将注意力集中在Carriots平台上的侦听器上。 让我们创建一个新的侦听器,该侦听器调用与刚才创建的applet相关的URL。 当侦听器调用URL时,IFFT将发送一条短消息。 下图显示了如何配置侦听器:
最后一步是配置表达式。 我们可以使用此示例中描述的Groovy编写它。
就是这样,现在您可以测试项目,验证当土壤湿度低于阈值水平时,我们将在手机上收到一条短消息。
摘要
在本文的最后,您已经学习了如何使用传感器,arduino和IoT云平台构建IoT系统。 正如您在本教程中注意到的那样,我们可以集成现有平台和服务来构建IoT系统。
翻译自: https://www.javacodegeeks.com/2017/05/building-iot-system-using-arduino-iot-cloud-platform.html
最后
以上就是闪闪小蝴蝶为你收集整理的使用Arduino和IoT云平台构建IoT系统的全部内容,希望文章能够帮你解决使用Arduino和IoT云平台构建IoT系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复