Litar Pengairan Automatik menggunakan Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan membina sistem pengairan air automatik untuk kebun kecil menggunakan sensor arduino dan kelembapan tanah.

Pengenalan

Sistem yang dicadangkan dapat pantau tahap kelembapan tanah dan apabila kelembapan tanah berada di bawah nilai yang telah ditetapkan, pam DC 12V akan dicetuskan untuk jangka masa yang telah ditentukan. Status tahap kelembapan tanah dan fungsi sistem yang lain dapat dipantau melalui paparan LCD 16 x 2 secara real time.



Dianggarkan terdapat 3 trilion pokok di seluruh dunia yang lebih besar daripada jumlah permulaan di galaksi Bima Sakti rumah kita yang dianggarkan 100 bilion. Tetapi, kita manusia menebang sebilangan besar pokok untuk memenuhi keperluan asas kita hingga keperluan mewah.

Mother Nature dirancang dengan sistem maklum balas, apabila suatu spesies menimbulkan gangguan besar, alam akan menghapuskan spesies tersebut.



Manusia mengganggu alam tanpa disedari selama berabad-abad tetapi, walaupun setelah perkembangan sains dan teknologi yang hebat, kadar gangguan tidak berkurang.

Perubahan iklim adalah salah satu contohnya, apabila spesies kita cukup drastik tidak akan bertahan lama.
Projek ini membawa bayi melangkah maju untuk memelihara alam semula jadi, ia dapat mengairi kebun kecil anda yang indah tanpa interaksi manusia. Sekarang mari masuk ke maklumat teknikal projek.

Sensor Kelembapan Tanah:

Inti projek adalah sensor kelembapan tanah yang dapat merasakan jumlah kandungan kelembapan di dalam tanah. Sensor memberikan nilai analog dan mikrokontroler akan menafsirkan nilai-nilai tersebut dan menunjukkan kandungan kelembapan.

Terdapat dua elektrod, yang akan dimasukkan ke dalam tanah. Elektrod disambungkan ke papan litar yang terdiri daripada IC pembanding, LED, perintang perintang pemotong dan pin output.

Ilustrasi sensor kelembapan tanah:

modul sensor kelembapan tanah

Ia mempunyai 4 + 2 pin, 2 pin untuk sambungan elektrod dan selebihnya dari 4 pin adalah Vcc, GND, output digital dan output analog. Kami hanya akan menggunakan pin output analog untuk merasakan kelembapan tanah.
Oleh kerana kita tidak menggunakan pin output digital, kita tidak akan menggunakan perintang pemangkas on-board untuk mengkalibrasi sensor.

Sekarang, itu menyimpulkan sensor kelembapan tanah.

Gambarajah skematik:

Litar ini dijaga sederhana dan mesra pemula. Skema ini dibahagikan kepada dua bahagian projek yang sama untuk mengurangkan kekeliruan semasa mendua projek.

Gambar rajah pendawaian LCD untuk Sistem Pengairan Automatik

Skema di atas adalah LCD ke arduino pendawaian. Potensiometer 10K disediakan untuk menyesuaikan kontras paparan LCD.

Sistem Pengairan Automatik berasaskan mikrokontroler

Berikut adalah skema selebihnya yang terdiri daripada sensor kelembapan tanah, pam DC 12V, butang tekan kalibrasi dan bekalan kuasa 12V (1 - 2 amp). Gunakan bekalan kuasa sekurang-kurangnya lebih besar daripada 500mA dari pam 12V DC semasa.

MOSFET IRF540N (atau saluran N yang setara) digunakan sebagai ganti BJT untuk meningkatkan kecekapan kuasa keseluruhan sistem.

Pam akan menyiram kebun kecil anda, pastikan anda selalu mencukupi jumlah air.

Kod Program:

//-------------Program Developed By R.Girish-------------//
#include
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

Cara menentukur sistem pengairan automatik ini:

• Dengan perkakasan yang lengkap, masukkan elektrod di tanah, di suatu tempat di jalan aliran air.
• Sekarang ubah dua nilai dalam program 1) Jumlah masa yang diperlukan untuk menyiram semua tanaman (dalam beberapa minit). 2) Tahap ambang bawah di mana arduino mencetuskan pam. Anda hanya boleh menetapkan nilai peratusan 80, 70, 60, 50, 40, 30, 20.

int Masa = 5 // Tetapkan masa dalam beberapa minit
int ambang = 30 // tetapkan ambang dalam peratusan 80, 70, 60, 50, 40, 30, 20 sahaja.

Ubah nilai dalam program.

• Muat naik kod ke arduino dan matikan litar. Ia akan memaparkan 'tuangkan air dan tekan kalibrasi'. Sekarang anda perlu menyiram kebun anda secara manual ke tahap yang mencukupi.
• Setelah menyiram kebun, tekan butang kalibrasi. Ini akan menentukan pengaliran elektrik di tanah dengan kelembapan sepenuhnya dan sekejap nilai rujukan.
• Kini sistem siap melayani kebun kecil anda. Cuba tambahkan sandaran kuasa untuk projek ini. Apabila kuasa gagal, nilai kalibrasi rujukan akan dihapuskan dari memori dan anda perlu menentukurkan sistem semula.

Prototaip pengarang:

Imej Prototaip Pengairan Automatik berasaskan Arduino

Petunjuk tahap kelembapan tanah:

Setelah pam dihidupkan, ia akan memaparkan baki masa untuk dimatikan (dalam beberapa saat).




Sebelumnya: 3 Litar Perlindungan Penggera Laser Pintar Seterusnya: Penguat OCL Dijelaskan