通过这个很酷的项目,您可以确保您的植物始终处于良好状态,并实时的掌握植物的状态
在本篇文章中,我们将分为三部分实现,第一部分我们将获得有关我们植物状况的必要细节完成此本文后,您将掌握以下技能:
了解到如何使用模拟输出传感器。
了解如何在将数据上云。
了解传感器的工作原理。
启发
如今,我们可以通过为我们的工具和基本电子元件添加技术来提高工作、爱好、生活方式等的效率。将人工智能添加到我们关心的事物中,这是非常有吸引力和惊人想法。您可能已经看到房屋使用智能控制、灯光、空调和监督植物、花卉等。他们可以控制植物的水,时间和数量、照明、温度,以及许多其他重要和有效的参数。
目标
这将是一个很好的人工智能起点,进入这个令人兴奋的世界,并学习如何做到这一点。例如土壤水分、环境温度和植物可以接收的光量。监控这些数据可以帮助我们始终保持植物的良好状态。通过从传感器读取数据非常简单,然后将数据传输至云计算平台,你还在等什么?一起让我们的植物变得聪明吧!
所需组件
ESP8266
DS18B20
TSL25911
4.7k电阻
电容式土壤湿度传感器
杜邦线若干
Micro USB 线缆
热缩管(包裹线束)

微处理器
我们使用的`ESP8266` 它是一款由乐鑫 Espressif 公司制作的低成本的 Wi-Fi 芯片,具有完整的 TCP / IP 协议栈和微控制器功能。
它专为移动设备、可穿戴电子产品和物联网应用设计,功耗很低且价格非常低廉
温度传感器
`DS18B20`单线数字温度传感器,即“一线器件”,其具有独特的优点:
采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85° C 范围内,精度为 ± 0.5° C 。
在使用中不需要任何外围元件。
持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。
方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。
负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
温馨提示
注意:`DS18B20`模块的DQ引脚要加上拉电阻
环境光传感器
`TSL25911`数字环境光传感器高灵敏度,具有600M:1宽动态范围,可检测高达88000Lux的光强,I2C接口控制,低功耗,适合在各种光照条件下工作。采用TSL25911FN,可测量红外光及人类可见光(相比TSL2561测量范围更广)内置ADC,通过I2C接口可直接输出光强度,不易受噪声干扰,内置红外光敏二极管,即使在红外噪声干扰大的环境中也能较精确的测量具有中断输出,可编程上下限阈值。
电容式土壤湿度传感器
`电容式土壤湿度传感器`区别于市面上绝大部分的电阻式传感器,采用电容感应原理来检测土壤湿度。避免了电阻式传感器极易被腐蚀的问题,极大地延长了它的工作寿命。
电路图原理图

温馨提示
首先需要一个能够提供5V的电源,此外,这里使用的温度传感器需要必须要接上拉电阻.
硬件组成
接下来就是将所有的硬件焊接起来,为了连接这些电线最好是将元件与引脚分开。焊接好的电路板将被放置在潮湿的环境中,因此我们必须使所有连接和组件都防水。首先,我们用收缩管盖住它。然后用热熔胶填充接缝。这里需要注意的是温度传感器与环境光传感器的元件需要与外部接触,不能完全使用热缩管封闭我们可以使用绝缘气体进行单独的防水处理。现在将土壤传感器插入花盆中(注意不要触碰到植物根茎,它对植物有害的)插入后将周边土壤缝隙填充完整。到这一步我们的传感器已经准备就绪!接下来我们将准备将数据上传至AWS IoT。
AWS IoT Core简介
AWS IoT Core服务是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。AWS IoT Core 可以支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。借助 AWS IoT,您的应用程序可以随时跟踪所有设备并与其通信,即使这些设备未处于连接状态也不例外。您还可以轻松使用 AWS 和 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon SageMaker、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail、Amazon QuickSight 和 Alexa Voice Service 等 Amazon 服务来构建 IoT 应用程序,以便收集、处理和分析互联设备生成的数据并据之采取行动,而无需管理任何基础设施。
注册事物

为事物增加证书


