رباتیک و هوافضا

پروژه ی ساخت آبیاری اتوماتیک با استفاده از آردوینو

به نام خدا

پروژه ی ساخت آبیاری اتوماتیک با استفاده از آردوینو

 

 

 

در این مقاله طراحی سیستم آبیاری اتوماتیک برای باغچه های کوچک با استفاده از آردوینو و سنسور رطوبت خاک را بررسی خواهیم کرد.
تعداد درختان روی زمین ۳ تریلیارد تخمین زده شده که بیش از تعداد ستارگان کهکشان راه شیری (۱۰۰ میلیارد) می باشند.اما ما انسانها تعداد بی شماری از درختان را برای مصارف تشریفاتی خودمان قطع می کنیم.
مام طبیعت با یک سیستم فیدبک و بازخورد طراحی شده است.وقتی گونه ای اختلال عظیمی در طبیعت ایجاد میکند ، طبیعت آن گونه را از میان بر می دارد.
آدمیان نادانسته در طول قرنهاست که در طبیعت اختلال ایجاد می کنند ، علی رغم پیشرفت و توسعه علوم و تکنولوژی میزان اختلال کاهش نیافته است.

سنسور رطوبت خاک:


این سنسور قلب تپنده این پروژه است که میتواند میزان رطوبت خاک و محتوای موجود در آن را تعیین کند. سنسور خروجی را بصورت مقداری آنالوگ تحویل می دهد و میکروکنترلری مقدار را تفسیر و آن را نمایش خواهد داد.
دو الکترود داریم که درون خاک قرار داده خواهند شد. الکترود ها به برد مداری شامل ای سی مقایسه گر، LED و مقاومت متغیر پین های ورودی و خروجی متصل هستند.

بیشتر بخوانید...  پروژه کنترل موقعیت سروو موتور با آردوینو و سنسور نیرو به همراه کد

شماتیک مدار پروژه ی ساخت آبیاری اتوماتیک با استفاده از آردوینو :

در تصویر زیر تمامیه اتصالات لازم برای پروژه ی ساخت آبیاری اتوماتیک با استفاده از آردوینو به همراه شماتیک مدار مشاهده می کنید. در ادامه کد برنامه را نیز در فایلی برای شما آماده کرده ایم. آن کد را بر روی آردوینو بریزید و پروژه را اجرا کنید.

 

در تصویر بالا از یک پتانسیو متر برای تنظیم میزان کنتراست ال سی دی استفاده شده است.

 

 

دانلود کد پروژه ی ساخت آبیاری اتوماتیک با استفاده از آردوینو به همراه شماتیک مدار :

دانلود فایل
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Time = 5;         // Set time in minutes
int threshold = 30;   // set threshold in percentage 80, 70, 60, 50, 40, 30, 20 only.
int i;
int x;
int y;
int z;
int start;
int calibrateValue;
const int calibrateBTN = A1 ;
const int input = A0;
const int motor = 7;
boolean calibration = false;
boolean rescue = false;
void setup()
{
Serial.begin(9600);
pinMode(input, INPUT);
pinMode(calibrateBTN, INPUT);
pinMode(motor, OUTPUT);
digitalWrite(calibrateBTN, HIGH);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Pour water and");
lcd.setCursor(0,1);
lcd.print("press calibrate");
while(!calibration)
{
if(digitalRead(calibrateBTN)==LOW)
{
calibrateValue = analogRead(input);
x = 1023 - calibrateValue;
x = x/10;
Serial.print("Difference = ");
Serial.println(x);
Serial.print("Calibration Value = ");
Serial.println(calibrateValue);
delay(500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Calibration done");
lcd.setCursor(0,1);
lcd.print("successfully !!!");
calibration = true;
delay(2000);
}
}
}
void loop()
{
if(analogRead(input)<= calibrateValue)
{
delay(500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 100%");
}
if(analogRead(input) > calibrateValue && analogRead(input) <= calibrateValue+x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 90 to 99%");
}
if(analogRead(input) > calibrateValue+x && analogRead(input) <= calibrateValue+2*x )
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 80 to 90%");
start = 80;
}
if(analogRead(input) > calibrateValue+2*x && analogRead(input) <= calibrateValue+3*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 70 to 80%");
start = 70;
}
if(analogRead(input) > calibrateValue+3*x && analogRead(input) <= calibrateValue+4*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 60 to 70%");
start = 60;
}
if(analogRead(input) > calibrateValue+4*x && analogRead(input) <= calibrateValue+5*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 50 to 60%");
start = 50;
}
if(analogRead(input) > calibrateValue+5*x && analogRead(input) <= calibrateValue+6*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 40 to 50%");
start = 40;
}
if(analogRead(input) > calibrateValue+6*x && analogRead(input) <= calibrateValue+7*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 30 to 40%");
start = 30;
}
if(analogRead(input) > calibrateValue+7*x && analogRead(input) <= calibrateValue+8*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 20 to 30%");
start = 20;
}
if(analogRead(input) > calibrateValue+8*x && analogRead(input) <= calibrateValue+9*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: 10 to 20%");
start = 10;
}
if(analogRead(input) > calibrateValue+9*x && analogRead(input) <= calibrateValue+10*x)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Soil Moisture");
lcd.setCursor(0,1);
lcd.print("Level: < 10%");
rescue = true;
}
if(start == threshold || rescue)
{
y = Time;
digitalWrite(motor, HIGH);
Time = Time*60;
z = Time;
for(i=0; i<Time; i++)
{
z = z - 1;
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PUMP IS ON, WILL");
lcd.setCursor(0,1);
lcd.print("TURN OFF IN:");
lcd.print(z);
}
Time = y;
rescue = false;
digitalWrite(motor, LOW);
}
delay(1000);
}

 

بیشتر بخوانید...  ساعت زنگدار و دماسنج به همراه کنترل از راه دور با آردوینو

دیدگاه‌ها (0)

*
*