如何使用物联网构建一个智能农业系统安全设备/系统

这个电路并不难。这里我们使用了4个传感器,即DHT11,DS18B20传感器探头,LDR和土壤湿度传感器,一个12VLED灯条,12V水泵,7805稳压器,以及两个TP122晶体管来控制LED灯条和水泵。7805用于从12V适配器获得稳压5V,DHT11传感器用于获取温度和湿度读数。DS18B20传感器探头用于获取土壤温度,土壤湿度传感器用于读取土壤湿度,以便自动打开/关闭水泵。

AdafruitIO设置

要使用AdafruitIO,首先,您必须在AdafruitIO上创建一个帐户。为此,请访问AdafruitIO网站并单击屏幕右上角的“免费入门”。

当您“AIO密钥”时,将弹出一个窗口,其中包含您的AdafruitIOAIO密钥和用户名。复制此密钥和用户名。您稍后将在代码中使用它。

现在,在此之后,您需要创建一个提要。要创建提要,请单击“提要”。然后单击“操作”,您将看到一些选项,从中单击“创建新提要”。

之后,将打开一个新窗口,您需要在其中输入提要的名称和描述。书写描述是可选的。

点击“创建”;在此之后,您将被重定向到新创建的提要。

对于这个项目,我们总共为水泵、LED灯条、湿度数据、温度、湿度、天气数据和土壤温度创建了8个源。按照与上述相同的过程创建其余的提要。

创建提要后,现在我们将创建一个AdafruitIO仪表板,以在单个页面上显示所有这些提要。为此,首先创建一个仪表板,然后在该仪表板中添加所有这些提要。

要创建仪表板,请单击仪表板选项,然后单击“操作”,然后单击“创建新仪表板”。

在下一个窗口中,输入仪表板的名称,然后单击“创建”。

创建仪表板后,现在我们将块添加到仪表板。要添加块,请单击右上角的“齿轮”,然后单击“创建新块”。

首先,我们将添加两个切换按钮块来手动打开/关闭LED灯条和水泵,然后添加四个滑块来显示温度、湿度、土壤温度和水分值,最后,两个图表块来显示最近30天的水分和土壤温度数据。要在仪表板上添加按钮,请单击Toggle块。

在下一个窗口中,它将要求您选择提要,因此单击LED提要。

在此之后,按照相同的过程添加其余的块。添加所有块后,我的仪表板如下所示:

您可以通过单击设置按钮来编辑仪表板。

如前所述,我们还将在AdafruitIO仪表板上显示天气预报,为此,我们将使用OpenWeatherMapAPI请求所选位置的当天天气预报。OpenWeatherMap提供了高度可识别的天气产品,使处理天气数据变得更加容易。可以通过遵循行业标准并与不同类型的企业系统兼容的快速、可靠的API访问这些数据。OpenWeatherMap提供付费和免费计划,在这个项目中,我们将使用它的免费计划来获取天气预报数据。

现在我们将使用5天/3小时的预测数据API。此API包含间隔3小时的天气预报数据,并且预报数据以JSON或XML格式提供。要获取您选择的位置的天气数据,请输入以下URL,将大括号中的部分替换为城市和您的唯一API密钥:

例如,我们的APIURL将是:

将此URL粘贴到浏览器的搜索栏中,它应该会为您提供一堆与您当地的天气预报信息相对应的信息。

然后在下一部分中,粘贴JSON数据。

然后在最后一步,您将获得读取天气预报数据的代码。我们不会使用助手生成的完整代码。

将库安装到ArduinoIDE后,通过包含所需的库文件来启动代码。

#include#include<达拉斯温度.h>#include#include"DHT.h"#include"Adafruit_MQTT.h"#include"Adafruit_MQTT_Client.h"#include