将所有证书保存,后续将会用到。
创建策略

名称自定义输入,操作和资源我所填是iot:*和*,勾选允许,然后点击创建

主界面进入安全->证书->附加策略,勾选刚刚创建的策略,并激活证书。

获取终端节点
至此我们在AWS IoT 的操作已经完成了一部分,接下来我们将把代码我们使用`ESP8266WiFi`进行Wi-Fi连接、`PubSubClient`AWS Iot、`TSL2591`环境光、`DallasTemperature`温度。您应首先添加这些库,然后编译并将代码上传到ESP8266上。如果这是您第一次使用ESP8266开发板,请不要担心。
只需按以下步骤操作:
https://arduino.cc/en/software/根据您的操作系统软件。并按照安装说明安装IDE编辑器软件。
安装成功后运行IDE编辑器,然后在文本编辑器中复制以下代码。
导航至项目->加载库->增加 .zip库。选择ZIP库并添加库。
在`工具`中选择`开发版型号`,这里由于我们使用的不是标准版的Arduino,需要配置IDE。
添加 ESP8266 支持,安装完成以后,进入首选项(Preferences),找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息

之后点击工具 - 开发板 - 开发板管理器,进入开发板管理器界面:

找到 esp8266 并安装:

安装完成后,重启 Arduino IDE 软件。在工具 - 开发板选项中即会看到 ESP8266 开发板的选项:

编译并上传代码

打开串口监视器可以看到数据输出如下:

检查AWS IoT输出:

到现在我们的传感器已经成功将数据上传至AWS,接下来的事情将更加有意义。
处理实时数据流
数据处理架构图:

通过上一步的操作我们的数据已经在IoT上,现在需要对数据数据流进行实时收集、处理及分析数据流,我们使用到服务Amazon Kinesis:
创建Amazon Kinesis Data Streams

在Iot 规则我们要把数据发送至Kinesis Data Stream在以后的过程将会使用到数据流的数据

创建Amazon Kinesis Data Firehose,`源`我们选择Direct PUT 或其他源,然后下一步`目标`选择Amazon Elasticsearch,选择新建域,这个过程比较慢,可能需要5-10分钟,耐心等待完成,为了防止数据丢失,Kinesis Data Firehose 可以在将记录传输到 Elasticsearch 集群的过程中将这些记录备份到您的 S3 存储桶中,我们仅记录失败的记录,
创建Kinesis Data Analytics应用程序
这里我们使用`Apache Flink `下载并检查 Apache Flink 流式处理 Java 代码,在 GitHub 中提供了该Java 应用程序代码。
编译应用程序代码
要编译应用程序,请执行以下操作:
如果还没有 Java 和 Maven,请安装它们。
编译应用程序
提供的源代码依赖于 Java 1.8 中的库。如果使用开发环境,请确保项目的 Java 版本为 1.8。
上传 Apache Flink 流式处理 Java 代码
上传应用程序代码:
通过以下网打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/
在控制台中,选择存储桶或创建新的存储桶,然后选择 Upload (上传)。
在选择文件步骤中,选择添加文件。导航到您在上一步中创建的 `xxx.jar` 文件
您无需更改该对象的任何设置,因此,请选择 Upload (上传)。
创建并运行 Kinesis Data Analytics 应用程序
打开Kinesis Data Analytics 控制台 (https://console.amazonaws.cn/kinesisanalytics)。
在 Amazon Kinesis Data Analytics 控制面板上,选择 Create analytics application (创建分析应用程序)。
在 Kinesis Analytics – 创建应用程序页面上,提供应用程序详细信息,如下所示:
Application name (应用程序名称)
Description (描述)
Runtime (运行时),请选择 Apache Flink。
将版本下拉列表保留为 Apache Flink 1.11 (Recommended Version) (Apache Flink 1.11 (建议的版本))。
4. 对于访问权限,请选择 Create / update IAM role (创建/更新 IAM 角色) kinesis-analytics--cn-north-1。
5. 选择 Create application (创建应用程序)。
应用程序现已创建。您在下一步中启动应用程序。
至此本章节完成。


