あなたの植物、果樹園または庭のためのArduinoによる自動給水システム

じょうろ植物に水をまく

夏は、多くの人が屋外で休暇を過ごす傾向がありますが、植物は問題があります。 家にいないときは水をやる。 さらに、園芸店は通常、植物に水分を補給して栄養を与える一種のジェルを約XNUMXか月間販売しています。 しかし、それが暑いので、またはあなたが一ヶ月以上離れるならば、あなたはあなたが戻ったときに彼らがまだ生きていて元気であるようにいくらかより良いシステムを必要とするでしょう。

それを可能にするために存在する解決策は、 自動灌漑システム プログラミングができること、またはメーカーで DIY が好きな場合は、Arduino を使って自分で行うこともできます。 Arduino ボード以外に必要な材料は簡単に見つかり、非常に安価なので、それほど大きな出費はありません。 また、水タンクなどの一部の要素には、リサイクルされた材料を使用することもできます。

ちょっとネットを調べてみると出てきますよ このタイプのさまざまなプロジェクト、しかしおそらく最も興味深いのは ジャルドゥイーノ。 私は、湿度センサーのみを使用し、他には何も使用しない他の灌漑システムはそれほど完全ではないと考えているので、このプロジェクトのインスピレーションはそこにあります。

何が必要ですか

たくさん 自動灌漑システムに必要な材料 音:

  • 製品が見つかりません。、他の人は価値があるでしょうが。
  • プロトボード またはPCB あなたがそれをはんだ付けして永久にしたいなら。
  • 温度および湿度センサー 製品が見つかりません。
  • ケーブル
  • センサー YL-69 水分 湿度計を使って地面に置き、ポットや土に貼り付けます。
  • ミニポンプ 3V水中水 およそ120l / hの流量。
  • ダイオード 1N4007
  • バイポーラトランジスタ PN2222
  • 3つの抵抗器:1x 220オーム、1x 1k、1x フォトレジストLDR
  • 水槽、 ドラム缶や5リットル以上のボトルなどがあります。
  • TUBO ミニポンプに接続してプラントに持ち込む

コモ 代替案、sonoff または WiFi モジュールを使用して、どこにいてもインターネット経由でアクティベートすることもできるし、蛇口に自動バルブを追加して水タンクが空になったときに水の充填をプログラムするなどの改善もできることをお伝えします。

自動灌漑システムの設定方法

フリッツィングのアセンブリの概略図

組み立てはとても簡単です。 してもいいです 上記の回路図を使用して、すべての接続を行います。 窓の近く、または水をやりたい植物がある場所にシステムを置き、湿度センサーの XNUMX つの先端を植物の茎の近くの土壌に差し込みます。

Arduinoを備えた自動給水システムは、 一連の環境条件。 たとえば、微光または暗闇を検出した場合、気温は Arduino IDE スケッチで設定する特定の温度になり、地面の湿度は低くなります。 その瞬間、モーターが作動して植物に水をまきます。

猛暑の日に水やりをすると、利益よりも害を及ぼす可能性があるため、暑さがそれほどでもない夜間に水やりをすることをお勧めします。

あなたがしなければならないことを忘れないでください 水中でミニポンプを導入 あなたが灌漑に運命づけられたタンクの中で、そしてそれはあなたがそこにいない日を保持するのに十分な容量を持っているべきです。 あなたはそれがどれくらい続くかを知るために以前のテストをすることができます、そしてあなたはそれが激しい熱で蒸発する場合に備えてもう少し水を残すべきです...

言うまでもなく、チューブが風で動かないように、または水が落ちて無駄にならないように、チューブを植物に固定する必要があります。 そして、Arduino ボードが機能するためには、Arduino ボードへの電流供給を維持する必要があることを覚えておく必要はないと思います...

プログラミング

今はあなたが書くべき時です ArduinoIDEで必要なコード 使用したハードウェアを管理するマイクロコントローラーをプログラムできるようにします。 それはあなたがどこにいるかによって変わる可能性があるので、これはあなたの地域の水に適切な温度、湿度、光の値を適応させる時です。 しかし、ベースとして使用できる例は次のとおりです(値を変更できるコメントを残しましたが、残りはこのように残すことができます):

からコードをダウンロードします code-irrigation-autoあなたの庭のための水まき-自動車

