基于物联网的智能灌溉系统,使用NodeMCU ESP8266和Adafruit IO
扫描二维码
随时随地手机看文章
由于不可预测的天气条件和缺水,世界各地的农民在种植作物方面面临很多困难。传统的灌溉系统耗水量大,供水不均匀。这会影响农作物的质量。
许多农民已经开始使用温室农业和智能灌溉系统。新兴的物联网技术和传感器被用于开发灌溉系统,该系统可以根据湿度值、温度等气候条件自动供水。
在这个项目中,我们正在使用NodeMCU,湿度传感器和LDR构建一个基于物联网的智能灌溉系统。当湿度值低于特定值时,它会自动向植物浇水。它还会将湿度数据发送到Adafruit IO服务器,以跟踪土地状况。Adafruit IO仪表板也将有一些按钮手动打开/关闭电磁阀和灯。本工程采用电磁阀向厂区供水。您可以根据工厂的要求更改电磁阀开启的湿度值。这里我们使用的是NodeMCU ESP8666,这是一个非常流行的基于物联网项目的Wi-Fi模块。
组件的要求
硬件
•NodeMCU ESP8266
•土壤湿度传感器模块
•LDR
•10 k锅
•电磁阀
•继电器模块
•LED
在线服务
•Adafruit IO
基于物联网的智能灌溉系统电路图
使用物联网的智能灌溉系统电路图如下:
在本电路中,土壤传感器连接到NodeMCU的A0引脚上。LDR传感器接D1引脚,Relay模块接NodeMCU的D0引脚。电磁阀连接到继电器模块上,因此每当NodeMCU产生触发器时,它就会洒水。
以下是基于物联网的智能灌溉系统的设置:
Adafruit IO设置
Adafruit IO是一个开放的数据平台,允许您在云中聚合、可视化和分析实时数据。使用Adafruit IO,您可以在互联网上上传,显示和监控数据,并使您的项目启用物联网。您可以使用Adafruit IO控制电机,读取传感器数据,并通过互联网制作酷的物联网应用程序。为了测试和尝试,有一些限制,Adafruit IO是免费使用的。我们以前也在树莓派上使用过Adafruit IO。
1. 要使用Adafruit IO,首先,您必须在Adafruit IO上创建一个帐户。要做到这一点,请访问Adafruit IO网站,点击屏幕右上方的“免费开始”。
2. 在完成帐户创建过程后,登录您的帐户并单击右上角的“AIO密钥”以获取您的帐户用户名和AIO密钥。
当你点击“AIO密钥”,一个窗口将弹出你的Adafruit IO AIO密钥和用户名。复制此密钥和用户名,稍后将在代码中用到。
3. 现在,在此之后,您需要创建一个提要。要创建提要,请单击“feed”。然后点击“Actions”,然后点击“Create a New Feed”,如下图所示。
4. 在此之后,将打开一个新窗口来输入提要的名称和描述。书写描述是可选的。
5. 点击“创建”,然后;您将被重定向到新创建的提要。
在这个项目中,我们总共创建了三个馈源——电磁阀、湿度数据和LED。
创建提要之后,现在创建Adafruit IO仪表板,以便在单个页面上显示所有这些提要。要创建仪表板,请单击dashboard选项,然后单击“Action”,然后单击“create a New dashboard”。
在下一个窗口中,输入仪表板的名称并单击“Create”。
6. 随着仪表板的创建,我们将向仪表板添加提要。要添加提要,请单击右上角的“+”。
首先,我们将添加两个切换按钮块来控制LED和电磁阀。然后是一个用于湿度数据的图形块。
要在仪表板上添加按钮,请单击Toggle块。
在下一个窗口中,它将要求您选择提要,因此单击LED提要。
之后,按照相同的步骤为电磁阀创建另一个Toggle按钮块。
7. 现在要在仪表板上添加图形,请遵循相同的过程,但不是创建RESET块,而是为图形视图创建折线图块。
在创建了所有的块之后,我的仪表板看起来是这样的:
您可以通过单击设置按钮来编辑仪表板。
智能灌溉系统的NodeMCU编程
要对NodeMCU进行智能灌溉系统编程,请将NodeMCU用Micro USB电缆连接到笔记本电脑上,然后打开Arduino IDE。在这个程序中,只有Adafruit MQTT库被用作外部库。你可在此下载资料库:
Adafruit_MQTT.h
要用Arduino IDE编程NodeMCU,请进入File - > preferences - >Settings。
在“附加板管理器URL”字段中输入,然后单击“确定”。
现在转到Tools > Board > Boards Manager。
在板管理器窗口中,在搜索框中输入esp, esp8266将在下面列出。现在选择最新版本的电路板并单击install。
安装完成后,进入“工具>单板> NodeMCU 1.0(ESP-12E模块)”。现在您可以使用Arduino IDE对NodeMCU进行编程。
完整的代码在本教程的末尾给出,在这里我们一步一步地解释程序,以便您可以轻松地理解这段代码的工作。
通过包含所有必需的库开始编写代码。
然后包括从Adafruit IO服务器复制的WiFi和Adafruit IO凭据。这些将包括MQTT服务器、端口号、用户名和AIO密钥
设置你要发布内容的提要。这里,AgricultureData是提要名称。
设置你订阅的订阅源。这里的“LED”和“Pump”是feed的名称。
从A0引脚读取LDR读数并比较读数。如果读数小于200,则打开LED,否则关闭LED。
从传感器读取湿度读数,并将读数与所需值进行比较。如果低于所需值,则打开水泵,否则关闭水泵。
每5秒将湿度数据发布到Adafruit IO feed。
阅读订阅的提要。如果字符串是‘ OFF ’,然后打开LED/水泵,如果字符串是‘ on ’,然后关闭LED/水泵。
最后,这是水分数据在Adafruit IO仪表板上的样子:
这就是基于NodeMCU的物联网智能灌溉系统的工作原理。你可以扩展这个项目,使用更多的传感器来测量其他参数,如湿度、压力、温度等。我们之前已经建立了一个基于ESP8266的气象站来读取所有这些值。
本文编译自iotdesignpro