constchar*ssid="Wi-Fi名称";constchar*pass="Wi-Fi密码";#defineMQTT_SERV"io.adafruit.com"#defineMQTT_PORT1883#defineMQTT_NAME"AdafruitIO用户名"#defineMQTT_PASS"AIO密钥"

然后设置用于存储传感器数据和控制LED和水泵的AdafruitIO馈送。在我的例子中,我定义了四个馈送来存储不同的传感器数据,即:土壤温度、温度、湿度和湿度,一个用于显示天气数据的馈送和两个用于控制LED灯条和水泵的馈送。

现在在setup()函数中,以9600的波特率初始化串行监视器以进行调试。同时使用begin()函数初始化DHT传感器和DS18B20传感器。

无效设置(){序列号.开始(9600);延迟(10);dht.begin();传感器.开始();………………..}

现在是voidloop()。这是执行所有任务的地方。因此,在这个循环中,首先我们将从OpenWeatherMapAPI获取天气预报数据,然后我们将读取传感器数据,最后一步,我们将在AdafruitIO仪表板上发布所有这些数据。

阅读天气预报:

读取传感器数据:

现在获取天气数据后,接下来我们将读取所有传感器数据。这里我们使用DHT11、DS18B20、LDR和土壤湿度传感器。LDR和土壤湿度传感器数据将用于自动化LED灯条和水泵。所以首先我们将读取LDR状态,如果LDR读数小于200,则LED将自动打开。同样,如果土壤水分百分比小于35,则水泵将打开。

在AdafruitIO上发布数据:

现在我们已经收集了所有数据,是时候在AdafruitIO仪表板上发布这些数据了,以便我们可以从任何地方对其进行监控。在这里,我们会将不同的传感器数据发布到各自的提要中。

if(currentTime-previousTime>=间隔){if(!Moisture.publish(moisturePercentage))如果(!温度。发布(温度))如果(!湿度。发布(湿度))if(!SoilTemp.publish(soiltemp))如果(!WeatherData.publish(图标))}

用于智能农业系统的3D打印外壳

由于这个项目将用于农业应用,我决定3D打印一个外壳。我用游标测量了装置的尺寸来设计外壳。完成后,我的设计看起来像这样:

对设计满意后,我将其导出为STL文件,根据打印机设置对其进行切片,最后打印出来。STL文件也可以从Thingiverse下载,您可以使用它打印自己的外壳。

打印完成后,我继续将项目设置组装在一个永久外壳中以备将来使用。完成连接后,我将电路组装到我的外壳中,一切都非常合适,如下所示:

测试智能农业系统

为了测试这个项目,我在塑料托盘中发了一些种子,如下图所示:

#include

#include"DHT.h"

#include"Adafruit_MQTT.h"

#include"Adafruit_MQTT_Client.h"

constchar*ssid="银河-M20";//输入您的WiFi名称

WiFiClient客户端;

#defineMQTT_SERV"io.adafruit.com"

#defineMQTT_PORT1883

#defineMQTT_NAME"aschoudhary"//你的AdafruitIO用户

名#defineMQTT_PASS"1ac95cb8580b4271bbb6d9f75d0668f1"//AdafruitIOAIOkey

constcharserver[]="api.openweathermap.org";

字符串apiKey="e8b22b36da932dce8f31ec9be9cb68a3";

字符串文本;

intjsonend=0;

布尔startJson=假;

int状态=WL_IDLE_STATUS;

#defineJSON_BUFF_DIMENSION2500

constunsignedlongpostInterval=10*60*1000;//发布间隔10分钟(10L*1000L;测试延迟10秒)

constintldrPin=D1;

常量intledPin=D0;

常量int湿气Pin=A0;//湿度传感器引脚

constintmotorPin=D8;

漂浮水分百分比;//湿度读数

int温度,湿度,土壤温度;

#defineONE_WIRE_BUS4//nodemcu的D2引脚

#defineDHTTYPEDHT11//DHT11

#definedht_dpinD4

DHTdht(dht_dpin,DHTTYPE);

