帶有Arduino的自動澆水系統,可用於您的植物,果園或花園

噴壺澆水植物

夏季是許多人傾向於在外面度假的時候,植物是一個問題,因為它們不能 在您不在家的那些日子裡澆水。 此外,花園商店通常會出售一種凝膠,這種凝膠可以使植物水化和滋養大約一個月。 但是由於天氣炎熱,或者如果您離開一個多月,那麼您將需要一個更好的系統,以便當您返回時它們仍然充滿活力。

為此,存在的解決方案是購買一個 自動灌溉系統 您可以編程,或者如果您是製造商並且喜歡DIY,則可以使用Arduino自己完成。 除了Arduino開發板之外,您所需的材料也很容易找到而且非常便宜,因此它們不會涉及太多的費用。 此外,對於某些元素,例如水箱等,您可以使用再生材料...

如果您稍微瀏覽一下網頁,就會發現 這種類型的各種項目,但最有趣的是 耶爾杜伊諾。 因為我認為其他僅使用濕度傳感器且沒有其他東西的灌溉系統並不完備,因此我會受到啟發。

你需要什麼

很多 自動灌溉系統所需的材料 聲音:

  • 找不到產品。,儘管別人會值得的。
  • 麵包板 或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.    艾薩克 他說:

      HOLA,
      此錯誤是由於代碼中的某些語法問題引起的。 我已經經歷了,並且有一個錯誤。 現在應該沒事了。
      您好!

  2.   來源 他說:

    您好,下午好,我也有同樣的問題:
    項目:3:10:錯誤:#include期望使用“ FILENAME”或

    #include ;

    ^

    項目:4:10:錯誤:#include期望使用“ FILENAME”或

    #include ;

    ^

    退出狀態1
    #include期望“ FILENAME”或

  3.   凱文· 他說:

    您好,對不起,您能幫我解決代碼中出現的錯誤嗎

  4.   SAMANTA 他說:

    同樣地,我在代碼中遇到錯誤,請問您能幫我解決這個問題嗎?

    1.    艾薩克 他說:

      HOLA,
      請留下有關您所遇到的錯誤的信息,以便我們提供幫助。 如果我不知道錯誤的內容,那麼我將很難為您提供幫助或定位問題所在...
      問候

  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.    艾薩克 他說:

      HOLA,
      代碼正確嗎? 也就是說,它沒有錯別字?
      另一方面,您可以在此處查看有關該錯誤的更多信息:
      https://forum.arduino.cc/index.php?topic=386225.0
      問候

  8.   何塞·阿雷東多(Jose Arredondo) 他說:

    您好,下午好,對不起,我不知道是否可以與您聯繫,這是因為arduino中的此代碼給了我很多錯誤

    1.    艾薩克 他說:

      大家好,
      我已經清理了代碼並再次編寫了代碼,以查看網絡上顯示的代碼是否由於某種原因出現了錯誤。 為了將其下載,我將新代碼留在了下載鏈接中,就在網絡上出現的代碼之前。 如果單擊此處,則可以文本格式下載。 我希望沒有更多的問題了。
      您好!

  9.   查基 他說:

    如何添加wifi模塊? 並可以通過創建應用程序來控制它嗎?

  10.   查基 他說:

    食物也如何:c?

    1.    路易斯·阿爾貝托·阿爾瓦拉多 他說:

      嗨,Chaqui! 我正在嘗試與您相同,如果您完成了代碼,可以幫助我嗎?

  11.   Nerea 他說:

    問題是,Arduino開發板和DHT11傳感器之間應該是哪個組件?
    Muchas Gracias !!

    1.    艾薩克 他說:

      嗨,Nerea,
      您是說二極管和電阻器? 請注意,在該圖之前的部分中,列出了所有組件...
      您好!

  12.   珍妮特 他說:

    您好,您有一段有關灌溉系統的視頻。

  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.   阿德里安 他說:

    您可以添加更高分辨率的輪廓嗎? 一些連接不清晰可見