#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. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ロジャーフェルナンドアストボニファシオ

    終了ステータス1を終了する理由
    #includeは「FILENAME」またはESOONLOADを期待します

    1.    アイザック

      こんにちは、
      このエラーは、コードの構文上の問題が原因です。 私はそれを通り抜けて、エラーがありました。 今では問題ないはずです。
      挨拶!

  2.   noeソース

    こんにちは、こんにちは、私も同じ問題を抱えています:
    プロジェクト:3:10:エラー:#includeは「FILENAME」または

    #include

    ^

    プロジェクト:4:10:エラー:#includeは「FILENAME」または

    #include

    ^

    終了ステータス1
    #includeは「FILENAME」または

  3.   ケヴィン

    こんにちは、すみません、コードで発生するエラーを手伝ってくれませんか

  4.   samanta

    コードにエラーが表示されるのと同じように、その問題を解決するのを手伝ってもらえますか?

    1.    アイザック

      こんにちは、
      私が助けることができるようにあなたが持っているエラーについての情報を残してください。 エラーの内容がわからない場合、私があなたを助けたり、問題がどこにあるのかを見つけるのは難しいです...
      拝啓

  5.   サマンサベガが大好き

    こんにちは、このエラーが表示されます。どうすれば解決できますか?

    エラー:SimpleDHT.h:そのようなファイルまたはディレクトリはありません

    #include

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

    コンパイルが終了しました。

    終了ステータス1
    SimpleDHT.h:そのようなファイルやディレクトリはありません

    1.    アイザック

      こんにちはサマンサ、
      このエラーは、ArduinoIDEがSimpleDHT.hライブラリを検出していないように見えるためです。 正しくインストールされていますか? お持ちの場合は、古いバージョンのArduinoIDEを使用してみてください...
      あなたはここでより多くの情報を見ることができます:
      https://www.arduino.cc/en/Guide/Libraries
      そして、ここからライブラリを入手してください。
      https://github.com/adafruit/DHT-sensor-library
      挨拶!

  6.   ペペ

    非常に興味深く、非常に有効な投稿に最初に感謝しますが、私はこれを読みました:

    「暑くない夜に植物に水をやることをお勧めします。激しい暑い日にそうすることは、利益以上に害を及ぼす可能性があるからです...」

    これは何度も聞いたことがありますが、それがどのように彼らを傷つけるのかを誰かにはっきりと説明してもらいたいのですが… 私は20年以上植物を育ててきましたが、非常に暑いときは、水をやり、スプリンクラーで葉を濡らすことができることほど感謝することはありません。

    これは植物を苦しめることだけだという神話です...あなたが暑くて喉が渇いたとき、あなたは夜まで飲むのを待ちますか?...

    投稿ありがとうございます!!!

    1.    アイザック

      こんにちはペペ、
      ご意見ありがとうございます。 私は田舎に住んでいて、時々、暑さが非常に強いとき、暑い時間に植物に水をやることはそれらを殺すことができます。 私はそれを自分でチェックしました(また、あなたがいる地理的地域によっては同じではありません、私の土地ではとても暑いです)。 これにはいくつかの理由が考えられます。
      1-葉の水滴はガラスのように機能するため、虫眼鏡のように日光でそれらを燃やします。
      2-植物には、晴れたときに脱水しないように閉じる気孔があります。 あなたがそれらに水をやると、それらは開き、それらを脱水状態にする可能性があります。
      3-それらがプラスチック製の鉢に入っている場合、効果はさらに悪化する可能性があります。
      挨拶!

  7.   アンドレスカロ

    こんにちは!
    私は手の込んだプロジェクトが本当に好きでした。私は自分の庭を持っていて、このプロジェクトを個人的な経験としてテストしていますが、利益を得ることができませんでした。エラーが発生したので、コードを手伝ってくれるかどうか尋ねたいと思いました。私はDHTライブラリを持っていますが、それを確認すると、コードの最後にエラーがスローされます:{Serial.println( "Wateringstopped");}そしてそれがプログラム内の漂遊 '\ 342'であると教えてくれます。
    私はその問題についてほとんど知識がなく、調査したが解決できなかった。
    助けていただければ幸いです。 ありがとう😀

    1.    アイザック

      こんにちは、
      コードは正しいですか? つまり、タイプミスはありませんか?
      一方、ここでそのエラーの詳細を確認できます。
      https://forum.arduino.cc/index.php?topic=386225.0
      拝啓

  8.   ホセArredondo

    こんにちはこんにちは、申し訳ありませんが、あなたに連絡する方法があるかどうかわかりません、それは私にarduinoのこのコードで多くのエラーを与えているということです

    1.    アイザック

      みなさん、こんにちは、
      Webに表示されるコードに何らかの理由でエラーがないかどうかを確認するために、コードをクリーンアップして再度記述しました。 ダウンロードできるように、Webに表示されるコードの直前のダウンロードリンクに新しいコードを残しました。 そこをクリックすると、テキスト形式でダウンロードできます。 これ以上問題がないことを願っています。
      挨拶!

  9.   チャキ

    Wi-Fiモジュールを追加するにはどうすればよいですか? そして、アプリケーションを作成することによってそれを制御することは可能でしょうか?

  10.   チャキ

    食べ物もどうですか:c?

    1.    ルイスアルベルトアルバラド

      こんにちはチャスキ! 私はあなたと同じことをしようとしています、あなたがあなたのコードを終えたら私を助けてくれませんか????

  11.   Nerea

    ArduinoボードとDHT11センサーの間のコンポーネントはどれですか?
    ありがとうございました!

    1.    アイザック

      こんにちはネレア、
      あなたはダイオードと抵抗器を意味しますか? 図の前のセクションに、すべてのコンポーネントのリストがあることに注意してください...
      挨拶!

  12.   ジャネット

    こんにちは、あなたはあなたの灌漑システムがどうだったかのビデオを持っています。

  13.   アレハンドラ・バロス

    すみません、 arduino uno またはarduinoメガ用

  14.   エマニュエル

    こんにちはおはようございます、申し訳ありませんが、Arduino ideモニターを開くと、dht11センサーの読み取りに失敗するのはなぜですか?
    プログラム全体が適切にコンパイルされ、適切にロードされました。詳細は、モニターを開くと、その凡例が表示されます。
    それは何でしょうか?

  15.   ダニエル・アルフレド・リヴァス・メディナ

    HELLO FRIEND素晴らしい仕事ですが、この部分でエラーが発生しますそのようなファイルやディレクトリはありません

    #include
    それは何でしょうか? よろしくお願いします

  16.   イザベル

    こんにちは、これは公開されていますが、重要ではありません。このプロジェクトの開発に参加した人や人々に本当に感謝したいと思います。多くの人にとってはばかげているかもしれませんが、あなたは私の命を救ってくれました。ありがとうございました。私が所属したくない学校と私が学んだことを申し訳ありませんが真実、あなたのページをありがとう、私はあなたに最高を願っています。

  17.   アイェレン

    Wi-Fiモジュールを追加するにはどうすればよいですか? そして、アプリケーションを作成することによってそれを制御することは可能でしょうか?

  18.   ブライアン

    #include "DHT.h"
    DHT dht(2、DHT11);
    int valueLDR;
    int pinLDR = A5;
    int モーター = 8;
    // ————————————————————————————————————————————————
    ボイドセットアップ()
    {
    Serial.begin(9600);
    valueLDR = 0;
    Serial.begin(9600);
    Serial.println( "灌漑システムテスト");
    dht.begin();
    pinMode(MOTOR、OUTPUT);
    Serial.println( "湿度センサー値");
    }
    // ————————————————————————————————————————————————
    void loop()
    {
    Serial.println(«============================================ = ==========================»);
    int湿度= analogRead(A0);
    Serial.print( "読み取り:");
    Serial.println(湿度);
    if(湿度> = 0&湿度> = 1000){
    Serial.println( "乾燥土壌のセンサー");
    } else if(湿度> 500&湿度<= 1000){
    Serial.println( "湿った土壌のセンサー");
    } else if(湿度<= 500){
    Serial.println( "水中のセンサー");
    }
    valueLDR = AnalogRead(pinLDR);
    Serial.print( "LIGHT(");
    Serial.print(valueLDR);
    Serial.println( ")");
    delay(2000);
    float h = dht.readHumidity();
    float 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( "水をかけるべきではない");
    }
    delay(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;
    int モーター = 8;
    // ————————————————————————————————————————————————
    ボイドセットアップ()
    {
    Serial.begin(9600);
    valueLDR = 0;
    Serial.begin(9600);
    Serial.println( "灌漑システムテスト");
    dht.begin();
    pinMode(MOTOR、OUTPUT);
    Serial.println( "湿度センサー値");
    }
    // ————————————————————————————————————————————————
    void loop()
    {
    Serial.println(«============================================ = ==========================»);
    // ——————————————————————————————
    // ———–水分、土壌センサー—————————————————–
    int湿度= analogRead(A0);
    Serial.print( "読み取り:");
    Serial.println(湿度);
    if(湿度> = 0&湿度> = 1000){
    Serial.println( "乾燥土壌のセンサー");
    } else if(湿度> 500&湿度<= 1000){
    Serial.println( "湿った土壌のセンサー");
    } else if(湿度<= 500){
    Serial.println( "水中のセンサー");
    }
    // ——————————————————————————————
    // —————フォトレジスター———————————————————-
    valueLDR = AnalogRead(pinLDR);
    Serial.print( "LIGHT(");
    Serial.print(valueLDR);
    Serial.println( ")");
    delay(2000);
    // ——————————————————————————————
    // —————センサーDTH11の空気中の温度と湿度—————————–
    float h = dht.readHumidity();
    float 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");
    // ——————————————————————————————
    // ————水に条件を付けるか、水に条件を付けないか———————————————-
    //(AirHumidity)(Photoresist)(Temperature)(EarthHumidity)
    if(h <= 50 && LDRvalue <70 && t = 1000){
    digitalWrite(MOTOR、HIGH);
    Serial.println( "水が必要");
    }
    他{
    digitalWrite(MOTOR、LOW);
    Serial.println( "水をかけるべきではない");
    }
    delay(1000);
    }

    //ピンがポンプがpwmピンであることを確認するとすぐに
    // LDRフォトレジストのそれはアナログであり、土壌水分のそれもピンに等しい
    //アナログと気温と湿度センサーのdth11のものは何でも
    //デジタルピンは引き続きこのページの元のコードに基づくことができます
    //ピンを接続します
    // 5vで動作します

  22.   エリック

    コードのこの部分でエラーが発生します»空のループ(){»

  23.   アンドレP.

    こんにちは、コードを貼り付けると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.   エイドリアン

    より高解像度のアウトラインを追加できますか? 一部の接続がはっきりと見えない