单线单线(ONE_WIRE_BUS);

constunsignedlong间隔=50000;

unsignedlongpreviousTime=0;

//设置您要发布到

Adafruit_MQTT_Clientmqtt(&client,MQTT_SERV,MQTT_PORT,MQTT_NAME,MQTT_PASS);

Adafruit_MQTT_PublishMoisture=Adafruit_MQTT_Publish(&mqtt,MQTT_NAME"/f/Moisture");//Moisture是将发布数据的源名称

Adafruit_MQTT_PublishTemperature=Adafruit_MQTT_Publish(&mqtt,MQTT_NAME"/f/Temperature");

Adafruit_MQTT_PublishHumidity=Adafruit_MQTT_Publish(&mqtt,MQTT_NAME"/f/Humidity");

Adafruit_MQTT_PublishSoilTemp=Adafruit_MQTT_Publish(&mqtt,MQTT_NAME"/f/SoilTemp");

Adafruit_MQTT_PublishWeatherData=Adafruit_MQTT_Publish(&mqtt,MQTT_NAME"/f/WeatherData");

//设置您订阅的订阅

源Adafruit_MQTT_SubscribeLED=Adafruit_MQTT_Subscribe(&mqtt,MQTT_NAME"/f/LED");

Adafruit_MQTT_SubscribePump=Adafruit_MQTT_Subscribe(&mqtt,MQTT_NAME"/f/Pump");

无效设置()

{

序列.开始(9600);

延迟(10);

dht.begin();

传感器.开始();

mqtt.subscribe(&LED);

mqtt.subscribe(&Pump);

pinMode(ledPin,输出);

pinMode(ldrPin,输入);

(ledPin,HIGH);

text.reserve(JSON_BUFF_DIMENSION);

Serial.println("正在连接");

序列号.println(ssid);

WiFi.开始(ssid,通过);

而(WiFi.status()!=WL_CONNECTED)

延迟(500);

Serial.print(".");//打印...直到没有连接

}

Serial.println("");

Serial.println("WiFi连接");

voidloop()

unsignedlongcurrentTime=millis();

MQTT_connect();

