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

喷壶浇水植物

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

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

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

你需要什么?

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

  • 没有找到产品。,尽管别人会值得的。
  • 面包板 或PCB 如果要焊接并将其永久固定。
  • 温湿度传感器 没有找到产品。
  • 线缆
  • 传感器 YL-69 湿气 在地面上用湿度计粘在锅里或土壤上。
  • 微型泵 3V潜水水 流量约为120 l / h。
  • 狄奥多 1N4007
  • 双极晶体管 PN2222
  • 3个电阻:1x 220欧姆,1x 1k,1x 没有找到产品。
  • 水箱, 可以是一个桶,也可以是一瓶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)

来源

更多信息 - 耶尔杜伊诺