我是靠谱客的博主 闪闪小蝴蝶,最近开发中收集的这篇文章主要介绍使用Arduino和IoT云平台构建IoT系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在本文中,我们将介绍如何构建一个IoT系统来监控土壤湿度并在土壤干燥时发送警报。 该项目使用物联网云平台来管理警报系统并存储来自传感器的数据。 众所周知,物联网是当今最重要的主题之一,它有望塑造我们的未来和我们的生活方式。 关于物联网的一个有趣方面是,我们可以尝试自己建造一个物联网系统。 市场上有几种原型板,我们可以在不花太多钱的情况下构建出色的物联网项目。

建立物联网系统项目概述

要构建此项目,我们需要:

  1. Arduino的MKR1000
  2. 水分传感器
  3. Carriots免费帐户(使用此链接创建免费帐户)
  4. 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的有用且有趣的平台。 该平台提供了多种集成服务,我们可以使用它们并将其集成到我们的物联网项目中。

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

  1. 监控数据系统
  2. 警报系统

作为监控数据系统,此物联网系统使用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系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部