if(millis()-lastConnectionTime>

lastConnectionTime=millis();

//}

if(ldrStatus<=200){

digitalWrite(ledPin,HIGH);

Serial.print("天黑了,打开LED:");

Serial.println(ldrStatus);

else{

digitalWrite(ledPin,LOW);

Serial.print("它很亮,关闭LED:");

湿度百分比=(100.00-((analogRead(moisturePin)/1023.00)*100.00));

Serial.print("土壤水分=");

序列号.print(moisturePercentage);

序列号.println("%");

if(moisturePercentage<35){

digitalWrite(motorPin,HIGH);//调整电机

if(moisturePercentage>38){

digitalWrite(motorPin,LOW);//关闭电机

temperature=dht.readTemperature();

湿度=dht.readHumidity();

//Serial.print("温度:");

//Serial.print(温度);

//Serial.println();

//Serial.print("湿度:");

//Serial.print(湿度);

传感器.requestTemperatures();

土壤温度=传感器.getTempCByIndex(0);

//Serial.println("土壤温度:");

//Serial.println(soiltemp);

if(currentTime-previousTime>=Interval){

if(!Moisture.publish(moisturePercentage))//此条件用于在adafruitIO上发布变量(moisturePercentage)。根据你的改变变量。

if(!Temperature.publish(temperature))

if(!Humidity.publish(humanity))

//delay(30000);

if(!SoilTemp.publish(soiltemp))

if(!WeatherData.publish(icon))

Adafruit_MQTT_Subscribe*订阅;

while((subscription=mqtt.readSubscription(5000)))//在控制某些东西或从AdafruitIO获取数据之前不要使用这个。

if(subscription==&LED)

//将新值打印到串口监视器

Serial.println((char*)LED.lastread);

if(!strcmp((char*)LED.lastread,"OFF"))

if(!strcmp((char*)LED.lastread,"ON"))

if(subscription==&Pump)

Serial.println((char*)Pump.lastread);

if(!strcmp((char*)Pump.lastread,"OFF"))

digitalWrite(motorPin,HIGH);

if(!strcmp((char*)Pump.lastread,"ON"))

digitalWrite(motorPin,LOW);

延迟(9000);

//client.publish(WeatherData,icon)

voidMQTT_connect()

int8_tret;

//如果已经连接则停止。

if(mqtt.connected())

返回;

uint8_t重试次数=3;

while((ret=mqtt.connect())!=0)//connect将返回0连接

mqtt.disconnect();

延迟(5000);//等待5秒

重试--;

if(retries==0)

//基本上死了,等待WDT重置我

while(1);

//在发送新请求之前关闭任何连接以允许客户端与服务器建立连接

client.stop();

//如果连接成功:

if(client.connect(server,80)){

client.println("主机:api.openweathermap.org");

client.println("用户代理:ArduinoWiFi/1.1");

client.println("连接:关闭");

客户端.println();

无符号长超时=毫秒();

while(client.available()==0){

if(millis()-timeout>5000){

Serial.println(">>>ClientTimeout!");

客户端.stop();

字符c=0;

while(client.available()){

c=client.

//由于json包含相同数量的打开和关闭大括号,这意味着我们可以通过计算

打开和关闭出现次数来确定何时完全接收到json,//

Serial.print(c);

if(c=='{'){

startJson=true;//设置startJsontrue表示json消息已经开始

jsonend++;

if(c=='}'){

jsonend--;

if(startJson==true){

text+=c;

//如果jsonend=0那么我们收到了相同数量的花括号

if(jsonend==0&&startJson==true){

parseJson(text.c_str());//在parseJson函数中解析c字符串文本

text="";//下次清空字符串

startJson=false;//将startJson设置为false,表示新消息尚未开始

//如果没有建立连接:

Serial.println("connectionfailed");

//解析从OWM接收的json数据

voidparseJson(constchar*jsonString){

//StaticJsonBuffer<4000>jsonBuffer;

constsize_tbufferSize=2*JSON_ARRAY_SIZE(1)+JSON_ARRAY_SIZE(2)+4*JSON_OBJECT_SIZE(1)+3*JSON_OBJECT_SIZE(2)+3*JSON_OBJECT_SIZE(4)+JSON_OBJECT_SIZE(5)+2*JSON_OBJECT_SIZE(7)+2*JSON_OBJECT_SIZE(8)+720;

DynamicJsonBufferjsonBuffer(bufferSize);

//DynamicJsonDocument(bufferSize);

//在JSON树中查找

字段JsonObject&root=jsonBuffer.parseObject(jsonString);

if(!root.success()){

Serial.println("parseObject()failed");

JsonArray&list=root["list"];

JsonObject&nowT=list[0];

JsonObject&稍后=列表[1];

JsonObject&tommorow=list[2];

//字符串条件=list.weather.main;

//包括温度和湿度,供那些可能想破解它的人使用

Stringcity=root["city"]["name"];

字符串weatherNow=nowT["天气"][0]["描述"];

StringweatherLater=later["weather"][0]["description"];

THE END
1.智慧农业平台农业物联网智能农业物联网系统视动世纪(北京)科技股份有限公司致力于智慧农业,农业物联网,智慧农业平台,农业物联网系统,智慧农业,智慧农业解决方案,智能农业,智能农业物联网系统等发展,专注于农业物联网技术和系统研发,是专业的智慧农业解决方案提供商,北京视动世纪拥有自己软件平台,可为现代农业http://www.shidongvr.com/vportal/zhny.jsp
2.农业物联网系统智慧农业物联网系统解决方案托普云农农系设备网物联网主要介绍农业物联网系统及智慧农业物联网相关解决方案,成功案例以及产品信息,平台拥有大量的农业物联网系统、智慧农业系统建设需求的专业信息,适用于种植业、养殖业、林业等类别的农业物联网系统建设需求,详情咨询0571-86056609https://www.tpyn.net/net.html
3.智慧农业物联网系统智慧农业系统应用北京耕智是一家智慧农业公司,致力于将智慧农业、智慧农业物联网技术与智慧农业系统种植经营相结合,为用户提供业界领先的智慧农业解决方案,促进农产品产量提升。http://www.gengzhiyun.com/h-col-103.html
4.智慧农业物联网系统“智慧绿态农业/花卉大棚环境云监测物联网系统”是一套基于modbus/bacnet协议及lora无线通讯系统平台,实现农业生产的智能化及绿色生态管理。 图1 智慧绿态农业物联网系统示意图 该系统利用多种类型的传感器、自动化控制设备、多功能采集节点,以及无线组网系列设备等组建农业智能化生产与监测专用的无线传感网, 对农业生https://www.jianshu.com/p/2fb55a07abb5
5.智慧农业物联网系统农业物联网解决方案河南云飞科技河南云飞科技河南云飞科技是一家长期致力于智慧农业物联网系统的服务商,提供多种农业物联网解决方案,涵盖农业四情,森林防火,食品安全,水肥,畜禽养殖等.4006907990.https://www.hnyfkj.com.cn/newslist.asp?Cid=108
6.智能农业物联网系统(大棚农业物联网系统)大棚农业物联网系统 1、在大棚环境里,单栋大棚可利用物联网技术,成为无线传感器网络一个测量控制区,采用不同的传感器节点和具有简单执行机构的节点,如风机、低压电机、阀门等工作电流偏低的执行机构,构成无线网络,来测量基质湿度、成分、pH值、温度以及空气湿度、气压、光照强度、二氧化碳浓度等,再通过模型分析,自动调控http://yyf1989.51sole.com/companyproductdetail_391774147.htm
7.农业物联网监控系统智慧农业平台解决方案北起黑龙江黑河,南至海南岛三亚,西达新疆库尔勒,全国上百万亩土地遍布慧云农业物联网监控系统。 全面监测农场,精准把控生产问题 气象环境监测 农场气象实时监测 实时监测空气温湿度、光照、降雨量、风速、风向、大气压力、气体浓度等数据,并通过设定相关报警阈值,实现即时报警,精准控制种植环境指标。 https://www.tcloudit.com/Html/monitoringSystem.html
8.智慧农业物联网应用平台技术方案智慧农业物联网系统架构 智慧农业是我国农业现代化发展的必然趋势,物联网、云计算等新兴技术的结合运用,突破了农业市场环境下的时空制约,农产品的购买、流通等环节中形成的数据信息,将会获得及时的监控,高效传输,从而高效处理信息的不对称问题。智慧农业和当代生物技术方法充分结合,这也是新时代农业发展的重要方向。伴随https://www.ixiera.com/web/kehu/zlxz/384.html
9.智慧农业智棚宝智慧农业云平台在大棚部署传感器、控制器、摄像头等多种物联网设备,借助电脑、手机,实现对农业大棚气候变化、土壤情况、作物生长、水肥使用、设备运行等信息的实时监测展示,对异常情况自动报警提醒,农户可及时采取防控措施,降低生产风险;同时农户可远程自动控制大棚的灌溉、通风、降温、增温等设施设备,实现精准作业https://www.felick.com/h-nd-46.html
10.基于物联网的智慧农业监控系统基于物联网的智慧农业监控系统,智慧农业,物联网,LoRa,无线传感网络,云平台,农业是一个国家发展的基础,对我国的经济社会发展起着至关重要的作用,采用基于物联网技术的智慧农业监控系统对农作物进行精细化种https://wap.cnki.net/lunwen-1022674120.html
11.基于物联网技术的智慧农业云平台智慧农业物联网系统架构如图1所示。 2 基础架构 2.1 气象环境信息检测系统 气象环境信息可以通过小型气象站来检测,小型气象站是一套完整的气象监测系统,特别适用于小气候环境监测,通过搭配不同类型的智能型传感器,可以实时采集户外的空气温湿度、光照、风速、风向等环境参数[7-8]。 https://www.fx361.com/page/2020/0624/6802272.shtml
12.智慧农业云平台智慧农业云平台通过实时动态监管,运用视觉识别技术对农产品及施药等行为进行动态识别和抓拍,并自动记录到系统中,以便管理人员进行有效监管和科学指导,从而使农产品生长环境保持在最佳状态,有效提升农产品品质和产量,促进农产品增收致富。https://shengqihb.com/page96?product_id=283
13.浙江省智慧农业云平台解决方案浙江省智慧农业云平台简称智慧农业云平台,旨在通过农业物联网技术、大数据、3S等信息化技术有效整合省市县各级涉农资源,以顶层设计方式建成“一个平台一个中心N个应用”,汇聚农业产业、农业“两区”、物联网、植保、农机、畜牧、农资、农经、科教等各级农业业务应用及数据,形成“大农业”数据中心,构建互联共享的“互联http://www.tpwlw.com/project/38.html
14.农业物联网智慧农业解决方案物联网设备供应商智慧农业云平台,整合智慧农业解决方案,农业环境在线监测预警,远程联动控制调控设备,农产品溯源系统,电子商务系统等模块化设计,自由定制快速搭建。 农业物联网 智慧农业解决方案,智慧农业,智慧农业物联网 精讯畅通将物联网、人工智能、云平台与农业结合,提供完美的智慧农业物联网解决方案,智慧大棚,智慧畜牧养殖,智慧水产http://farm.jxctdzkj.com/about3/index.html
15.智慧农业农业物联网实施方案!智慧农业--农业物联网实施方案! 农业物联网技术用于农业生产,只要能上网的地方就可以查到温室内外的光照度、温度、空气湿度、土壤湿度和田间管理情况,不但有利于数据的采集,还省时省工,在家远程通过物联网就可实时监控温室温度、光照情况,通过授权进入自动控制平台后,天窗开闭、风机运行和水帘降温等程序就可远程控制https://qdyjy.xidian.edu.cn/info/1077/1464.htm
16.智慧智能农业温室大棚大田种植水产养殖畜牧业物联网河南兵峰电子科技有限公司是一家专注智慧农业物联网系统解决方案服务商,对农业物联网的研发与设计提供针对性的解决方案,公司配套产品有温度传感器、环境采集仪器、控制系统、通信模块、智能网关等组成的农业物联网自动灌溉系统解决方案。产品溯源系统平台可以对农产品溯源http://www.hnbfdz.com/
17.基于物联网的智慧农业监测系统(前端界面有web端和微信小程序端)基于此,本文设计并实现了一套基于物联网的智慧农业监测系统,系统采用ESP32作为主控板,并搭载多种传感器,实时采集与农作物生长环境相关的温湿度、光照强度、土壤湿度、二氧化碳浓度等环境参数,然后通过MQTT协议将采集的数据上传到巴法云物联网平台,最后通过Web端和微信小程序端实现对农业的远程监测和自动预警处理。该系统https://blog.csdn.net/weixin_42775304/article/details/125173346
18.物联网在农业中的几大应用智慧农业是农业中的智慧经济,或智慧经济形态在农业中的具体表现。智慧农业是智慧经济重要的组成部分;对于发展中国家而言,智慧农业是智慧经济主要的组成部分,是发展中国家消除贫困、实现后发优势、经济发展后来居上、实现赶超战略的主要途径。 农业物联网系统功能 https://www.51cto.com/article/707506.html