首页 理论教育 智能农业系统编程要点:Arduino单片机实战技术

智能农业系统编程要点:Arduino单片机实战技术

时间:2023-10-23 理论教育 版权反馈
【摘要】:项目末尾给出了农业监测系统的完整代码。这里我们将解释代码的一些重要部分。这些将包括MQTT服务器、端口号、用户名和AIO密钥。这是执行所有任务的地方。LDR和土壤湿度传感器数据将用于自动化LED带和水泵。因此,首先我们将读取LDR状态,如果LDR读数小于200,则LED将自动打开。同样,如果土壤含水量百分比小于35,则水泵将打开。在这里,我们将把不同的传感器数据发布到各自的提要中。

智能农业系统编程要点:Arduino单片机实战技术

项目末尾给出了农业监测系统的完整代码。这里我们将解释代码的一些重要部分。该代码使用DallasTemperature.h、OneWire.h、Adafruit MQTT.h、ArduinoJson.h和DHT.h库。Adafru MQTT.h和DHT11.h可以从给定的链接下载,库的其余部分可以直接从Arduino IDE库管理器下载。

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

#include<ESP8266WiFi.h>

#include<DallasTemperature.h>

#include<OneWire.h>

#include"DHT.h"

#include"Adafruit_MQTT.h"

#include"Adafruit_MQTT_Client.h"

#include<ArduinoJson.h>

然后输入从Adafruit IO服务器复制的Wi-Fi和Adafruit IO凭据。这些将包括MQTT服务器、端口号、用户名和AIO密钥。

const char*ssid="Wi-Fi Name";

const char*pass="Wi-Fi password";

#define MQTT_SERV"io.adafruit.com"

#define MQTT_PORT 1883

#define MQTT_NAME"Adafruit IO Username"

#define MQTT_PASS"AIO Key"

接着,设置Adafruit IO馈送,用于存储传感器数据和控制LED和水泵。在这里定义了四个feed来存储不同的传感器数据,即:一个feed用于显示土壤温度和湿度,一个feed用于显示天气数据,两个feed用于控制LED条和水泵。(www.xing528.com)

Adafruit_MQTT_Client mqtt(&client,MQTT_SERV,MQTT_PORT,MQTT_NAME,MQTT_PASS);

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

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

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

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

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

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

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

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

阅读天气预报:

为了从OpenWeatherMapAPI读取天气预报数据,我们将使用ArduinoJson Assistant生成的代码片段。在void loop()函数中,我们将只在特定的时间间隔后调用API,这样我们就不会超过每天的限制。

读取传感器数据:

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

在Adafruit IO上发布数据:

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

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