带有Arduino的自动浇水系统,可用于您的植物,果园或花园

喷壶浇水植物

夏季是许多人倾向于在外面度假的时候,植物是一个问题,因为它们不能 在您不在家的那些日子里浇水。 此外,花园商店通常出售一种凝胶,这种凝胶可以为植物补水并养育大约一个月的时间。 但是由于天气炎热,或者如果您离开一个多月,那么您将需要一个更好的系统,以便当您返回时,它们将继续充满生机和活力。

为此,存在的解决方案是购买一个 自动灌溉系统 您可以进行编程,或者如果您是制造商并且喜欢DIY,则可以使用Arduino自己完成。 除了Arduino开发板之外,您所需的材料也很容易找到而且非常便宜,因此它们不会花费太多的钱。 此外,对于某些元素,例如水箱等,您可以使用再生材料...

如果您稍微浏览一下网页,就会发现 这种类型的各种项目,但也许最有趣的是 耶尔杜伊诺。 因为我认为其他仅使用湿度传感器且没有其他东西的灌溉系统还不够完善,所以我会受到这个项目的启发。

你需要什么?

MGI 自动灌溉系统所需的材料 是:

  • 没有找到产品。,尽管别人会值得的。
  • 面包板 或PCB 如果要焊接并将其永久固定。
  • 温湿度传感器 没有找到产品。
  • 线材
  • 传感器 YL-69 湿气 在地面上用湿度计粘在锅里或土壤上。
  • 微型泵 3V潜水水 流量约为120 l / h。
  • 狄奥多 1N4007
  • 双极晶体管 PN2222
  • 3个电阻:1x 220欧姆,1x 1k,1x 光刻胶LDR
  • 水箱, 可以是一个桶,也可以是一瓶5升或更多的瓶子,等等。
  • 吐蕃 连接到微型泵并带到工厂

科莫 替代想法,我会告诉你,您还可以使用Sonoff或WiFi模块从任何地方通过Internet激活它,或者通过在水龙头上添加一个自动阀以对水箱排空时的填充进行编程来改进它, 等等。

如何设置自动灌溉系统

Fritzing中的装配示意图

组装非常简单。 你可以 使用以上原理图进行所有连接。 您应将系统放置在窗户附近或想要浇水的植物附近,并将湿度传感器的两个尖端粘在靠近茎的植物土壤中。

带有Arduino的自动浇水系统只要检测到水流就会浇水 系列环境条件。 例如,当它检测到光线不足或黑暗时,空气温度是一个具体温度,我们将在Arduino IDE草图中对其进行配置,并且地面上的湿度较低。 在那一刻,他将启动马达给植物浇水。

最好在夜晚不热的时候给植物浇水,因为在烈日里这样做可能弊大于利。

请记住,您必须 在水下介绍微型泵 在您打算进行灌溉的水箱中,并且应该有足够的容量来容纳您不在那里的日子。 您可以进行以前的测试以了解其可持续时间,并且应多留一点水,以免在高温下蒸发掉。

不言而喻,必须将管子固定在植物上,以免管子随风而移动,否则水会掉出来而浪费掉。 而且我认为没有必要记住必须为Arduino电路板保持电流以使其正常工作...

程序设计

现在是时候写 Arduino IDE中所需的代码 以便能够对管理您使用过的硬件的微控制器进行编程。 这是时候根据您所在地区的水适应适当的温度,湿度和光照值的时候了,因为时间可能会有所不同。 但是可以用作基础的示例是(我在其中可以修改值的地方留下了注释,其余的可以像这样保留它):

从下载代码 代码灌溉自动为您的花园自动浇水

#include <SimpleDHT.h>
#include <SPI.h>
#define humidity_sensor_pin A0
#define ldr_pin A5
//Bibliotecas para los módulos sensores usados necesarias
//Y definición de variables para los sensores de humedad y LDR en los pines A0 y A5

int pinDHT11 = 2;
SimpleDHT11 dht11;
int ldr_value = 0;
int water_pump_pin = 3;
int water_pump_speed = 255;
//Aquí puedes dar valores desde 0 a 255 para la velocidad a la que trabajará la minibomba
//Haz pruebas previas del caudal y configura la. Yo he //elegido 255 pero ustedes pueden elegir la que estimen conveniente. A más velocidad, mayor //bombeo de agua
void setup() {
  Serial.begin(9600);
}
void loop() {
// Mide la temperatura y humedad relativa y muestra resultado
  Serial.println(“*******************************”);
  Serial.println(“Muestra DHT11…”);
  
  byte temperature = 0;
  byte humidity_in_air = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity_in_air, data)) {
    Serial.print(“Lectura del sensor DHT11 fallida”);
    return;
  }
  
  Serial.print(“Muestra RAW Bits: “);
  for (int i = 0; i < 40; i++) { Serial.print((int)data[i]); if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(‘ ‘);
    }
  }
  Serial.println(“”);
  
  Serial.print(“Muestra OK: “);
  Serial.print(“Temperatura: “);Serial.print((int)temperature); Serial.print(” *C, “);
  Serial.print(“Humedad relativa en aire: “);Serial.print((int)humidity_in_air); Serial.println(” %”);
  
  int ground_humidity_value = map(analogRead(humidity_sensor_pin), 0, 1023, 100, 0);
  Serial.print(“Humedad en suelo: “);
  Serial.print(ground_humidity_value);
  Serial.println(“%”);

  int ldr_value = map(analogRead(ldr_pin), 1023, 0, 100, 0);
  Serial.print(“Luz: “);
  Serial.print(ldr_value);
  Serial.println(“%”);
   Serial.println(“*******************************”);

//**************************************************************
// Condiciones de riego 
// Si la humedad en el suelo es igual o inferior al 60%, si la luminosidad es inferior al 30%,
// Si la temperatura es inferior al 35%, entonces el sistema de riego riega. 
// En caso de que no se  cumpla alguno o ninguno de los 3 requisitos anteriores,
// el sistema de riego no riega
//**************************************************************
//Aquí puedes variar los parámetros que necesites de 60, 35 y 30, e incluso usar otros operandos <>=...
 if( ground_humidity_value <= 60 && ldr_value<30 && temperature<35) {
 digitalWrite(water_pump_pin, HIGH);
 Serial.println(“Irrigación”);
 analogWrite(water_pump_pin, water_pump_speed);

 }
 else{
 digitalWrite(water_pump_pin, LOW);
 Serial.println(“Riego detenido”);

 }
 delay (2000); 
// Ejecuta el código cada 2000 milisegundos, es decir, 2 segundos. Puedes variar la frecuencia de muestreo
}

更多信息 - Arduino编程课程(免费PDF)

来源

更多信息 - 耶尔杜伊诺


36条评论,留下您的评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   罗杰·费尔南多·阿斯托·博尼法乔

    为什么我得到退出状态1
    #include期望“ FILENAME”或ESO载入中

    1.    艾萨克

      你好,
      此错误是由于代码中的某些语法问题引起的。 我已经经历了,并且有一个错误。 现在应该没事了。
      您好!

  2.   来源

    您好,下午好,我也有同样的问题:
    项目:3:10:错误:#include期望使用“ FILENAME”或

    #include ;

    ^

    项目:4:10:错误:#include期望使用“ FILENAME”或

    #include ;

    ^

    退出状态1
    #include期望使用“ FILENAME”或

  3.   凯文·

    您好,对不起,您能帮我解决代码中出现的错误吗

  4.   SAMANTA

    同样,我在代码中遇到错误,请问您能帮我解决这个问题吗?

    1.    艾萨克

      你好,
      请留下有关您所遇到的错误的信息,以便我们提供帮助。 如果我不知道错误的内容,那么我将很难为您提供帮助或定位问题所在...
      问候

  5.   samantha vega喜欢

    您好,出现此错误,我该如何解决?

    错误:SimpleDHT.h:没有这样的文件或目录

    的#include

    ^ ~~~~~~~~~~~~

    编译终止。

    退出状态1
    SimpleDHT.h:没有这样的文件或目录

    1.    艾萨克

      你好萨曼莎,
      该错误是因为Arduino IDE似乎未检测到SimpleDHT.h库。 您安装正确吗? 如果您有它,请尝试使用较新的Arduino IDE版本,如果它较旧...
      您可以在此处查看更多信息:
      https://www.arduino.cc/en/Guide/Libraries
      从这里获取库:
      https://github.com/adafruit/DHT-sensor-library
      您好!

  6.   佩佩

    首先感谢您的帖子非常有趣且非常有效,但我已阅读以下内容:

    “建议晚上在温度较低的夜晚给植物浇水,因为在烈日里这样做可能弊大于利……”

    我已经听过很多次了,但是我希望有人向我清楚地解释它对他们的伤害……。 我已经种了20多年的植物,当天气很热的时候,除了良好的浇水以及能够使洒水器弄湿叶子外,他们没有什么比这更值得欣赏的了。

    这是一个神话,它的全部作用就是使植物遭受苦难...当您口渴又渴时,您是否要等到晚上才能喝水?

    谢谢你的帖子!

    1.    艾萨克

      你好佩佩,
      感谢您的输入。 我住在乡下,有时候,当高温非常强烈时,在炎热的时候给植物浇水会杀死它们。 我已经亲自检查过(此外,视您所在的地理位置而定,这不一样,在我的土地上非常热)。 可能有以下几个原因:
      1-因为叶子上的水滴像玻璃一样起作用,所以像放大镜一样在阳光下燃烧它们。
      2-植物的气孔要关闭,以免日晒时失水。 如果给它们浇水,它们会打开并导致脱水。
      3-如果放在塑料锅中,效果可能会更糟。
      您好!

  7.   安德烈斯·卡罗(Andres Caro)

    您好!!
    我真的很喜欢这个精心设计的项目,我有自己的花园,并且正在作为个人经验测试该项目,而没有获得丰厚的收益,我只是想问一下您是否会帮助我编写代码,因为它给了我一个错误,我有DHT库,但在对其进行验证时,它在代码的末尾引发了一个错误:{Serial.println(“浇水已停止”);},并告诉我它是:程序中流浪'\ 342'。
    我对此事知之甚少,已经调查过,但无法解决。
    如果您能帮助我,我将不胜感激。 谢谢😀

    1.    艾萨克

      你好,
      代码正确吗? 也就是说,它没有错别字?
      另一方面,您可以在此处查看有关该错误的更多信息:
      https://forum.arduino.cc/index.php?topic=386225.0
      问候

  8.   何塞·阿雷东多(Jose Arredondo)

    您好,下午好,对不起,我不知道是否可以与您联系,这是因为arduino中的此代码给了我很多错误

    1.    艾萨克

      大家好,
      我已经清理了代码,并再次编写了代码,以查看由于某种原因在网络上显示的代码中是否存在任何错误。 为了将其下载,我将新代码留在了下载链接中,就在网络上出现的代码之前。 如果单击此处,则可以文本格式下载。 我希望没有更多的问题了。
      您好!

  9.   查基

    如何添加wifi模块? 并可以通过创建应用程序来控制它吗?

  10.   查基

    食物也如何:c?

    1.    路易斯·阿尔贝托·阿尔瓦拉多

      嗨,Chaqui! 我正在尝试和您一样,如果您完成了代码,可以帮助我吗?

  11.   Nerea

    问题是,Arduino开发板和DHT11传感器之间应该是哪个组件?
    多谢!

    1.    艾萨克

      嗨,Nerea,
      您是说二极管和电阻器? 请注意,在该图之前的部分中,列出了所有组件...
      您好!

  12.   Jannet

    您好,您有一段有关灌溉系统的视频。

  13.   亚历杭德罗·巴罗斯(Alejandro Barros)

    对不起,我只为 arduino uno 或也用于arduino mega

  14.   灵光

    您好,早上好,很抱歉,我想问一个问题,为什么当我打开Arduino ide显示器时,dht11传感器读数失败?
    整个程序编译良好且加载良好,详细信息是当我打开监视器时出现的图例。
    会是什么呢?

  15.   丹尼尔·阿尔弗雷多·里瓦斯·梅迪纳

    HELLO FRIEND伟大的工作却犯了这个部分的错误没有这样的文件或目录

    的#include
    会是什么? 谢谢您的帮助

  16.   伊莎贝尔

    HELLO,这是公共的,但没有关系,我真的想感谢参与此项目开发的人员或人员,也许是因为它是愚蠢的,但是您已经挽救了我的生命,所以我非常感谢我不想要贝隆的学校,对不起,我不了解我的真相,谢谢您的帮助,我祝你一切顺利。

  17.   艾琳

    如何添加wifi模块? 并可以通过创建应用程序来控制它吗?

  18.   布赖恩

    #include“ DHT.h”
    DHT dht(2,DHT11);
    int valueLDR;
    int pinLDR = A5;
    整数电机 = 8;
    // ——————————————————————————————————————————————
    无效设置()
    {
    Serial.begin(9600);
    valueLDR = 0;
    Serial.begin(9600);
    Serial.println(“灌溉系统测试”);
    dht.begin();
    pinMode(MOTOR,OUTPUT);
    Serial.println(“湿度传感器值”);
    }
    // ——————————————————————————————————————————————
    无效循环()
    {
    Serial.println(«============================================ =========================»);
    int湿度= AnalogRead(A0);
    Serial.print(“ Read:”);
    Serial.println(湿度);
    如果(湿度> = 0且湿度> = 1000){
    Serial.println(“干燥土壤中的传感器”);
    }否则,如果(湿度> 500和湿度<= 1000){
    Serial.println(“湿土中的传感器”);
    } else if(湿度<= 500){
    Serial.println(“水中传感器”);
    }
    valueLDR =模拟读取(pinLDR);
    Serial.print(“ LIGHT(”);
    Serial.print(valueLDR);
    Serial.println(“)”);
    延迟(2000);
    float h = dht.readHumidity();
    浮点数t = dht.readTemperature();
    if(isnan(h)|| isnan(t)){
    Serial.println(“无法读取DHT11传感器!”);
    返回;
    }
    Serial.print(“湿度:”);
    Serial.print(h);
    Serial.print(“%”);
    Serial.print(“温度:”);
    Serial.print(t);
    Serial.println(“ * C”);
    if(h <= 50 && LDRvalue <70 && t = 1000){
    digitalWrite(MOTOR,HIGH);
    Serial.println(“必须用水”);
    }
    其他{
    digitalWrite(MOTOR,LOW);
    Serial.println(“不应该浇水”);
    }
    延迟(1000);
    }

    我只用了
    -引脚2上的温度和湿度为DTH
    -引脚A5上的LDR光刻胶
    引脚8上的电动机
    -针脚A0上的土壤湿度传感器
    我希望这是我的代码,对您有用

    湿度传感器

  19.   何塞·L。

    早上好,我在使用此代码时遇到问题,并且正在使用最新的软件:

    sketch_nov12c:1:10:致命错误:SimpleDHT.h:没有这样的文件或目录

    的#include

    ^ ~~~~~~~~~~~~

    编译终止。

    退出状态1

    SimpleDHT.h:没有这样的文件或目录

    我希望您能帮助我如何解决此问题,因为我是新手,所以我不知道它的效果如何。 谢谢你。

  20.   约翰

    您好,您能留下一个更好的电路连接方式的印象吗? 谢谢

  21.   布赖恩

    #include“ DHT.h”
    DHT dht(2,DHT11);
    int valueLDR;
    int pinLDR = A5;
    整数电机 = 8;
    // ——————————————————————————————————————————————
    无效设置()
    {
    Serial.begin(9600);
    valueLDR = 0;
    Serial.begin(9600);
    Serial.println(“灌溉系统测试”);
    dht.begin();
    pinMode(MOTOR,OUTPUT);
    Serial.println(“湿度传感器值”);
    }
    // ——————————————————————————————————————————————
    无效循环()
    {
    Serial.println(«============================================ =========================»);
    // ———————————————————————————————
    // ———————水分,土壤传感器——————————————————
    int湿度= AnalogRead(A0);
    Serial.print(“ Read:”);
    Serial.println(湿度);
    如果(湿度> = 0且湿度> = 1000){
    Serial.println(“干燥土壤中的传感器”);
    }否则,如果(湿度> 500和湿度<= 1000){
    Serial.println(“湿土中的传感器”);
    } else if(湿度<= 500){
    Serial.println(“水中传感器”);
    }
    // ———————————————————————————————
    // ———————感光电阻————————————————————
    valueLDR =模拟读取(pinLDR);
    Serial.print(“ LIGHT(”);
    Serial.print(valueLDR);
    Serial.println(“)”);
    延迟(2000);
    // ———————————————————————————————
    // ———————传感器DTH11在空气中的温度和湿度——————————–
    float h = dht.readHumidity();
    浮点数t = dht.readTemperature();
    if(isnan(h)|| isnan(t)){
    Serial.println(“无法读取DHT11传感器!”);
    返回;
    }
    Serial.print(“湿度:”);
    Serial.print(h);
    Serial.print(“%”);
    Serial.print(“温度:”);
    Serial.print(t);
    Serial.println(“ * C”);
    // ———————————————————————————————
    // ————喝水或不喝水的条件————————————————
    //(空气湿度)(光刻胶)(温度)(地球湿度)
    if(h <= 50 && LDRvalue <70 && t = 1000){
    digitalWrite(MOTOR,HIGH);
    Serial.println(“必须用水”);
    }
    其他{
    digitalWrite(MOTOR,LOW);
    Serial.println(“不应该浇水”);
    }
    延迟(1000);
    }

    //只需检查销钉,检查泵是否为pwm销钉,然后
    // LDR光刻胶的模拟量类似,土壤水分的模拟量也一样
    //模拟以及空气温度和湿度传感器的dth11的模拟
    //数字管脚仍然可以基于此页面的原始代码
    //连接引脚
    //与5v一起使用

  22.   埃里克

    我在这部分代码中出现错误»空循环(){»可以帮助我

  23.   安德烈斯(AndrésP.)

    您好,您能告诉我什么库或它们的安装名称是什么,因为当我粘贴代码时它告诉我我需要DTH库

  24.   安德列斯·古兹曼(Andres Guzman)

    您好,系统似乎很好。 我试图重新创建它,但是在包含代码和相应的库时,将出现以下内容。

    在C:\ Users \ User \ Documents \ Arduino \ TEST_1 \ TEST_1.ino包含的文件中:5:0:
    C:\程序文件(x86)\ Arduino \库\ DHT-sensor-library-master / DHT_U.h:36:10:致命错误:Adafruit_Sensor.h:没有这样的文件或目录
    的#include
    ^ ~~~~~~~~~~~~~~~~~~
    编译终止。
    退出状态1
    卡的编译错误 Arduino Uno.

    如果有人可以帮助我,我不确定是否需要其他书店。

  25.   佩佩·冈萨雷斯

    一个非常好的项目,但是在验证代码,编译并上传之后,串行监视器上唯一出现的是“ DHT11读取失败”,它不会超出该范围。

  26.   鲁斯

    您好,我有几个问题,请您帮帮我,如果有人有视频或者我找到了我可以看到的详细视频

  27.   塞巴斯蒂安

    我有一个问题,把电流放在哪里,可以使用什么类型的电流。

  28.   阿德里安

    您可以添加更高分辨率的轮廓吗? 一些连接不清晰可见